Replies: 1 comment
-
take a look at the The syndication feed framework |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Atom Feed
The atom feed itself is technically the successor of RSS feed and was introduced in 2005. RSS and atom are pretty similar to each other, whilst atom is capable of e.g. providing embedded HTML, which can produce nicer rendering on client side. RSS is only capable of plain text, without any formatting or further embedded HTML content.
Basically an atom feed may look like this
Atom Feed and INSPIRE
Since 2012 INSPIRE expects services to be downloadable using something different, than a desktop gis client (like QGSI). Somehow, the solution ended up being a simple web client, which receives an atom feed url, and extracts information based on the given feed.
The user is then able to download the data, which is provided by the underlying service of the atom feed.
Implementations
There are numerous implementations of this technique out there. Just a few examples
Since we are working on a mapbender like successor, we may follow the current Geoportal RLP approach. We may use other techniques and implement further enhancements
GDI-DE technical guidance
The GDI-DE has published a document regarding the implementation of atom feed client. It may be useful to read beforehand.
Atom Feed GDI examples
Requirements
atom
/atom-feed
routeq
(query)+
for the minimal catalogue/atom-feed?q=test+keyword+search
/atom-feed/<id>
AtomFeedDownload
, holding the following attributesAtom Feed Generator
AtomFeedGenerator
has to be created, which may be placed in the project folder/service/helper/atom
atom_feed_url
must be setatom_feed_url
shall follow the structure/service/metadata/<id>/atom-feed
atom_feed_url
must generate the corresponding atom feed documentLanding page of client (minimal catalogue)
/api/suggestion
, which returns a list of possible related keywords, ordered by relevance. Further information on how to use this api route can be found here/api/catalogue
will be performed, which delivers catalogue results, based on the given input. Further information on how to use this api route can be found hereDownload
opens the/atom-feed/<id>
route with the appropriate id of the search result set --> access to the download clientFeed
opens the/service/metadata/<id>/atom-feed
route with the appropriate id set --> access to the feed document/atom-feed?q=INPUT
, which performs the internal API call and renders the result listBehol! My magnificent layout idea:
Atom Feed Download Client
Let me explain the technical behaviour of this download interface:
How do we get data from web services? (simplified)
Basically, we use two important operations on WMS and WFS:
wms-url?service=WMS&version=1.1.1&layers=layer1,layer2,...&bbox=90.0,100.0,-90,0,-100.0&srs=EPSG:4326&format=image/png&width=100&height=100
wfs-url?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.1.0&TYPENAME=feature_name&BBOX=5539710.91589949745684862,2528178.23551842849701643,5602187.72767475247383118,2633820.21731885056942701,urn:ogc:def:crs:EPSG::31466
typename
and the selected bbox to achieve our goalBack to requirements
guest
should be visible.Download
button, which starts the appropriate WMS/WFS request(s)/atom-feed/<id>/download
. How multiple polygons are transferred doesn't matter, as long as they can be retrieved correctly on the backend!AtomFeedDownload
has to be created and persisted, where the generated uuid is set aszip_uuid
and all other information accordingly/atom-feed/<id>/download/<zip_uuid>
, where <zip_uuid> refers to the generated UUID4 of the zipped file/atom-feed/<id>/download/<zip_uuid>
url even after closing the windowAtomFeedDownload
record. If it exists, the corresponding zip file on the file system will be returned using a specific file response of django which supports streaming of larger files.AtomFeedDownload
has been created. This periodicTask must delete the zipped file on the file system and the related database entry and remove itself afterwards, to keep things clean.Behold! Another fabulous layout:
Beta Was this translation helpful? Give feedback.
All reactions