Le vendredi 19 février 2016 01:30:59, Nyall Dawson a écrit : > On 15 January 2016 at 06:57, Even Rouault <[email protected]> wrote: > >> 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. > > Hi Even, > > I'm currently exploring this approach (in memory file), but I'm stuck > on how to actually write the string contents to a memory file prior to > opening to it with GDAL. I gather for the python bindings I could > utilise FileFromMemBuffer, but I can't find any similar replacement in > the c api.
VSIFileFromMemBuffer : http://www.gdal.org/cpl__vsi_8h.html#a86b6b1c37bb19d954ee3c4a7e910120c And some code snippet here : http://www.gdal.org/cpl__vsi_8h.html#a66e2e6f093fd42f8a941b962d4c8a19e > > What's the correct approach to use here? > > Nyall > > > 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 -- Spatialys - Geospatial professional services http://www.spatialys.com _______________________________________________ Qgis-developer mailing list [email protected] List info: http://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: http://lists.osgeo.org/mailman/listinfo/qgis-developer
