On 19 February 2016 at 11:35, Even Rouault <[email protected]> wrote: > 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
Perfect - works great!! Coming in QGIS 2.16... paste copied geojson text directly into a layer as features :) Nyall _______________________________________________ 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
