[Qgis-developer] GDAL 2.1 can update Geojson files - What is missing in QGIS to edit GeoJSON files ?

Even Rouault even.rouault at spatialys.com
Thu Jan 14 11:57:38 PST 2016


Le jeudi 14 janvier 2016 20:38:04, Nyall Dawson a écrit :
> On 15 Jan 2016 2:39 AM, "Even Rouault" <even.rouault at spatialys.com> wrote:
> > A more "streaming-like" approach for the driver not proceeding to full
> > ingestion of features could be desirable to remove that limitation, but
> 
> that's
> 
> > more involved. A possibility could be to have a "at-hand" parser to
> 
> delimitate
> 
> > JSon "Feature" objects and use only json-c to parse each feature. But
> 
> GeoJSON
> 
> > is certainly not the more appropriate file format to deal with huge
> 
> datasets...
> 
> 
> Even,
> 
> Editable GeoJSON in OGR is great news!
> 
> I've got a question regarding the geojson driver you may be able to assist
> with. Is there any method in the OGR libraries which allow direct parsing
> of a string to a  layer? (Ie, without first writing it out to a file).
> 
> I'd like to add the ability to directly paste geojson text into QGIS and
> have it inserted as a feature in the current layer (like how you can
> currently paste WKT text as a feature). I don't want to have to manually
> parse the json (that would be a nightmare).

Well, the GeoJSON driver support "filenames" which are in fact GeoJSON content:

$ ogrinfo '{"type":"Feature","properties":{"foo":"bar"},"geometry":{"type":"Point","coordinates":[2,49]}}' -ro -al

Layer name: OGRGeoJSON
Geometry: Point
Feature Count: 1
Extent: (2.000000, 49.000000) - (2.000000, 49.000000)
Layer SRS WKT:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0,
        AUTHORITY["EPSG","8901"]],
    UNIT["degree",0.0174532925199433,
        AUTHORITY["EPSG","9122"]],
    AUTHORITY["EPSG","4326"]]
foo: String (0.0)
OGRFeature(OGRGeoJSON):0
  foo (String) = bar
  POINT (2 49)

Works also with FeatureCollections.
Alternatively, you could also put the content in a in-memory GDAL file (/vsimem/ virtual file system) and open it.

So you could likely instanciate a temporary layer and get a QGIS feature from that.


If you are just interested in geometries and not attributes, there's also the C function : 

OGRGeometryH 	OGR_G_CreateGeometryFromJson (const char *); 


> 
> If I could somehow take advantage of OGR's geojson driver to do the heavy
> lifting then this work would be trivial.
> 
> Any ideas?
> 
> Nyall

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the Qgis-developer mailing list