GenericMappingTools / gmt

The Generic Mapping Tools
https://www.generic-mapping-tools.org
Other
843 stars 352 forks source link

Support plotting OGR GeoJSON files #4599

Closed weiji14 closed 6 months ago

weiji14 commented 3 years ago

Description of the desired feature

GeoJSON is a standard plaintext OGR format (https://gdal.org/drivers/vector/geojson.html) often used for web mapping and data interchange, and this file format is also rendered by GitHub natively (see https://docs.github.com/en/free-pro-team@latest/github/managing-files-in-a-repository/mapping-geojson-files-on-github), making it an ideal format for sharing online.

There's some action at https://github.com/GenericMappingTools/pygmt/issues/608 on integrating PyGMT with Geopandas, and being able to read GeoJSON directly into GMT plot would really help to simplify the coding! Currently GMT can read shapefiles (https://docs.generic-mapping-tools.org/6.1/cookbook/file-formats.html#shapefiles) via GDAL, but it would be nice to extend this to the GeoJSON format (this is a smaller scope than full OGR vector support as in #3013).

Are you willing to help implement and maintain this feature? When I pick up C programming :slightly_smiling_face:

joa-quim commented 3 years ago

Wei Ji, the fact is that GMT can already read them (see gmt_ogrread.c) but it lacks the ability to convert the data into its internal data structures. So in practice this feature is not yet accessible. Except from Julia where I do the data parsing in the Julia side.

weiji14 commented 3 years ago

Just following up on this because I'm working on a PR at https://github.com/GenericMappingTools/pygmt/pull/1000. What is required to convert GeoJSON (or any OGR format) data to GMT's internal data structures? I had a read through #3013 again but couldn't really understand what needs to be done.

Thought I'd give some test cases too (remove the .txt extension after downloading):

data.gmt.txt

gmt info data.gmt -C
# 0 35  0   20

data.geojson.txt

gmt info data.geojson -C
# gmtinfo [ERROR]: No data columns to work with - exiting
# gmtinfo [ERROR]: Data file only has trailing text. GMT expects numerical columns followed by optional trailing text
joa-quim commented 3 years ago

Wei Ji, #3013 is only marginally related to support reading all the OGR formats. It's something we need if we want to keep information about geometries but we could live without it. The big issue is that the GMT IO is complicated and by GMT's internal data structures I mean having to do programming like this and below. That is, to get the data from GDAL and translate it to fill all of those Dataset->table, Dataset->Segments, ...

joa-quim commented 3 years ago

And BTW, in Julia I get this

D = gmtread("data.geojson");
plot(D, show=true)

ex

joa-quim commented 6 months ago

This is a know issue that needs a more general approach.