Hi Chris On Mon, Jan 17, 2011 at 10:00 PM, Chris Crook <[email protected]> wrote: > I've added submitted a patch to implement this change at > http://trac.osgeo.org/qgis/ticket/3414. > > Changes made are: > > * QgsCoordinateReferenceSystem? string constructor has been generalised to > allow string formats > epsg:1234 > postgis:1234 > internal:1234 > proj4:proj_4_string > wkt:wkt_string > wkt_string > This is implemented by a createFromString function, similar to the > createFromId function
Looks good! > * Changed QgsMemoryProvider URI format to: > > memory?geometry=Point&index=yes&crs=epsg:1234&field=id:integer&field=name:string(25) I would probably prefer to have uri "point?...." instead of "memory?geometry=point&..." since the fact that we are using memory provider is given as another parameter to the vector layer constructor, so in future we would save some typing ;-) > The URI can contain the following items: > geometry=Point|LineString|Polygon|MultiPoint|MultiLineString|MultiPolygon > index=yes - creates a spatial index > crs=... - defines the CRS in one of the formats above > field=definition - defines an attribute field. > > The field definition is a field name, optionally followed by > :type(length,precision), where type is one of integer, int, real, double, and > string (int/integer are synonyms, as are real/double). Eg > field=magnitude:real(16,2) > field=owner:string(64) > field=owner > > This uses Qurl for encoding and decoding the strings. To provide backwards > compatibility, if there is no geometry query string field, then the path is > taken as the geometry type. For example > point > point?crs=epsg:1234 Good. > * Added an option crs=xxxx to the QgsDelimitedTextProvider URI, so that > plugin code can specify the CRS when creating a delimited text layer. The > crs can be any of the formats listed above. Also updated the provider to use > Qurl for encoding and decoding the URI, to ensure consistent handling of > special characters. > > * Made a couple of small fixes to the QgsMemoryProviderPlugin UI component to > ensure that it correctly remembers the last choice of delimiter type (and to > encode the data source URI using Qurl) Then it would be also great to have the possibility to set CRS in the GUI... > One thing I haven't done is to modify the handling of datasourceUri in > QgsVectorLayer to ensure that it always uses the datasourceUri from the > provider, rather than storing its own version when the layer is created (or > the provider is reset). I'm not sure how safe this would be - that is > whether all the data providers correctly handle the datasourceUri() function. > I think this would be the right thing to do though - I think that the > provider should be responsible for its own URI. Any comments on the wisdom > of changing this would be welcome! Currently I don't really like this idea. It's not usual that data source URI would change inside the provider, so I would be happy to keep the current situation. Developers can be advised to use the new syntax (after all it's less verbose) and we have no problems. Regards Martin _______________________________________________ Qgis-developer mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-developer
