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">
                    <gml:coordinates>49.40,-123.26</gml:coordinates>
                  </gml:Point>

let $seattle := <gml:Point srsDimension="2" srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
                  <gml:coordinates>47.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 docs 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">
                    <gml:pos>49.40 -123.26</gml:pos>
                  </gml:Point>

let $seattle := <gml:Point srsDimension="2" srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
                  <gml:pos>47.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