[gdal-dev] Store also native geometry into Elastic Search?

Adam Estrada estrada.adam at gmail.com
Thu Sep 3 06:04:13 PDT 2015


Even,

This would have been around version 0.16.x. Not really sure which one
exactly but I don't think any changes to the geometry support happened
until 2012-2013?

VERY cool about all the modifications you guys have made! This is very exciting!

http://gdal.org/drv_elasticsearch.html

Adam

On Thu, Sep 3, 2015 at 8:52 AM, Even Rouault <even.rouault at spatialys.com> wrote:
> Le jeudi 03 septembre 2015 14:47:16, Adam Estrada a écrit :
>> Even,
>>
>> I think the reason to store everything by default was just to be on
>> the safe side and it satisfied some of the project requirements at the
>> time. That was back in 2011 so ElasticSearch and this driver are
>> probably not in sync any longer.
>
> OK, do you remember which ES version was targetted at that time ? So I can
> potentially be able to find in the doc the behaviour and see if it has changed.
>
>> There is a lot of work that can be
>> done to the driver to get up to date with all the cool stuff that is
>> now available in ES. I'd be interested in starting a roadmap
>> specifically for the ES driver starting with a read capability and the
>> ability to store other geometry types.
>
> Actually, you should have a look at the recent additions at
> http://gdal.org/drv_elasticsearch.html ;-)
>
>>
>> Adam
>>
>> On Thu, Sep 3, 2015 at 7:42 AM, Even Rouault <even.rouault at spatialys.com>
> wrote:
>> > Le jeudi 03 septembre 2015 12:49:30, Jukka Rahkonen a écrit :
>> >> Hi,
>> >>
>> >> What if somebody would like to put and deliver some official spatial
>> >> data (cadastral data) which are not in EPSG:4326 with Elastic Search?
>> >> Could it be possible to translate the geometries into EPSG:4326 and
>> >> store and index them as geo_shape, but also keep the native geometries
>> >> and save them into another field? Perhaps json does not like to have
>> >> many geometry fields but how about saving the native geometry as WKT?
>> >> Indexing WKT field feels stupid but maybe ES could be mapped to skip
>> >> it. Reasoning is that conversion from native to EPSG:4326 and back to
>> >> native is not necessary accurate and coordinates may change a bit.
>> >
>> > Jukka (and little question for you Adam if you read this),
>> >
>> > Well, you can do that with a Spatialite SQL query like :
>> >
>> > -sql "select *, ST_AsText(geometry) as WKT_32631 from simple_EPSG_32631"
>> > -dialect sqlite
>> >
>> > As far as not indexing the WKT_32631 field, you would need to:
>> > 1) export the default mapping with -lco WRITE_MAPPING=mapping.json
>> > 2) add "index":"no" to the WKT_32631 definition
>> > (https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping
>> > -core-types.html) 3) run again with -lco MAPPING=mapping.json
>> >
>> > Doing all the above steps in a fully automated way, perhaps with a
>> > dedicated PRESERVE_SRC_GEOMETRY layer creation option, would certainly
>> > be possible, but personnaly, it's more in the
>> > something-to-perhaps-consider-someday queue ;-)
>> >
>> > Perhaps we would need a few creation options to alter more easily the
>> > mapping of the created fields (rather than the above
>> > export/modify/import workflow). Not sure at this point which ones would
>> > make sense, and if we aren't careful, there's a risk we end up with
>> > something complicated that would be redundant with the JSon API. I also
>> > see that the existing write-only driver creates a mapping that
>> > explicitely stores fields, and as we don't disable storing the _source
>> > field, so apparently this wouldn't be necessary. Hum, might be wise to
>> > remove the explicit "store": "yes"
>> >
>> > @adam : do you remind the reason for adding "store": "yes" in the
>> > generated ES mapping ?
>> >
>> >> Am I even right that the conversion into EPSG:4326 is necessary for
>> >> using the geo_shape query?
>> >
>> > That's my understanding of
>> > https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-
>> > geo-shape-type.html "In GeoJSON, and therefore Elasticsearch, the correct
>> > coordinate order is longitude, latitude (X, Y) within coordinate arrays"
>> >
>> > Actually I've just tried to manually insert with invalidate lon,lat and
>> > the behaviour is hard to decypher:
>> >
>> > e.g
>> >
>> > curl -d '{  "geometry": { "type": "linestring", "coordinates": [ [ 800.0,
>> > 0.0 ], [ 3.0, 50.0 ] ] } }'
>> > "http://localhost:9200/test/FeatureCollection?pretty"
>> >
>> > works,
>> >
>> > but
>> >
>> > curl -d '{  "geometry": { "type": "linestring", "coordinates": [ [
>> > 1000.0, 0.0 ], [ 3.0, 50.0 ] ] } }'
>> > "http://localhost:9200/test/FeatureCollection?pretty"
>> >
>> > throws an error:
>> > "MapperParsingException[failed to parse [geometry]]; nested:
>> > IllegalArgumentException[This method does not support GeometryCollection
>> > arguments]; "
>> >
>> > And I assume that any spherical geospatial search will behave in
>> > undefined ways if you insert coordinates that are not (lon,lat)
>> >
>> > Even
>> >
>> > --
>> > Spatialys - Geospatial professional services
>> > http://www.spatialys.com
>
> --
> Spatialys - Geospatial professional services
> http://www.spatialys.com


More information about the gdal-dev mailing list