-
-
Notifications
You must be signed in to change notification settings - Fork 716
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Attempt to fix doctests by using airports layer in epsg4326 instead of epsg2964. #9256
Changes from all commits
cde3c4b
22a5c49
d68414c
026ba89
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -48,55 +48,33 @@ them here. | |
Vector Layers | ||
============= | ||
|
||
To create and add a vector layer instance to the project, specify the layer's data source | ||
identifier, name for the layer and provider's name: | ||
|
||
.. testcode:: loadlayer | ||
|
||
# get the path to the shapefile e.g. /home/project/data/ports.shp | ||
path_to_airports_layer = "testdata/airports.shp" | ||
|
||
# The format is: | ||
# vlayer = QgsVectorLayer(data_source, layer_name, provider_name) | ||
|
||
vlayer = QgsVectorLayer(path_to_airports_layer, "Airports layer", "ogr") | ||
if not vlayer.isValid(): | ||
print("Layer failed to load!") | ||
else: | ||
QgsProject.instance().addMapLayer(vlayer) | ||
|
||
.. .. testoutput:: loadlayer | ||
:hide: | ||
|
||
(2): Using non-preferred coordinate operation between EPSG:2964 and EPSG:4326. Using +proj=pipeline +step +proj=unitconvert +xy_in=us-ft +xy_out=m +step +inv +proj=aea +lat_0=50 +lon_0=-154 +lat_1=55 +lat_2=65 +x_0=0 +y_0=0 +ellps=clrk66 +step +proj=push +v_3 +step +proj=cart +ellps=clrk66 +step +proj=helmert +x=-5 +y=135 +z=172 +step +inv +proj=cart +ellps=WGS84 +step +proj=pop +v_3 +step +proj=unitconvert +xy_in=rad +xy_out=deg, preferred +proj=pipeline +step +proj=unitconvert +xy_in=us-ft +xy_out=m +step +inv +proj=aea +lat_0=50 +lon_0=-154 +lat_1=55 +lat_2=65 +x_0=0 +y_0=0 +ellps=clrk66 +step +proj=hgridshift +grids=us_noaa_alaska.tif +step +proj=unitconvert +xy_in=rad +xy_out=deg. | ||
|
||
The data source identifier is a string and it is specific to each vector data | ||
provider. Layer's name is used in the layer list widget. It is important to | ||
check whether the layer has been loaded successfully. If it was not, an invalid | ||
layer instance is returned. | ||
To create and add a vector layer instance to the project, specify the layer's data source identifier. | ||
The data source identifier is a string and it is specific to each vector data provider. | ||
An optional layer name is used for identifying the layer in the :guilabel:`Layers` panel. | ||
It is important to check whether the layer has been loaded successfully. | ||
If it was not, an invalid layer instance is returned. | ||
|
||
For a geopackage vector layer: | ||
|
||
.. testcode:: loadlayer | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we really need to keep this example here? Before we ever mention the addVectorLayer method? and knowing that it is a more verbose version of new line 101? |
||
|
||
# get the path to a geopackage e.g. /usr/share/qgis/resources/data/world_map.gpkg | ||
path_to_gpkg = os.path.join(QgsApplication.pkgDataPath(), "resources", "data", "world_map.gpkg") | ||
# get the path to a geopackage | ||
path_to_gpkg = "testdata/data/data.gpkg" | ||
# append the layername part | ||
gpkg_countries_layer = path_to_gpkg + "|layername=countries" | ||
# e.g. gpkg_places_layer = "/usr/share/qgis/resources/data/world_map.gpkg|layername=countries" | ||
vlayer = QgsVectorLayer(gpkg_countries_layer, "Countries layer", "ogr") | ||
gpkg_airports_layer = path_to_gpkg + "|layername=airports" | ||
vlayer = QgsVectorLayer(gpkg_airports_layer, "Airports layer", "ogr") | ||
if not vlayer.isValid(): | ||
print("Layer failed to load!") | ||
else: | ||
QgsProject.instance().addMapLayer(vlayer) | ||
|
||
The quickest way to open and display a vector layer in QGIS is the | ||
:meth:`addVectorLayer() <qgis.gui.QgisInterface.addVectorLayer>` | ||
method of the :class:`QgisInterface <qgis.gui.QgisInterface>`: | ||
method of the :class:`QgisInterface <qgis.gui.QgisInterface>` class: | ||
|
||
.. testcode:: loadlayer | ||
|
||
vlayer = iface.addVectorLayer(path_to_airports_layer, "Airports layer", "ogr") | ||
vlayer = iface.addVectorLayer(gpkg_airports_layer, "Airports layer", "ogr") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In reference to my comment about missing shp, we could keep shp code here... |
||
if not vlayer: | ||
print("Layer failed to load!") | ||
|
||
|
@@ -110,23 +88,36 @@ providers: | |
.. index:: | ||
pair: Loading; GDAL layers | ||
|
||
* GDAL library (Shapefile and many other file formats) --- data source is the | ||
path to the file: | ||
* The ogr provider from the GDAL library supports a `wide variety of formats | ||
<https://gdal.org/en/latest/drivers/vector/index.html>`_, | ||
also called drivers in GDAL speak. | ||
Examples are ESRI Shapefile, Geopackage, Flatgeobuf, Geojson, ... | ||
For single-file formats the filepath usually suffices as uri. | ||
For geopackages or dxf, a pipe separated suffix allows to specify the layer to load. | ||
|
||
* for ESRI Shapefile: | ||
|
||
.. code:: | ||
|
||
uri = "testdata/airports.shp" | ||
vlayer = QgsVectorLayer(uri, "layer_name_you_like", "ogr") | ||
QgsProject.instance().addMapLayer(vlayer) | ||
|
||
* for Shapefile: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Imo It is a pity to no longer provide an example with flat files. We can keep the gpkg for tests and it should be possible to add a |
||
* for Geopackage (note the internal options in data source uri): | ||
|
||
.. testcode:: loadlayer | ||
|
||
vlayer = QgsVectorLayer("testdata/airports.shp", "layer_name_you_like", "ogr") | ||
QgsProject.instance().addMapLayer(vlayer) | ||
uri = "testdata/data/data.gpkg|layername=airports" | ||
vlayer = QgsVectorLayer(uri, "layer_name_you_like", "ogr") | ||
QgsProject.instance().addMapLayer(vlayer) | ||
|
||
* for dxf (note the internal options in data source uri): | ||
|
||
.. testcode:: loadlayer | ||
|
||
uri = "testdata/sample.dxf|layername=entities|geometrytype=Polygon" | ||
vlayer = QgsVectorLayer(uri, "layer_name_you_like", "ogr") | ||
QgsProject.instance().addMapLayer(vlayer) | ||
uri = "testdata/sample.dxf|layername=entities|geometrytype=Polygon" | ||
vlayer = QgsVectorLayer(uri, "layer_name_you_like", "ogr") | ||
QgsProject.instance().addMapLayer(vlayer) | ||
|
||
.. index:: | ||
pair: Loading; PostGIS layers | ||
|
@@ -230,11 +221,6 @@ providers: | |
uri = "https://demo.mapserver.org/cgi-bin/wfs?service=WFS&version=2.0.0&request=GetFeature&typename=ms:cities" | ||
vlayer = QgsVectorLayer(uri, "my wfs layer", "WFS") | ||
|
||
.. .. testoutput:: loadlayer | ||
:hide: | ||
|
||
(2): Using non-preferred coordinate operation between EPSG:2964 and EPSG:4326. Using +proj=pipeline +step +proj=unitconvert +xy_in=us-ft +xy_out=m +step +inv +proj=aea +lat_0=50 +lon_0=-154 +lat_1=55 +lat_2=65 +x_0=0 +y_0=0 +ellps=clrk66 +step +proj=push +v_3 +step +proj=cart +ellps=clrk66 +step +proj=helmert +x=-5 +y=135 +z=172 +step +inv +proj=cart +ellps=WGS84 +step +proj=pop +v_3 +step +proj=unitconvert +xy_in=rad +xy_out=deg, preferred +proj=pipeline +step +proj=unitconvert +xy_in=us-ft +xy_out=m +step +inv +proj=aea +lat_0=50 +lon_0=-154 +lat_1=55 +lat_2=65 +x_0=0 +y_0=0 +ellps=clrk66 +step +proj=hgridshift +grids=us_noaa_alaska.tif +step +proj=unitconvert +xy_in=rad +xy_out=deg. | ||
|
||
The uri can be created using the standard ``urllib`` library: | ||
|
||
.. testcode:: loadlayer | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is unclear to me why layer name and provider are removed here. and "layer name" is mentioned two sentences after.