diff --git a/feed.xml b/feed.xml index 179ee4b..1264108 100644 --- a/feed.xml +++ b/feed.xml @@ -11,6 +11,7 @@ xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:georss="http://www.georss.org/georss" + xmlns:gml="http://www.opengis.net/gml" xmlns:icbm="http://postneo.com/icbm" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" @@ -20,6 +21,7 @@ xsi:schemaLocation=" http://postneo.com/icbm xsd/icbm.xsd http://www.georss.org/georss https://schemas.opengis.net/georss/1.0/schema-1.1/georss.xsd + http://www.opengis.net/gml https://schemas.opengis.net/georss/1.0/schema-1.1/gmlgeorss.xsd " > @@ -1543,6 +1545,137 @@ because astronomers need coffee to go through the night --> has-nothing-to-do-with + + Become a geospatial nerd with GeoRSS GML + Sun, 15 Oct 2023 17:40:14 +0200 + georss-gml + Tip + Geospatial/GeoRSS + https://docs.ogc.org/cs/17-002r1/17-002r1.html#31 + In this fourth post explaining GeoRSS, I'll be talking about GeoRSS GML, the second "serialization" of the format. GeoRSS Simple is meant to be easily translated into GeoRSS GML so that your typical RSS feed developer can more easily understand GeoRSS, and geospatial experts can use a format they are more acquainted with: GML.

+

GML is an enormous XML schema designed to express any geospatial data under the sun. Geometries, features, coordinate reference systems, units of measurement, time, sensor measurements, data re-fetched automatically over the network, assigning coordinates to images, etc.

+

The language is not meant to be used alone, as supporting all of it is equivalent to implementing nearly every bit of geospatial software out there. Instead, GML profiles are defined, which are subsets of GML that are relevant to your needs, and are then used in application schemas, which define the specific XML format you are using that will contain some of that GML profile in it.

+

GeoRSS is an application schema using a dedicated GML profile that severely restricts GML so that we don't become too insane. You are limited to four geometries, one less that the five we saw in GeoRSS Simple: points, lines, boxes, and polygons. You do have access to some extra options though, and we'll look into that soon enough.

+ +

Examples

+

Here is an example I wrote previously for a single point in GeoRSS Simple, but rewritten for GeoRSS GML:

+
+
+<rss
+  version="2.0"
+  xmlns:georss="http://www.georss.org/georss"
+  xmlns:gml="http://www.opengis.net/gml"
+>
+  <channel>
+    <item>
+      <!-- ... -->
+      <georss:where>
+        <gml:Point>
+          <gml:pos>-33.8735580 151.2344385</gml:pos>
+        </gml:Point>
+      </georss:where>
+      <georss:featureName>Boat Syndication Australia</georss:featureName>
+      <georss:featureTypeTag>shop</georss:featureTypeTag>
+      <georss:relationshipTag>has-nothing-to-do-with</georss:relationshipTag>
+      <georss:elev>5.25</georss:elev>
+      <georss:floor>0</georss:floor>
+      <georss:radius>4.5</georss:radius>
+    </item>
+  </channel>
+</rss>
+
+
Example of a point added to an RSS channel using GeoRSS GML
+
+

The only two differences are that there is now a new gml namespace, and that the georss:point element has been replaced with a georss:where element to hold the point defined with GML. And now for the examples of other geometry types, which you would now place inside of the georss:where:

+
+
+<!-- Part of Haaldersbroekerdwarsstraat, a long street name in the Netherlands -->
+<gml:LineString>
+  <gml:posList>52.4718867,4.8277792 52.4721926,4.8275892 52.4729501,4.8270419</gml:posList>
+</gml:LineString>
+
+<!-- Some random grass not so far away from there -->
+<gml:Envelope>
+  <gml:lowerCorner>52.5662344 4.7976189</gml:lowerCorner>
+  <gml:upperCorner>52.5676983 4.8013674</gml:upperCorner>
+</gml:Envelope>
+
+<!-- A building called ESPRESSO at the Very Large Telescope,
+because astronomers need coffee to go through the night -->
+<gml:Polygon>
+  <gml:exterior>
+    <gml:LinearRing>
+      <gml:posList>
+        -24.6273416 -70.4045081
+        -24.6273922 -70.4044894
+        -24.6274264 -70.4046014
+        -24.6274789 -70.4045820
+        -24.6276119 -70.4045330
+        -24.6275341 -70.4042780
+        -24.6274634 -70.4043041
+        -24.6274763 -70.4043463
+        -24.6273109 -70.4044074
+        -24.6273416 -70.4045081
+      </gml:posList>
+    </gml:LinearRing>
+  </gml:exterior>
+</gml:Polygon>
+
+
Examples of other geometry types with GeoRSS GML
+
+ +

Reference

+
+
<georss:where>
+
The wrapper for GML within an RSS feed. While nothing really stops you from using GML directly without GeoRSS within an RSS item, most feedreaders and other parsers will only support GML wrapped into this element. This should not be used at the same time as the GeoRSS Simple geometry elements like <georss:point>.
+
<gml:pos>
+
A single coordinate pair, as two decimal numbers. The first is the latitude between –90 and 90°, and the second the longitude between –180 and 180°, as WGS84.
+
<gml:posList>
+
A list of 2 or more decimal numbers representing a series of coordinate pairs. There should always be an even number of coordinates.
+
<gml:Point>
+
A single point, containing a <gml:pos> element to indicate its coordinates.
+
<gml:LineString>
+
A series of points linked together by straight lines. This should contain a <gml:posList> to list the coordinates of each point.
+
<gml:Envelope>
+
A rectangle. This must contain a <gml:lowerCorner> and a <gml:upperCorner> to specify its two corners.
+
<gml:lowerCorner>
+
The lower-left, or southwest, corner of a <gml:Envelope>. Its value is the same as a <gml:pos>.
+
<gml:upperCorner>
+
The upper-right, or northeast, corner of a <gml:Envelope>. Its value is the same as a <gml:pos>.
+
<gml:Polygon>
+
In the GIS world, a polygon is composed of multiple rings; at least one exterior ring, and zero or more interior rings that create holes within the exterior ring. This element therefore must have a <gml:exterior> ring. GeoRSS GML forbids any interior rings, since the GeoRSS Simple <georss:polygon> does not support interior rings, so the exterior ring is always alone.
+
<gml:exterior>
+
The exterior ring of a polygon. This should contain a <gml:LinearRing>.
+
<gml:LinearRing>
+
A <gml:LineString>, but there has to be at least four points, and the first and last coordinates must be equal, so that the line string forms a ring.
+
+ ]]>
+ + + + + + -24.6273416 -70.4045081 + -24.6273922 -70.4044894 + -24.6274264 -70.4046014 + -24.6274789 -70.4045820 + -24.6276119 -70.4045330 + -24.6275341 -70.4042780 + -24.6274634 -70.4043041 + -24.6274763 -70.4043463 + -24.6273109 -70.4044074 + -24.6273416 -70.4045081 + + + + + + ESPRESSO + building + author-likes-the-name + 2635 +