Hi Jesse,
BaseX only supports GML 2, and AFAIK gml:pos was not introduced until GML 3. You need to use gml:coordinate instead (which uses a comma instead of a space as a delimiter). This works for me:
import module namespace geo = "http://expath.org/ns/geo"; declare namespace gml='http://www.opengis.net/gml';
let $vancouver := <gml:Point srsDimension="2" srsName=" http://www.opengis.net/def/crs/EPSG/0/4326%22%3E gml:coordinates49.40,-123.26</gml:coordinates> </gml:Point>
let $seattle := <gml:Point srsDimension="2" srsName=" http://www.opengis.net/def/crs/EPSG/0/4326%22%3E gml:coordinates47.68,-122.37</gml:coordinates> </gml:Point>
return geo:distance($vancouver, $seattle)
Also, I would think you would want to format the coordinates as longitude, latitude, however the result is the same (1.9366207682455534) either way. I don't think your SRS information is being handled properly, but sorry I don't really know anything about that.
Zach
On Wed, Mar 26, 2014 at 5:49 PM, Jesse Clark jesse@corengi.com wrote:
Hi All,
I am writing a feature that will rely on geo:distance to give me the distance between two points of latitude and longitude.
I am a total n00b to GIS and GML so I may have messed this up, but based on a bit of research to figure out how to define the coordinate system and based on the example query from the BaseX docshttp://docs.basex.org/wiki/Geo_Module#geo:distance I came up with the following query as a test:
import module namespace geo = "http://expath.org/ns/geo"; declare namespace gml='http://www.opengis.net/gml';
let $vancouver := <gml:Point srsDimension="2" srsName=" http://www.opengis.net/def/crs/EPSG/0/4326%22%3E gml:pos49.40 -123.26</gml:pos> </gml:Point>
let $seattle := <gml:Point srsDimension="2" srsName=" http://www.opengis.net/def/crs/EPSG/0/4326%22%3E gml:pos47.68 -122.37</gml:pos> </gml:Point>
return geo:distance($vancouver, $seattle)
I have this in a file and am trying to execute it from the CLI with: 'RUN [/path/to/file]'
It pukes with this error:
Stopped at [/path/to/file], 12/21: [GEO:GEO0002] java.lang.NullPointerException
I am running off of the zip distribution of BaseX so I believe the geo module should be included.
Any guidance would be greatly appreciated.
Best, -Jesse
BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk