From 3ca590f58c2c736d544b5240d4fb2007396721bc Mon Sep 17 00:00:00 2001 From: Bas Couwenberg <sebastic@xs4all.nl> Date: Fri, 21 Jun 2019 15:38:04 +0200 Subject: [PATCH] New upstream version 3.4.9+dfsg --- .ci/travis/scripts/ctest2travis.py | 2 +- .../qgis_resources/test_runner/qgis_setup.sh | 2 +- .travis.yml | 3 +- CMakeLists.txt | 2 +- ChangeLog | 1372 +++++ debian/changelog | 10 +- .../default/mIconAutoPlacementSettings.svg | 10 +- linux/org.qgis.qgis.appdata.xml.in | 1 + ms-windows/osgeo4w/package.cmd | 6 + ms-windows/osgeo4w/postinstall-desktop.bat | 8 +- ms-windows/osgeo4w/postinstall-dev.bat | 8 +- ms-windows/osgeo4w/postinstall-grass.bat | 4 +- python/CMakeLists.txt | 1 + python/PyQt/PyQt5/Qsci.py | 2 +- python/PyQt/PyQt5/Qt.py | 2 +- python/PyQt/PyQt5/QtCore.py | 2 +- python/PyQt/PyQt5/QtGui.py | 2 +- python/PyQt/PyQt5/QtNetwork.py | 2 +- python/PyQt/PyQt5/QtPrintSupport.py | 2 +- python/PyQt/PyQt5/QtSql.py | 2 +- python/PyQt/PyQt5/QtSvg.py | 2 +- python/PyQt/PyQt5/QtTest.py | 2 +- python/PyQt/PyQt5/QtWebKit.py | 2 +- python/PyQt/PyQt5/QtWebKitWidgets.py | 2 +- python/PyQt/PyQt5/QtWidgets.py | 2 +- python/PyQt/PyQt5/QtXml.py | 2 +- python/PyQt/PyQt5/sip.py | 2 +- python/PyQt/PyQt5/uic/__init__.py | 2 +- python/PyQt/PyQt5/uic/properties.py | 2 +- python/PyQt/PyQt5/uic/pyuic.py | 2 +- python/__init__.py | 2 +- python/console/__init__.py | 2 +- .../effects/qgsblureffect.sip.in | 78 +- .../effects/qgsgloweffect.sip.in | 82 +- .../effects/qgsshadoweffect.sip.in | 80 +- .../qgsattributeeditorelement.sip.in | 2 +- .../auto_generated/qgslabelsearchtree.sip.in | 8 + .../core/auto_generated/qgspallabeling.sip.in | 51 +- .../auto_generated/qgsrendercontext.sip.in | 55 + .../raster/qgsrasterinterface.sip.in | 23 +- .../symbology/qgsheatmaprenderer.sip.in | 2 +- .../qgsinvertedpolygonrenderer.sip.in | 2 +- .../symbology/qgsnullsymbolrenderer.sip.in | 2 +- .../symbology/qgspointdistancerenderer.sip.in | 2 +- .../symbology/qgsrenderer.sip.in | 9 +- .../symbology/qgsrulebasedrenderer.sip.in | 2 +- .../auto_generated/symbology/qgssymbol.sip.in | 2 +- python/core/contextmanagers.py | 2 +- python/gui/auto_additions/qgsgui.py | 2 + .../qgsrelationreferencewidget.sip.in | 2 +- .../qgsadvanceddigitizingcanvasitem.sip.in | 3 +- .../qgsadvanceddigitizingdockwidget.sip.in | 7 + python/gui/auto_generated/qgsgui.sip.in | 8 +- .../qgsmaptooladvanceddigitizing.sip.in | 2 + .../qgsnewhttpconnection.sip.in | 1 + .../auto_generated/qgsscalerangewidget.sip.in | 14 + python/gui/auto_generated/qgsstatusbar.sip.in | 9 + .../qgsinvertedpolygonrendererwidget.sip.in | 3 + python/gui/gui_auto.sip | 2 +- .../resources/connections-default.xml | 2 +- python/plugins/MetaSearch/util.py | 4 +- .../db_plugins/oracle/sql_dictionary.py | 2 +- .../plugins/db_manager/db_plugins/plugin.py | 38 +- .../db_plugins/postgis/connector_test.py | 2 +- .../db_plugins/postgis/plugin_test.py | 2 +- .../db_plugins/postgis/sql_dictionary.py | 2 +- .../db_plugins/spatialite/sql_dictionary.py | 2 +- .../db_plugins/vlayers/sql_dictionary.py | 2 +- .../db_manager/dlg_field_properties.py | 2 +- .../plugins/db_manager/dlg_import_vector.py | 1 + python/plugins/db_manager/sql_dictionary.py | 2 +- python/plugins/db_manager/sqledit.py | 2 +- python/plugins/processing/ProcessingPlugin.py | 2 +- python/plugins/processing/__init__.py | 2 +- .../algs/exampleprovider/ExampleAlgorithm.py | 2 +- .../ExampleAlgorithmProvider.py | 2 +- .../ProcessingExampleProviderPlugin.py | 2 +- .../algs/exampleprovider/__init__.py | 2 +- .../processing/algs/gdal/AssignProjection.py | 2 +- python/plugins/processing/algs/gdal/Buffer.py | 2 +- .../algs/gdal/ClipRasterByExtent.py | 7 +- .../processing/algs/gdal/ClipRasterByMask.py | 7 +- .../algs/gdal/ClipVectorByExtent.py | 2 +- .../processing/algs/gdal/ClipVectorByMask.py | 2 +- .../processing/algs/gdal/ColorRelief.py | 2 +- .../plugins/processing/algs/gdal/Dissolve.py | 2 +- .../processing/algs/gdal/ExecuteSql.py | 2 +- .../processing/algs/gdal/GdalAlgorithm.py | 2 +- .../algs/gdal/GdalAlgorithmDialog.py | 2 +- .../algs/gdal/GdalAlgorithmProvider.py | 2 +- .../plugins/processing/algs/gdal/GdalUtils.py | 2 +- .../processing/algs/gdal/GridAverage.py | 2 +- .../processing/algs/gdal/GridDataMetrics.py | 2 +- .../algs/gdal/GridInverseDistance.py | 2 +- .../GridInverseDistanceNearestNeighbor.py | 2 +- .../processing/algs/gdal/GridLinear.py | 2 +- .../algs/gdal/GridNearestNeighbor.py | 2 +- .../processing/algs/gdal/OffsetCurve.py | 2 +- .../processing/algs/gdal/OgrToPostGis.py | 2 +- .../processing/algs/gdal/OneSideBuffer.py | 2 +- .../processing/algs/gdal/PointsAlongLines.py | 2 +- python/plugins/processing/algs/gdal/aspect.py | 2 +- .../plugins/processing/algs/gdal/buildvrt.py | 25 +- .../plugins/processing/algs/gdal/contour.py | 2 +- .../processing/algs/gdal/extractprojection.py | 2 +- .../processing/algs/gdal/fillnodata.py | 2 +- .../processing/algs/gdal/gdal2tiles.py | 2 +- .../plugins/processing/algs/gdal/gdal2xyz.py | 2 +- .../plugins/processing/algs/gdal/gdaladdo.py | 2 +- .../plugins/processing/algs/gdal/gdalcalc.py | 2 +- .../plugins/processing/algs/gdal/gdalinfo.py | 2 +- .../processing/algs/gdal/gdaltindex.py | 2 +- .../plugins/processing/algs/gdal/hillshade.py | 2 +- python/plugins/processing/algs/gdal/merge.py | 2 +- .../plugins/processing/algs/gdal/nearblack.py | 2 +- .../plugins/processing/algs/gdal/ogr2ogr.py | 2 +- .../algs/gdal/ogr2ogrtabletopostgislist.py | 2 +- .../algs/gdal/ogr2ogrtopostgislist.py | 2 +- .../plugins/processing/algs/gdal/ogrinfo.py | 2 +- .../plugins/processing/algs/gdal/pct2rgb.py | 2 +- .../processing/algs/gdal/polygonize.py | 2 +- .../plugins/processing/algs/gdal/proximity.py | 2 +- .../plugins/processing/algs/gdal/rasterize.py | 2 +- .../processing/algs/gdal/rasterize_over.py | 2 +- .../processing/algs/gdal/rearrange_bands.py | 7 +- python/plugins/processing/algs/gdal/retile.py | 8 +- .../plugins/processing/algs/gdal/rgb2pct.py | 2 +- .../plugins/processing/algs/gdal/roughness.py | 2 +- python/plugins/processing/algs/gdal/sieve.py | 2 +- python/plugins/processing/algs/gdal/slope.py | 2 +- python/plugins/processing/algs/gdal/tpi.py | 2 +- .../plugins/processing/algs/gdal/translate.py | 7 +- python/plugins/processing/algs/gdal/tri.py | 2 +- .../algs/gdal/ui/RasterOptionsWidget.py | 2 +- python/plugins/processing/algs/gdal/warp.py | 16 +- .../processing/algs/grass7/Grass7Algorithm.py | 2 +- .../algs/grass7/Grass7AlgorithmProvider.py | 2 +- .../processing/algs/grass7/Grass7Utils.py | 2 +- .../grass7/description/r.in.lidar.info.txt | 2 +- .../{r.sun.txt => r.sun.incidout.txt} | 14 +- .../grass7/description/r.sun.insoltime.txt | 30 + .../grass7/description/v.net.distance.txt | 2 +- .../plugins/processing/algs/grass7/ext/i.py | 2 +- .../processing/algs/grass7/ext/i_albedo.py | 2 +- .../processing/algs/grass7/ext/i_cca.py | 2 +- .../processing/algs/grass7/ext/i_cluster.py | 2 +- .../algs/grass7/ext/i_colors_enhance.py | 2 +- .../processing/algs/grass7/ext/i_evapo_mh.py | 2 +- .../processing/algs/grass7/ext/i_gensig.py | 2 +- .../processing/algs/grass7/ext/i_gensigset.py | 2 +- .../processing/algs/grass7/ext/i_group.py | 2 +- .../algs/grass7/ext/i_in_spotvgt.py | 2 +- .../algs/grass7/ext/i_landsat_acca.py | 2 +- .../algs/grass7/ext/i_landsat_toar.py | 2 +- .../processing/algs/grass7/ext/i_maxlik.py | 2 +- .../processing/algs/grass7/ext/i_oif.py | 2 +- .../algs/grass7/ext/i_pansharpen.py | 2 +- .../processing/algs/grass7/ext/i_pca.py | 2 +- .../processing/algs/grass7/ext/i_segment.py | 2 +- .../processing/algs/grass7/ext/i_smap.py | 2 +- .../processing/algs/grass7/ext/i_tasscap.py | 2 +- .../algs/grass7/ext/r_blend_combine.py | 2 +- .../processing/algs/grass7/ext/r_blend_rgb.py | 2 +- .../processing/algs/grass7/ext/r_category.py | 2 +- .../processing/algs/grass7/ext/r_colors.py | 2 +- .../algs/grass7/ext/r_colors_stddev.py | 2 +- .../processing/algs/grass7/ext/r_drain.py | 2 +- .../processing/algs/grass7/ext/r_horizon.py | 2 +- .../processing/algs/grass7/ext/r_li.py | 2 +- .../processing/algs/grass7/ext/r_li_cwed.py | 2 +- .../algs/grass7/ext/r_li_cwed_ascii.py | 2 +- .../algs/grass7/ext/r_li_dominance.py | 2 +- .../algs/grass7/ext/r_li_dominance_ascii.py | 2 +- .../algs/grass7/ext/r_li_edgedensity.py | 2 +- .../algs/grass7/ext/r_li_edgedensity_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_mpa.py | 2 +- .../algs/grass7/ext/r_li_mpa_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_mps.py | 2 +- .../algs/grass7/ext/r_li_mps_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_padcv.py | 2 +- .../algs/grass7/ext/r_li_padcv_ascii.py | 2 +- .../algs/grass7/ext/r_li_padrange.py | 2 +- .../algs/grass7/ext/r_li_padrange_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_padsd.py | 2 +- .../algs/grass7/ext/r_li_padsd_ascii.py | 2 +- .../algs/grass7/ext/r_li_patchdensity.py | 2 +- .../grass7/ext/r_li_patchdensity_ascii.py | 2 +- .../algs/grass7/ext/r_li_patchnum.py | 2 +- .../algs/grass7/ext/r_li_patchnum_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_pielou.py | 2 +- .../algs/grass7/ext/r_li_pielou_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_renyi.py | 2 +- .../algs/grass7/ext/r_li_renyi_ascii.py | 2 +- .../algs/grass7/ext/r_li_richness.py | 2 +- .../algs/grass7/ext/r_li_richness_ascii.py | 2 +- .../algs/grass7/ext/r_li_shannon.py | 2 +- .../algs/grass7/ext/r_li_shannon_ascii.py | 2 +- .../processing/algs/grass7/ext/r_li_shape.py | 2 +- .../algs/grass7/ext/r_li_shape_ascii.py | 2 +- .../algs/grass7/ext/r_li_simpson.py | 2 +- .../algs/grass7/ext/r_li_simpson_ascii.py | 2 +- .../processing/algs/grass7/ext/r_mapcalc.py | 2 +- .../processing/algs/grass7/ext/r_mask_rast.py | 2 +- .../processing/algs/grass7/ext/r_mask_vect.py | 2 +- .../processing/algs/grass7/ext/r_null.py | 2 +- .../processing/algs/grass7/ext/r_proj.py | 2 +- .../processing/algs/grass7/ext/r_reclass.py | 2 +- .../algs/grass7/ext/r_resamp_filter.py | 2 +- .../processing/algs/grass7/ext/r_rgb.py | 2 +- .../algs/grass7/ext/r_series_interp.py | 2 +- .../processing/algs/grass7/ext/r_shade.py | 2 +- .../algs/grass7/ext/r_statistics.py | 2 +- .../algs/grass7/ext/r_stats_quantile_rast.py | 2 +- .../algs/grass7/ext/r_what_color.py | 2 +- .../processing/algs/grass7/ext/v_distance.py | 2 +- .../processing/algs/grass7/ext/v_edit.py | 2 +- .../processing/algs/grass7/ext/v_extrude.py | 2 +- .../algs/grass7/ext/v_in_geonames.py | 2 +- .../processing/algs/grass7/ext/v_net.py | 2 +- .../processing/algs/grass7/ext/v_net_alloc.py | 2 +- .../algs/grass7/ext/v_net_allpairs.py | 2 +- .../algs/grass7/ext/v_net_bridge.py | 2 +- .../algs/grass7/ext/v_net_centrality.py | 2 +- .../algs/grass7/ext/v_net_components.py | 2 +- .../algs/grass7/ext/v_net_connectivity.py | 2 +- .../algs/grass7/ext/v_net_distance.py | 2 +- .../processing/algs/grass7/ext/v_net_flow.py | 2 +- .../processing/algs/grass7/ext/v_net_iso.py | 2 +- .../processing/algs/grass7/ext/v_net_path.py | 2 +- .../algs/grass7/ext/v_net_salesman.py | 2 +- .../algs/grass7/ext/v_net_spanningtree.py | 2 +- .../algs/grass7/ext/v_net_steiner.py | 2 +- .../algs/grass7/ext/v_net_visibility.py | 2 +- .../processing/algs/grass7/ext/v_proj.py | 2 +- .../algs/grass7/ext/v_rast_stats.py | 2 +- .../processing/algs/grass7/ext/v_rectify.py | 2 +- .../processing/algs/grass7/ext/v_sample.py | 2 +- .../processing/algs/grass7/ext/v_to_3d.py | 2 +- .../algs/grass7/ext/v_vect_stats.py | 2 +- .../processing/algs/grass7/ext/v_voronoi.py | 2 +- .../processing/algs/grass7/ext/v_what_rast.py | 2 +- .../processing/algs/grass7/ext/v_what_vect.py | 2 +- .../plugins/processing/algs/help/__init__.py | 2 +- .../processing/algs/qgis/AddTableField.py | 2 +- .../plugins/processing/algs/qgis/Aggregate.py | 2 +- python/plugins/processing/algs/qgis/Aspect.py | 2 +- .../plugins/processing/algs/qgis/BarPlot.py | 2 +- .../processing/algs/qgis/BasicStatistics.py | 2 +- .../plugins/processing/algs/qgis/BoxPlot.py | 2 +- python/plugins/processing/algs/qgis/Buffer.py | 2 +- .../processing/algs/qgis/CheckValidity.py | 2 +- .../processing/algs/qgis/ConcaveHull.py | 2 +- .../algs/qgis/CreateAttributeIndex.py | 2 +- .../algs/qgis/CreateConstantRaster.py | 2 +- .../processing/algs/qgis/Datasources2Vrt.py | 2 +- .../processing/algs/qgis/DefineProjection.py | 2 +- .../plugins/processing/algs/qgis/Delaunay.py | 2 +- .../processing/algs/qgis/DeleteColumn.py | 2 +- .../algs/qgis/DeleteDuplicateGeometries.py | 2 +- .../processing/algs/qgis/DensifyGeometries.py | 2 +- .../algs/qgis/DensifyGeometriesInterval.py | 2 +- .../algs/qgis/EliminateSelection.py | 2 +- .../processing/algs/qgis/ExecuteSQL.py | 2 +- .../algs/qgis/ExportGeometryInfo.py | 2 +- .../processing/algs/qgis/ExtentFromLayer.py | 2 +- .../algs/qgis/ExtractSpecificVertices.py | 2 +- .../processing/algs/qgis/FieldPyculator.py | 2 +- .../processing/algs/qgis/FieldsCalculator.py | 2 +- .../processing/algs/qgis/FieldsMapper.py | 2 +- .../processing/algs/qgis/FindProjection.py | 2 +- .../algs/qgis/GeometryByExpression.py | 2 +- .../processing/algs/qgis/GeometryConvert.py | 2 +- python/plugins/processing/algs/qgis/Grid.py | 2 +- .../plugins/processing/algs/qgis/Heatmap.py | 2 +- .../plugins/processing/algs/qgis/Hillshade.py | 2 +- .../processing/algs/qgis/HubDistanceLines.py | 2 +- .../processing/algs/qgis/HubDistancePoints.py | 2 +- .../processing/algs/qgis/HypsometricCurves.py | 2 +- .../processing/algs/qgis/IdwInterpolation.py | 2 +- .../processing/algs/qgis/ImportIntoPostGIS.py | 2 +- .../algs/qgis/ImportIntoSpatialite.py | 2 +- .../algs/qgis/KNearestConcaveHull.py | 2 +- .../processing/algs/qgis/KeepNBiggestParts.py | 2 +- .../processing/algs/qgis/LinesToPolygons.py | 2 +- .../processing/algs/qgis/MeanAndStdDevPlot.py | 2 +- .../algs/qgis/MinimumBoundingGeometry.py | 2 +- .../algs/qgis/NearestNeighbourAnalysis.py | 2 +- .../processing/algs/qgis/Orthogonalize.py | 2 +- .../processing/algs/qgis/PointDistance.py | 2 +- .../algs/qgis/PointsAlongGeometry.py | 2 +- .../algs/qgis/PointsDisplacement.py | 2 +- .../processing/algs/qgis/PointsFromLines.py | 2 +- .../algs/qgis/PointsFromPolygons.py | 2 +- .../processing/algs/qgis/PointsInPolygon.py | 2 +- .../algs/qgis/PointsLayerFromTable.py | 2 +- .../processing/algs/qgis/PointsToPaths.py | 2 +- .../plugins/processing/algs/qgis/PolarPlot.py | 2 +- .../algs/qgis/PoleOfInaccessibility.py | 2 +- .../processing/algs/qgis/Polygonize.py | 2 +- .../processing/algs/qgis/PolygonsToLines.py | 2 +- .../algs/qgis/PostGISExecuteAndLoadSQL.py | 2 +- .../processing/algs/qgis/PostGISExecuteSQL.py | 2 +- .../processing/algs/qgis/QgisAlgorithm.py | 2 +- .../algs/qgis/QgisAlgorithmProvider.py | 2 +- .../processing/algs/qgis/RandomExtract.py | 2 +- .../algs/qgis/RandomExtractWithinSubsets.py | 2 +- .../algs/qgis/RandomPointsAlongLines.py | 2 +- .../algs/qgis/RandomPointsExtent.py | 2 +- .../processing/algs/qgis/RandomPointsLayer.py | 2 +- .../algs/qgis/RandomPointsPolygons.py | 2 +- .../processing/algs/qgis/RandomSelection.py | 2 +- .../algs/qgis/RandomSelectionWithinSubsets.py | 2 +- .../processing/algs/qgis/RasterCalculator.py | 2 +- .../algs/qgis/RasterLayerHistogram.py | 2 +- .../algs/qgis/RasterLayerStatistics.py | 2 +- .../processing/algs/qgis/RasterSampling.py | 2 +- .../plugins/processing/algs/qgis/Rasterize.py | 2 +- .../algs/qgis/RectanglesOvalsDiamondsFixed.py | 2 +- .../qgis/RectanglesOvalsDiamondsVariable.py | 2 +- .../processing/algs/qgis/RegularPoints.py | 2 +- python/plugins/processing/algs/qgis/Relief.py | 2 +- .../processing/algs/qgis/Ruggedness.py | 2 +- .../processing/algs/qgis/SelectByAttribute.py | 12 +- .../algs/qgis/SelectByExpression.py | 4 +- .../algs/qgis/ServiceAreaFromLayer.py | 2 +- .../algs/qgis/ServiceAreaFromPoint.py | 2 +- .../plugins/processing/algs/qgis/SetMValue.py | 2 +- .../processing/algs/qgis/SetRasterStyle.py | 2 +- .../processing/algs/qgis/SetVectorStyle.py | 2 +- .../plugins/processing/algs/qgis/SetZValue.py | 2 +- .../processing/algs/qgis/SingleSidedBuffer.py | 2 +- python/plugins/processing/algs/qgis/Slope.py | 2 +- .../processing/algs/qgis/SnapGeometries.py | 2 +- .../processing/algs/qgis/SpatialIndex.py | 2 +- .../processing/algs/qgis/SpatialJoin.py | 2 +- .../algs/qgis/SpatialJoinSummary.py | 2 +- .../algs/qgis/SpatialiteExecuteSQL.py | 2 +- .../algs/qgis/StatisticsByCategories.py | 2 +- .../plugins/processing/algs/qgis/SumLines.py | 2 +- .../processing/algs/qgis/TextToFloat.py | 2 +- .../processing/algs/qgis/TinInterpolation.py | 2 +- .../processing/algs/qgis/TopoColors.py | 2 +- .../processing/algs/qgis/TruncateTable.py | 2 +- .../processing/algs/qgis/UniqueValues.py | 2 +- .../algs/qgis/VariableDistanceBuffer.py | 2 +- .../algs/qgis/VectorLayerHistogram.py | 2 +- .../algs/qgis/VectorLayerScatterplot.py | 2 +- .../algs/qgis/VectorLayerScatterplot3D.py | 2 +- .../processing/algs/qgis/VectorSplit.py | 2 +- .../processing/algs/qgis/VoronoiPolygons.py | 2 +- .../processing/algs/qgis/ZonalStatistics.py | 2 +- .../algs/qgis/ui/AggregatesPanel.py | 2 +- .../algs/qgis/ui/ExecuteSQLWidget.py | 2 +- .../algs/qgis/ui/FieldsCalculatorDialog.py | 2 +- .../algs/qgis/ui/FieldsMappingPanel.py | 2 +- .../algs/qgis/ui/InterpolationWidgets.py | 2 +- .../algs/qgis/ui/RasterCalculatorWidgets.py | 4 +- .../algs/qgis/ui/ReliefColorsWidget.py | 2 +- .../plugins/processing/algs/qgis/voronoi.py | 2 +- .../processing/algs/saga/SagaAlgorithm.py | 4 +- .../processing/algs/saga/SagaAlgorithmBase.py | 2 +- .../algs/saga/SagaAlgorithmProvider.py | 2 +- .../algs/saga/SagaDescriptionCreator.py | 2 +- .../processing/algs/saga/SagaNameDecorator.py | 2 +- .../processing/algs/saga/SagaParameters.py | 2 +- .../plugins/processing/algs/saga/SagaUtils.py | 2 +- .../processing/algs/saga/SplitRGBBands.py | 7 +- .../saga/description/UserDefinedFilter.txt | 2 +- .../algs/saga/ext/supervisedclassification.py | 2 +- .../processing/algs/saga/versioncheck.py | 2 +- python/plugins/processing/core/Processing.py | 2 +- .../processing/core/ProcessingConfig.py | 2 +- .../plugins/processing/core/ProcessingLog.py | 2 +- .../processing/core/ProcessingResults.py | 2 +- .../processing/core/defaultproviders.py | 2 +- python/plugins/processing/core/outputs.py | 2 +- python/plugins/processing/core/parameters.py | 2 +- .../plugins/processing/gui/AlgorithmDialog.py | 2 +- .../processing/gui/AlgorithmDialogBase.py | 2 +- .../processing/gui/AlgorithmExecutor.py | 2 +- .../processing/gui/AlgorithmLocatorFilter.py | 2 +- .../plugins/processing/gui/AutofillDialog.py | 2 +- .../processing/gui/BatchAlgorithmDialog.py | 2 +- .../gui/BatchInputSelectionPanel.py | 2 +- .../gui/BatchOutputSelectionPanel.py | 2 +- python/plugins/processing/gui/BatchPanel.py | 2 +- .../plugins/processing/gui/CheckboxesPanel.py | 2 +- python/plugins/processing/gui/ConfigDialog.py | 2 +- .../plugins/processing/gui/ContextAction.py | 2 +- .../gui/DestinationSelectionPanel.py | 2 +- .../processing/gui/DirectorySelectorDialog.py | 2 +- .../gui/EditRenderingStylesDialog.py | 2 +- .../processing/gui/ExtentSelectionPanel.py | 2 +- .../processing/gui/FileSelectionPanel.py | 2 +- .../processing/gui/FixedTableDialog.py | 2 +- .../plugins/processing/gui/FixedTablePanel.py | 2 +- python/plugins/processing/gui/Help2Html.py | 2 +- .../processing/gui/HelpEditionDialog.py | 2 +- .../plugins/processing/gui/HistoryDialog.py | 2 +- .../processing/gui/ListMultiselectWidget.py | 2 +- .../processing/gui/MessageBarProgress.py | 2 +- .../plugins/processing/gui/MessageDialog.py | 2 +- .../processing/gui/MultipleFileInputDialog.py | 2 +- .../processing/gui/MultipleInputDialog.py | 2 +- .../processing/gui/MultipleInputPanel.py | 2 +- .../processing/gui/NumberInputPanel.py | 2 +- .../processing/gui/ParameterGuiUtils.py | 2 +- .../plugins/processing/gui/ParametersPanel.py | 2 +- python/plugins/processing/gui/PointMapTool.py | 2 +- .../processing/gui/PointSelectionPanel.py | 2 +- .../processing/gui/PostgisTableSelector.py | 2 +- .../plugins/processing/gui/Postprocessing.py | 2 +- .../processing/gui/ProcessingToolbox.py | 2 +- python/plugins/processing/gui/RangePanel.py | 2 +- .../processing/gui/RectangleMapTool.py | 2 +- .../processing/gui/RenderingStyleFilePanel.py | 2 +- .../plugins/processing/gui/RenderingStyles.py | 2 +- python/plugins/processing/gui/ResultsDock.py | 2 +- python/plugins/processing/gui/TestTools.py | 2 +- .../plugins/processing/gui/ToolboxAction.py | 2 +- python/plugins/processing/gui/__init__.py | 2 +- .../processing/gui/enummodelerwidget.py | 2 +- .../processing/gui/matrixmodelerwidget.py | 2 +- python/plugins/processing/gui/menus.py | 2 +- python/plugins/processing/gui/wrappers.py | 2 +- .../modeler/AddModelFromFileAction.py | 2 +- .../modeler/CreateNewModelAction.py | 2 +- .../processing/modeler/DeleteModelAction.py | 2 +- .../processing/modeler/EditModelAction.py | 2 +- .../modeler/ModelerAlgorithmProvider.py | 2 +- .../processing/modeler/ModelerDialog.py | 2 +- .../processing/modeler/ModelerGraphicItem.py | 2 +- .../ModelerParameterDefinitionDialog.py | 2 +- .../modeler/ModelerParametersDialog.py | 2 +- .../processing/modeler/ModelerScene.py | 2 +- .../processing/modeler/ModelerUtils.py | 2 +- .../processing/modeler/MultilineTextPanel.py | 2 +- .../modeler/OpenModelFromFileAction.py | 2 +- .../processing/modeler/ProjectProvider.py | 2 +- .../DeletePreconfiguredAlgorithmAction.py | 2 +- .../NewPreconfiguredAlgorithmAction.py | 2 +- .../preconfigured/PreconfiguredAlgorithm.py | 2 +- .../PreconfiguredAlgorithmDialog.py | 2 +- .../PreconfiguredAlgorithmProvider.py | 2 +- .../script/AddScriptFromFileAction.py | 2 +- .../script/AddScriptFromTemplateAction.py | 2 +- .../script/CreateNewScriptAction.py | 2 +- .../processing/script/DeleteScriptAction.py | 2 +- .../processing/script/EditScriptAction.py | 2 +- .../script/OpenScriptFromFileAction.py | 2 +- .../script/ScriptAlgorithmProvider.py | 2 +- .../plugins/processing/script/ScriptEdit.py | 2 +- .../processing/script/ScriptEditorDialog.py | 2 +- .../plugins/processing/script/ScriptUtils.py | 2 +- .../tests/CheckValidityAlgorithm.py | 2 +- python/plugins/processing/tests/GuiTest.py | 2 +- .../plugins/processing/tests/ModelerTest.py | 2 +- .../processing/tests/ProjectProvider.py | 2 +- python/plugins/processing/tests/TestData.py | 2 +- python/plugins/processing/tests/ToolsTest.py | 2 +- .../grass7_algorithms_raster_tests.yaml | 68 +- python/plugins/processing/tools/__init__.py | 2 +- .../plugins/processing/tools/dataobjects.py | 2 +- python/plugins/processing/tools/general.py | 2 +- python/plugins/processing/tools/postgis.py | 2 +- python/plugins/processing/tools/raster.py | 2 +- python/plugins/processing/tools/spatialite.py | 2 +- python/plugins/processing/tools/system.py | 2 +- python/plugins/processing/tools/vector.py | 2 +- python/pyplugin_installer/__init__.py | 2 +- .../qgsstorebadlayerinfo.sip.in | 51 + python/server/server_auto.sip | 1 + python/user.py | 2 +- python/utils.py | 2 +- resources/CMakeLists.txt | 6 + resources/compdcs.csv | 159 + resources/datum_shift.csv | 837 +++ resources/gcs.csv | 514 ++ resources/geoccs.csv | 182 + resources/pcs.csv | 4977 +++++++++++++++++ resources/qgis_global_settings.ini | 18 + resources/vertcs.csv | 205 + rpm/qgis.spec.template | 6 + scripts/generate_test_mask_image.py | 2 +- scripts/mkuidefaults.py | 2 +- scripts/parse_dash_results.py | 2 +- scripts/pyuic-wrapper.py | 2 +- scripts/qgis_srs.sh | 6 +- scripts/sip_include.sh | 10 +- scripts/spell_check/check_spelling.sh | 8 +- scripts/spell_check/spell_test.sh | 6 +- scripts/spell_check/test.sh | 2 +- scripts/verify-indentation.sh | 4 +- scripts/widgets_tree.py | 2 +- .../qgsalgorithmextractbyattribute.cpp | 6 +- .../processing/qgsalgorithmpackage.cpp | 14 + .../qgsalgorithmsaveselectedfeatures.cpp | 2 +- src/analysis/raster/qgsrastercalclexer.ll | 5 + src/analysis/raster/qgsrastercalculator.cpp | 9 +- src/app/CMakeLists.txt | 1 + src/app/layout/qgslayoutatlaswidget.cpp | 2 +- src/app/layout/qgslayoutdesignerdialog.cpp | 6 +- src/app/layout/qgslayoutlabelwidget.cpp | 1 + src/app/layout/qgslayoutmanagerdialog.cpp | 33 +- src/app/layout/qgslayoutmanagerdialog.h | 6 +- src/app/main.cpp | 25 +- src/app/qgisapp.cpp | 172 +- src/app/qgisapp.h | 23 +- src/app/qgsattributetabledialog.cpp | 19 +- src/app/qgsattributetabledialog.h | 4 - src/app/qgsfirstrundialog.cpp | 5 + src/app/qgsfirstrundialog.h | 6 + src/app/qgslabelinggui.cpp | 1 + src/app/qgsmaptoollabel.cpp | 11 +- src/app/qgsmaptoolpinlabels.cpp | 11 +- src/app/qgsmaptoolreshape.cpp | 10 +- src/app/qgsoptions.cpp | 38 +- src/app/qgsoptions.h | 3 - src/app/qgsrulebasedlabelingwidget.cpp | 4 +- src/app/vertextool/qgsvertextool.cpp | 16 +- src/app/vertextool/qgsvertextool.h | 4 +- src/auth/basic/qgsauthbasicmethod.cpp | 26 +- src/auth/oauth2/qgsauthoauth2method.cpp | 89 +- src/core/auth/qgsauthmanager.cpp | 46 +- src/core/auth/qgsauthmanager.h | 4 + src/core/dxf/qgsdxfexport.cpp | 105 +- src/core/effects/qgsblureffect.cpp | 23 +- src/core/effects/qgsblureffect.h | 60 +- src/core/effects/qgsgloweffect.cpp | 27 +- src/core/effects/qgsgloweffect.h | 62 +- src/core/effects/qgsshadoweffect.cpp | 29 +- src/core/effects/qgsshadoweffect.h | 60 +- src/core/expression/qgsexpressionnodeimpl.cpp | 2 + src/core/geometry/qgsgeometry.cpp | 12 +- src/core/geometry/qgsgeometryutils.cpp | 20 +- src/core/layout/qgslayoutexporter.cpp | 12 +- .../layout/qgslayoutitemattributetable.cpp | 68 +- src/core/layout/qgslayoutitemlabel.cpp | 6 +- src/core/layout/qgslayoutmultiframe.cpp | 29 +- src/core/pal/feature.cpp | 161 +- src/core/pal/feature.h | 7 +- src/core/pal/geomfunction.cpp | 2 +- src/core/pal/layer.cpp | 58 +- src/core/pal/layer.h | 18 +- src/core/qgsapplication.cpp | 15 +- src/core/qgsattributeeditorelement.h | 2 +- src/core/qgscolorramp.cpp | 2 +- src/core/qgscoordinatereferencesystem.cpp | 12 +- src/core/qgscoordinatetransform.cpp | 20 +- src/core/qgslabelfeature.h | 16 + src/core/qgslabelingengine.cpp | 47 +- src/core/qgslabelingengine.h | 21 +- src/core/qgslabelsearchtree.cpp | 61 +- src/core/qgslabelsearchtree.h | 13 +- src/core/qgsmaplayer.cpp | 28 +- src/core/qgsmaptopixelgeometrysimplifier.cpp | 8 +- src/core/qgsnetworkaccessmanager.cpp | 5 +- src/core/qgsofflineediting.cpp | 10 + src/core/qgsogrutils.cpp | 103 +- src/core/qgsogrutils.h | 7 + src/core/qgspallabeling.cpp | 113 +- src/core/qgspallabeling.h | 91 +- src/core/qgspointlocator.cpp | 20 +- src/core/qgsrendercontext.h | 55 + src/core/qgssettings.h | 2 +- src/core/qgsspatialindex.cpp | 4 + src/core/qgsstringutils.cpp | 2 +- src/core/qgsvectorfilewriter.cpp | 44 + src/core/qgsvectorlayerdiagramprovider.cpp | 1 - src/core/qgsvectorlayerlabelprovider.cpp | 1 - src/core/raster/qgsrasterdataprovider.cpp | 31 +- src/core/raster/qgsrasterdataprovider.h | 8 +- src/core/raster/qgsrasterinterface.h | 24 +- src/core/raster/qgsrasterlayerrenderer.cpp | 6 + src/core/symbology/qgsarrowsymbollayer.cpp | 6 + src/core/symbology/qgsfillsymbollayer.cpp | 27 +- src/core/symbology/qgsfillsymbollayer.h | 6 +- src/core/symbology/qgsheatmaprenderer.cpp | 8 +- src/core/symbology/qgsheatmaprenderer.h | 2 +- .../symbology/qgsinvertedpolygonrenderer.cpp | 24 +- .../symbology/qgsinvertedpolygonrenderer.h | 2 +- src/core/symbology/qgslinesymbollayer.cpp | 9 + src/core/symbology/qgsnullsymbolrenderer.h | 2 +- .../symbology/qgspointdistancerenderer.cpp | 7 +- src/core/symbology/qgspointdistancerenderer.h | 2 +- src/core/symbology/qgsrenderer.h | 9 +- src/core/symbology/qgsrulebasedrenderer.cpp | 35 +- src/core/symbology/qgsrulebasedrenderer.h | 2 +- src/core/symbology/qgssymbol.cpp | 23 +- src/core/symbology/qgssymbol.h | 2 +- src/crashhandler/qgscrashdialog.cpp | 5 +- src/crashhandler/qgscrashreport.cpp | 1 - src/gui/CMakeLists.txt | 3 +- src/gui/attributetable/qgsdualview.h | 2 - src/gui/editorwidgets/qgsdatetimeedit.cpp | 9 +- .../qgsrelationreferencewidget.cpp | 4 +- .../qgsrelationreferencewidget.h | 2 +- src/gui/effects/qgspainteffectwidget.cpp | 65 +- src/gui/effects/qgspainteffectwidget.h | 9 +- .../layertree/qgslayertreemapcanvasbridge.cpp | 13 +- src/gui/layout/qgslayoutview.cpp | 2 +- src/gui/qgsadvanceddigitizingcanvasitem.cpp | 12 - src/gui/qgsadvanceddigitizingcanvasitem.h | 8 +- src/gui/qgsadvanceddigitizingdockwidget.cpp | 16 + src/gui/qgsadvanceddigitizingdockwidget.h | 12 +- src/gui/qgsattributedialog.h | 1 - src/gui/qgsexpressionbuilderwidget.cpp | 3 +- src/gui/qgsexternalresourcewidget.cpp | 2 +- src/gui/qgsfilewidget.cpp | 2 + src/gui/qgsgui.h | 14 +- src/gui/qgsmaptip.cpp | 9 +- src/gui/qgsmaptool.cpp | 3 +- src/gui/qgsmaptooladvanceddigitizing.h | 4 +- src/gui/qgsmaptoolcapture.cpp | 3 + src/gui/qgsmaptoolidentify.h | 1 - src/gui/qgsnewhttpconnection.cpp | 24 +- src/gui/qgsnewhttpconnection.h | 6 + src/gui/qgsprojectionselectionwidget.cpp | 9 +- src/gui/qgsrasterlayersaveasdialog.cpp | 21 +- src/gui/qgsrasterlayersaveasdialog.h | 2 + src/gui/qgsscalerangewidget.h | 10 + src/gui/qgssnapindicator.cpp | 25 +- src/gui/qgssnapindicator.h | 3 +- src/gui/qgsstatusbar.cpp | 12 + src/gui/qgsstatusbar.h | 12 + src/gui/qgstextformatwidget.cpp | 4 +- .../qgsinvertedpolygonrendererwidget.cpp | 9 + .../qgsinvertedpolygonrendererwidget.h | 2 + .../symbology/qgsrulebasedrendererwidget.cpp | 4 +- .../evisdatabaseconnectiongui.cpp | 2 +- .../qgsgeometrycheckerdialog.cpp | 2 +- .../georeferencer/qgsgeorefplugingui.cpp | 2 +- src/plugins/grass/qgis_grass_test.py | 2 +- .../grass/scripts/db.connect-login.pg.py | 2 +- .../grass/scripts/qgis.v.kernel.rast.py | 2 +- src/plugins/grass/scripts/qgis.v.upgrade.py | 2 +- src/plugins/grass/scripts/r.external.all.py | 2 +- src/plugins/grass/scripts/v.out.ogr.pg.py | 2 +- .../offline_editing_plugin_gui.cpp | 2 +- src/plugins/topology/rulesDialog.cpp | 2 +- src/providers/arcgisrest/CMakeLists.txt | 2 + src/providers/arcgisrest/qgsafsshareddata.cpp | 62 +- src/providers/arcgisrest/qgsamsprovider.cpp | 8 +- src/providers/arcgisrest/qgsamsprovider.h | 2 +- .../arcgisrest/qgsarcgisrestutils.cpp | 19 +- src/providers/gdal/qgsgdalprovider.cpp | 49 +- src/providers/gdal/qgsgdalprovider.h | 4 +- .../grass/qgsgrassrasterprovider.cpp | 13 +- src/providers/grass/qgsgrassrasterprovider.h | 4 +- src/providers/ogr/qgsogrdataitems.cpp | 4 +- src/providers/ogr/qgsogrprovider.cpp | 23 +- src/providers/ogr/qgsogrprovider.h | 2 +- src/providers/postgres/qgspostgresconn.cpp | 4 +- src/providers/postgres/qgspostgresconn.h | 4 +- .../postgres/qgspostgresdataitems.cpp | 8 +- .../postgres/qgspostgresprovider.cpp | 53 +- src/providers/wcs/qgswcsprovider.cpp | 16 +- src/providers/wcs/qgswcsprovider.h | 4 +- src/providers/wfs/qgswfscapabilities.cpp | 35 + src/providers/wfs/qgswfscapabilities.h | 2 + .../wfs/qgswfsdescribefeaturetype.cpp | 22 +- src/providers/wfs/qgswfsdescribefeaturetype.h | 5 +- src/providers/wfs/qgswfsfeatureiterator.cpp | 51 +- src/providers/wfs/qgswfsfeatureiterator.h | 3 +- src/providers/wfs/qgswfsnewconnection.cpp | 10 +- src/providers/wfs/qgswfsprovider.cpp | 73 +- src/providers/wfs/qgswfsrequest.cpp | 5 - src/providers/wfs/qgswfsshareddata.cpp | 78 +- src/providers/wfs/qgswfsshareddata.h | 8 +- src/providers/wms/qgswmsprovider.cpp | 29 +- src/providers/wms/qgswmsprovider.h | 5 +- src/server/CMakeLists.txt | 1 + src/server/qgsconfigcache.cpp | 11 +- src/server/qgsstorebadlayerinfo.cpp | 36 + src/server/qgsstorebadlayerinfo.h | 47 + .../wfs/qgswfsdescribefeaturetype.cpp | 2 +- .../services/wms/qgswmsgetcapabilities.cpp | 28 +- src/server/services/wms/qgswmsgetcontext.cpp | 4 +- src/server/services/wms/qgswmsparameters.cpp | 14 +- src/ui/effects/widget_blur.ui | 40 +- src/ui/effects/widget_glow.ui | 31 +- src/ui/effects/widget_shadoweffect.ui | 31 +- src/ui/qgsfirstrundialog.ui | 126 +- src/ui/qgslabelingwidget.ui | 8 +- src/ui/qgsoptionsbase.ui | 133 +- src/ui/qgsrasterlayersaveasdialogbase.ui | 39 +- src/ui/qgstextformatwidgetbase.ui | 11 + tests/README.md | 8 +- tests/code_layout/acceptable_missing_doc.py | 4 +- tests/code_layout/test_doxygen_layout.sh | 6 +- tests/code_layout/test_qgsdoccoverage.py | 2 +- tests/code_layout/test_qgssipcoverage.py | 2 +- tests/src/analysis/testqgsprocessing.cpp | 4 +- .../src/analysis/testqgsrastercalculator.cpp | 14 + tests/src/app/testqgsmaptoolreshape.cpp | 171 +- tests/src/core/CMakeLists.txt | 1 + .../core/testqgscoordinatereferencesystem.cpp | 18 +- tests/src/core/testqgscoordinatetransform.cpp | 10 +- tests/src/core/testqgsdistancearea.cpp | 2 +- tests/src/core/testqgsdxfexport.cpp | 37 + tests/src/core/testqgsgeometry.cpp | 36 +- tests/src/core/testqgsgeometryutils.cpp | 74 + .../core/testqgsinvertedpolygonrenderer.cpp | 24 +- tests/src/core/testqgslabelingengine.cpp | 637 +++ tests/src/core/testqgslayouttable.cpp | 93 +- tests/src/core/testqgsofflineediting.cpp | 56 +- tests/src/core/testqgsogcutils.cpp | 57 +- tests/src/core/testqgspainteffect.cpp | 12 +- tests/src/core/testqgsstringutils.cpp | 2 + tests/src/core/testqgsvectorfilewriter.cpp | 125 + tests/src/gui/CMakeLists.txt | 1 + .../gui/testqgsrasterlayersaveasdialog.cpp | 145 + .../gui/testqgsrelationreferencewidget.cpp | 34 + tests/src/providers/CMakeLists.txt | 1 + tests/src/python/CMakeLists.txt | 3 +- tests/src/python/featuresourcetestbase.py | 2 +- tests/src/python/offlineditingtestbase.py | 2 +- tests/src/python/provider_python.py | 2 +- tests/src/python/providertestbase.py | 2 +- tests/src/python/qgis_interface.py | 2 +- tests/src/python/qgis_local_server.py | 2 +- tests/src/python/qgis_wrapped_server.py | 2 +- .../src/python/test_authmanager_oauth2_ows.py | 2 +- tests/src/python/test_authmanager_ogr.py | 2 +- .../python/test_authmanager_ogr_postgres.py | 2 +- .../python/test_authmanager_password_ows.py | 2 +- .../test_authmanager_password_postgres.py | 2 +- tests/src/python/test_authmanager_pki_ows.py | 2 +- .../python/test_authmanager_pki_postgres.py | 2 +- tests/src/python/test_authmanager_proxy.py | 2 +- tests/src/python/test_authsettingswidget.py | 2 +- tests/src/python/test_console.py | 2 +- tests/src/python/test_core_additions.py | 2 +- tests/src/python/test_db_manager_gpkg.py | 2 +- tests/src/python/test_db_manager_postgis.py | 2 +- .../src/python/test_db_manager_spatialite.py | 2 +- tests/src/python/test_layer_dependencies.py | 2 +- tests/src/python/test_offline_editing_wfs.py | 2 +- .../python/test_project_storage_postgres.py | 2 +- tests/src/python/test_provider_afs.py | 14 +- tests/src/python/test_provider_db2.py | 2 +- tests/src/python/test_provider_gdal.py | 2 +- tests/src/python/test_provider_memory.py | 2 +- tests/src/python/test_provider_mssql.py | 2 +- tests/src/python/test_provider_ogr.py | 2 +- tests/src/python/test_provider_ogr_gpkg.py | 2 +- tests/src/python/test_provider_ogr_sqlite.py | 2 +- tests/src/python/test_provider_oracle.py | 2 +- tests/src/python/test_provider_postgres.py | 2 +- tests/src/python/test_provider_python.py | 4 +- tests/src/python/test_provider_shapefile.py | 16 +- tests/src/python/test_provider_spatialite.py | 2 +- tests/src/python/test_provider_tabfile.py | 2 +- tests/src/python/test_provider_virtual.py | 2 +- tests/src/python/test_provider_wfs.py | 256 +- tests/src/python/test_provider_wfs_gui.py | 8 +- tests/src/python/test_python_repr.py | 2 +- tests/src/python/test_qgis_local_server.py | 2 +- tests/src/python/test_qgsactionmanager.py | 2 +- .../src/python/test_qgsaggregatecalculator.py | 2 +- tests/src/python/test_qgsannotation.py | 2 +- tests/src/python/test_qgsapplication.py | 2 +- tests/src/python/test_qgsappstartup.py | 2 +- tests/src/python/test_qgsarrowsymbollayer.py | 2 +- tests/src/python/test_qgsattributeform.py | 120 + .../test_qgsattributeformeditorwidget.py | 2 +- .../python/test_qgsattributetableconfig.py | 2 +- .../src/python/test_qgsattributetablemodel.py | 2 +- tests/src/python/test_qgsauthsystem.py | 2 +- tests/src/python/test_qgsauxiliarystorage.py | 2 +- tests/src/python/test_qgsbearingutils.py | 2 +- tests/src/python/test_qgsblendmodes.py | 2 +- tests/src/python/test_qgsbox3d.py | 2 +- .../test_qgscategorizedsymbolrenderer.py | 2 +- tests/src/python/test_qgscheckablecombobox.py | 2 +- tests/src/python/test_qgscolorbutton.py | 2 +- ...ectorcolorramp.py => test_qgscolorramp.py} | 53 +- tests/src/python/test_qgscolorscheme.py | 2 +- .../src/python/test_qgscolorschemeregistry.py | 2 +- tests/src/python/test_qgsconditionalstyle.py | 2 +- .../src/python/test_qgscoordinateformatter.py | 2 +- .../src/python/test_qgscoordinatetransform.py | 2 +- .../test_qgscoordinatetransformcontext.py | 2 +- .../test_qgsdataitemproviderregistry.py | 2 +- tests/src/python/test_qgsdatetimeedit.py | 2 +- .../test_qgsdatetimestatisticalsummary.py | 2 +- tests/src/python/test_qgsdefaultvalue.py | 2 +- .../python/test_qgsdelimitedtextprovider.py | 2 +- .../test_qgsdelimitedtextprovider_wanted.py | 2 +- tests/src/python/test_qgsdistancearea.py | 2 +- tests/src/python/test_qgseditformconfig.py | 2 +- tests/src/python/test_qgseditwidgets.py | 2 +- tests/src/python/test_qgsellipsoidutils.py | 2 +- .../python/test_qgsencodingselectiondialog.py | 2 +- tests/src/python/test_qgsexpression.py | 2 +- .../python/test_qgsexpressionbuilderwidget.py | 2 +- .../src/python/test_qgsexpressionlineedit.py | 2 +- tests/src/python/test_qgsextentgroupbox.py | 2 +- tests/src/python/test_qgsfeature.py | 2 +- tests/src/python/test_qgsfeatureiterator.py | 2 +- tests/src/python/test_qgsfeaturesink.py | 2 +- tests/src/python/test_qgsfeaturesource.py | 2 +- tests/src/python/test_qgsfeedback.py | 2 +- tests/src/python/test_qgsfieldcombobox.py | 2 +- tests/src/python/test_qgsfieldformatters.py | 2 +- tests/src/python/test_qgsfieldmodel.py | 2 +- tests/src/python/test_qgsfields.py | 2 +- tests/src/python/test_qgsfieldvalidator.py | 2 +- tests/src/python/test_qgsfiledownloader.py | 2 +- tests/src/python/test_qgsfileutils.py | 2 +- tests/src/python/test_qgsfillsymbollayers.py | 2 +- tests/src/python/test_qgsfilterlineedit.py | 2 +- tests/src/python/test_qgsfloatingwidget.py | 2 +- tests/src/python/test_qgsfontbutton.py | 2 +- tests/src/python/test_qgsfontutils.py | 2 +- tests/src/python/test_qgsgeometry.py | 27 +- .../test_qgsgeometry_avoid_intersections.py | 2 +- .../test_qgsgeometrygeneratorsymbollayer.py | 2 +- tests/src/python/test_qgsgeometryvalidator.py | 2 +- tests/src/python/test_qgsgeonodeconnection.py | 2 +- .../python/test_qgsgraduatedsymbolrenderer.py | 2 +- tests/src/python/test_qgshighlight.py | 2 +- tests/src/python/test_qgsinterval.py | 2 +- tests/src/python/test_qgsissue7244.py | 2 +- tests/src/python/test_qgsjsonutils.py | 2 +- tests/src/python/test_qgslayerdefinition.py | 2 +- tests/src/python/test_qgslayermetadata.py | 2 +- tests/src/python/test_qgslayertree.py | 2 +- .../test_qgslayertreemapcanvasbridge.py | 2 +- tests/src/python/test_qgslayertreeview.py | 2 +- tests/src/python/test_qgslayout.py | 2 +- tests/src/python/test_qgslayoutaligner.py | 2 +- tests/src/python/test_qgslayoutatlas.py | 2 +- tests/src/python/test_qgslayoutexporter.py | 2 +- tests/src/python/test_qgslayoutframe.py | 2 +- .../src/python/test_qgslayoutgridsettings.py | 2 +- tests/src/python/test_qgslayoutguides.py | 2 +- tests/src/python/test_qgslayouthtml.py | 2 +- tests/src/python/test_qgslayoutitem.py | 2 +- .../test_qgslayoutitempropertiesdialog.py | 2 +- tests/src/python/test_qgslayoutlabel.py | 2 +- tests/src/python/test_qgslayoutlegend.py | 2 +- tests/src/python/test_qgslayoutmanager.py | 2 +- tests/src/python/test_qgslayoutmap.py | 2 +- tests/src/python/test_qgslayoutmapgrid.py | 2 +- tests/src/python/test_qgslayoutpage.py | 2 +- .../python/test_qgslayoutpagecollection.py | 2 +- tests/src/python/test_qgslayoutpicture.py | 2 +- tests/src/python/test_qgslayoutpolygon.py | 2 +- tests/src/python/test_qgslayoutpolyline.py | 2 +- tests/src/python/test_qgslayoutscalebar.py | 2 +- tests/src/python/test_qgslayoutshape.py | 2 +- tests/src/python/test_qgslayoutsnapper.py | 2 +- .../src/python/test_qgslayoutunitscombobox.py | 2 +- tests/src/python/test_qgslayoutview.py | 2 +- tests/src/python/test_qgslinesegment.py | 2 +- tests/src/python/test_qgslinesymbollayers.py | 2 +- tests/src/python/test_qgslocator.py | 2 +- tests/src/python/test_qgslogger.py | 2 +- tests/src/python/test_qgsmapcanvas.py | 2 +- .../python/test_qgsmapcanvasannotationitem.py | 2 +- tests/src/python/test_qgsmaplayer.py | 26 +- tests/src/python/test_qgsmaplayeraction.py | 2 +- tests/src/python/test_qgsmaplayermodel.py | 2 +- .../src/python/test_qgsmaplayerproxymodel.py | 2 +- tests/src/python/test_qgsmaplayerstore.py | 2 +- tests/src/python/test_qgsmaprenderer.py | 2 +- tests/src/python/test_qgsmaprenderercache.py | 2 +- .../src/python/test_qgsmapthemecollection.py | 2 +- tests/src/python/test_qgsmapunitscale.py | 2 +- tests/src/python/test_qgsmargins.py | 2 +- .../python/test_qgsmarkerlinesymbollayer.py | 2 +- tests/src/python/test_qgsmessagelog.py | 2 +- tests/src/python/test_qgsmetadatabase.py | 2 +- tests/src/python/test_qgsmetadatawidget.py | 2 +- .../src/python/test_qgsmultiedittoolbutton.py | 2 +- .../python/test_qgsnetworkcontentfetcher.py | 2 +- .../test_qgsnetworkcontentfetcherregistry.py | 2 +- .../test_qgsnetworkcontentfetchertask.py | 2 +- .../test_qgsnewgeopackagelayerdialog.py | 2 +- tests/src/python/test_qgsnoapplication.py | 2 +- .../src/python/test_qgsnullsymbolrenderer.py | 2 +- tests/src/python/test_qgsopacitywidget.py | 2 +- tests/src/python/test_qgsowsconnection.py | 2 +- tests/src/python/test_qgspallabeling_base.py | 2 +- .../src/python/test_qgspallabeling_canvas.py | 2 +- .../src/python/test_qgspallabeling_layout.py | 2 +- .../python/test_qgspallabeling_placement.py | 2 +- .../src/python/test_qgspallabeling_server.py | 2 +- tests/src/python/test_qgspallabeling_tests.py | 2 +- tests/src/python/test_qgspanelwidget.py | 2 +- tests/src/python/test_qgspanelwidgetstack.py | 2 +- tests/src/python/test_qgspoint.py | 2 +- .../python/test_qgspointclusterrenderer.py | 2 +- .../test_qgspointdisplacementrenderer.py | 2 +- tests/src/python/test_qgspostgresdomain.py | 2 +- .../src/python/test_qgspostgrestransaction.py | 2 +- .../src/python/test_qgsprocessingalgrunner.py | 2 +- tests/src/python/test_qgsprocessinginplace.py | 2 +- .../test_qgsprocessingrecentalgorithmslog.py | 2 +- tests/src/python/test_qgsproject.py | 2 +- .../test_qgsprojectionselectionwidgets.py | 2 +- tests/src/python/test_qgsprojectmetadata.py | 2 +- tests/src/python/test_qgsrange.py | 2 +- tests/src/python/test_qgsrangewidgets.py | 2 +- .../src/python/test_qgsrasterbandcombobox.py | 2 +- .../python/test_qgsrastercolorrampshader.py | 2 +- tests/src/python/test_qgsrasterfilewriter.py | 2 +- .../python/test_qgsrasterfilewritertask.py | 2 +- tests/src/python/test_qgsrasterlayer.py | 2 +- tests/src/python/test_qgsrasterrange.py | 2 +- .../test_qgsrasterrerderer_createsld.py | 2 +- tests/src/python/test_qgsratiolockbutton.py | 2 +- tests/src/python/test_qgsreadwritecontext.py | 2 +- tests/src/python/test_qgsrectangle.py | 2 +- .../src/python/test_qgsreferencedgeometry.py | 2 +- tests/src/python/test_qgsrelation.py | 2 +- .../src/python/test_qgsrelationeditwidget.py | 2 +- tests/src/python/test_qgsrelationmanager.py | 2 +- tests/src/python/test_qgsrendercontext.py | 2 +- tests/src/python/test_qgsrenderer.py | 2 +- tests/src/python/test_qgsreport.py | 2 +- tests/src/python/test_qgsrulebasedrenderer.py | 2 +- .../python/test_qgssearchwidgettoolbutton.py | 2 +- .../src/python/test_qgssearchwidgetwrapper.py | 2 +- tests/src/python/test_qgsserver.py | 2 +- .../python/test_qgsserver_accesscontrol.py | 2 +- .../test_qgsserver_accesscontrol_wcs.py | 2 +- .../test_qgsserver_accesscontrol_wfs.py | 2 +- ...sserver_accesscontrol_wfs_transactional.py | 2 +- .../test_qgsserver_accesscontrol_wms.py | 2 +- ...rver_accesscontrol_wms_getlegendgraphic.py | 2 +- .../src/python/test_qgsserver_cachemanager.py | 2 +- .../python/test_qgsserver_locale_override.py | 2 +- tests/src/python/test_qgsserver_modules.py | 2 +- tests/src/python/test_qgsserver_plugins.py | 2 +- .../src/python/test_qgsserver_projectutils.py | 2 +- tests/src/python/test_qgsserver_request.py | 2 +- tests/src/python/test_qgsserver_response.py | 2 +- tests/src/python/test_qgsserver_security.py | 2 +- tests/src/python/test_qgsserver_services.py | 2 +- tests/src/python/test_qgsserver_settings.py | 2 +- tests/src/python/test_qgsserver_wfs.py | 9 +- tests/src/python/test_qgsserver_wfst.py | 2 +- tests/src/python/test_qgsserver_wms.py | 10 +- .../test_qgsserver_wms_getfeatureinfo.py | 2 +- .../test_qgsserver_wms_getlegendgraphic.py | 2 +- tests/src/python/test_qgsserver_wms_getmap.py | 45 +- .../src/python/test_qgsserver_wms_getprint.py | 170 +- tests/src/python/test_qgsserver_wmts.py | 2 +- tests/src/python/test_qgsserverlogger.py | 2 +- tests/src/python/test_qgssettings.py | 2 +- tests/src/python/test_qgsshortcutsmanager.py | 2 +- .../python/test_qgssimplelinesymbollayer.py | 2 +- .../python/test_qgssinglesymbolrenderer.py | 2 +- .../python/test_qgssourceselectprovider.py | 2 +- tests/src/python/test_qgsspatialindex.py | 2 +- tests/src/python/test_qgssqlstatement.py | 2 +- .../test_qgsstringstatisticalsummary.py | 2 +- tests/src/python/test_qgsstringutils.py | 2 +- tests/src/python/test_qgsstylemodel.py | 2 +- tests/src/python/test_qgssvgcache.py | 2 +- tests/src/python/test_qgssvgsourcelineedit.py | 2 +- tests/src/python/test_qgssymbol.py | 2 +- tests/src/python/test_qgssymbolbutton.py | 2 +- .../test_qgssymbolexpressionvariables.py | 2 +- tests/src/python/test_qgssymbollayer.py | 2 +- .../python/test_qgssymbollayer_createsld.py | 2 +- .../src/python/test_qgssymbollayer_readsld.py | 2 +- tests/src/python/test_qgssymbollayerutils.py | 2 +- tests/src/python/test_qgstaskmanager.py | 2 +- tests/src/python/test_qgstextformatwidget.py | 10 +- tests/src/python/test_qgstextrenderer.py | 2 +- tests/src/python/test_qgstreewidgetitem.py | 2 +- tests/src/python/test_qgsunittypes.py | 2 +- tests/src/python/test_qgsvectorfilewriter.py | 2 +- .../python/test_qgsvectorfilewritertask.py | 2 +- tests/src/python/test_qgsvectorlayer.py | 2 +- tests/src/python/test_qgsvectorlayercache.py | 2 +- .../python/test_qgsvectorlayereditbuffer.py | 2 +- ...est_qgsvectorlayerselectedfeaturesource.py | 2 +- tests/src/python/test_qgsvectorlayertools.py | 2 +- tests/src/python/test_qgsvectorlayerutils.py | 2 +- .../python/test_qgsvirtuallayerdefinition.py | 2 +- tests/src/python/test_qgsvirtuallayertask.py | 2 +- tests/src/python/test_qgsxmlutils.py | 2 +- tests/src/python/test_qgsziputils.py | 2 +- tests/src/python/test_qgszonalstatistics.py | 2 +- tests/src/python/test_syntactic_sugar.py | 2 +- tests/src/python/utilities.py | 2 +- .../expected_painteffect_blur.png | Bin 6302 -> 6008 bytes .../expected_painteffect_composer.png | Bin 48589 -> 50665 bytes .../expected_painteffect_dropshadow.png | Bin 4203 -> 4975 bytes .../expected_painteffect_outerglow.png | Bin 1773 -> 2471 bytes .../expected_painteffect_stack.png | Bin 6052 -> 5417 bytes .../sp_label_curved_zero_width_char.png | Bin 8497 -> 8529 bytes .../expected_label_adjacent_parts.png | Bin 0 -> 2115 bytes .../expected_label_curved_label_above_1.png | Bin 0 -> 6701 bytes .../expected_label_curved_label_below_1.png | Bin 0 -> 6612 bytes ...cted_label_curved_label_small_segments.png | Bin 0 -> 2860 bytes ...xpected_label_curved_negative_distance.png | Bin 0 -> 2950 bytes ...cted_label_multipart_touching_branches.png | Bin 0 -> 2939 bytes ...xpected_label_multipart_touching_lines.png | Bin 0 -> 2761 bytes .../expected_label_rotate_with_reproject.png | Bin 0 -> 2110 bytes .../expected_parallel_prefer_above.png | Bin 0 -> 2175 bytes .../WMS_GetMap_Filter6/WMS_GetMap_Filter6.png | Bin 0 -> 2831 bytes .../WMS_GetPrint_Basic_Pdf.png | Bin 0 -> 262127 bytes .../WMS_GetPrint_Basic_Pdf_mask.png | Bin 0 -> 53038 bytes .../WMS_GetPrint_Selection_Pdf.png | Bin 0 -> 301478 bytes .../WMS_GetPrint_Selection_Pdf_mask.png | Bin 0 -> 396418 bytes .../expected_inverted_polys_curved.png | Bin .../expected_inverted_polys_curved.png | Bin 641536 -> 0 bytes ...expected_inverted_polys_graduated_mask.png | Bin 48333 -> 48719 bytes .../expected_inverted_polys_preprocess.png | Bin ...xpected_inverted_polys_preprocess_mask.png | Bin 0 -> 21576 bytes .../expected_inverted_polys_preprocess.png | Bin 25224 -> 0 bytes .../expected_inverted_polys_projection.png | Bin ...xpected_inverted_polys_projection_mask.png | Bin 0 -> 18581 bytes .../expected_inverted_polys_projection.png | Bin 21778 -> 0 bytes .../expected_inverted_polys_projection2.png | Bin ...pected_inverted_polys_projection2_mask.png | Bin 0 -> 17782 bytes .../expected_inverted_polys_projection2.png | Bin 20737 -> 0 bytes .../expected_inverted_polys_rotation.png | Bin 0 -> 32877 bytes .../expected_inverted_polys_single.png | Bin .../expected_inverted_polys_single_mask.png | Bin 0 -> 22492 bytes .../expected_inverted_polys_single.png | Bin 26407 -> 0 bytes tests/testdata/layout_atlas_table.qgs | 539 ++ tests/testdata/multipatch.shp | Bin 0 -> 376 bytes tests/testdata/multipatch.shx | Bin 0 -> 108 bytes tests/testdata/points_gpkg.gpkg | Bin 139264 -> 139264 bytes .../fcgi/scripts/spawn_fcgi_mac.sh | 8 +- .../lighttpd/scripts/lighttpd_debian.sh | 4 +- .../lighttpd/scripts/lighttpd_mac.sh | 6 +- .../qgis_server/bug_gh29767_double_vfield.qgs | 711 +++ .../bug_gh30264_empty_layer_wrong_bbox.gpkg | Bin 0 -> 98304 bytes .../bug_gh30264_empty_layer_wrong_bbox.qgs | 373 ++ tests/testdata/qgis_server/getcontext.txt | 8 +- .../qgis_server/test_project_wms_filter.gpkg | Bin 0 -> 98304 bytes .../qgis_server/test_project_wms_filter.qgs | 306 + .../test_project_wms_invalid_layers.qgs | 1941 +++++++ ...scribeFeatureType_1_1_0_virtual_fields.txt | 21 + .../wms_getcapabilities_empty_layer.txt | 132 + .../PluginPathTest/__init__.py | 2 +- 1043 files changed, 18511 insertions(+), 2226 deletions(-) create mode 100644 python/gui/auto_additions/qgsgui.py rename python/plugins/processing/algs/grass7/description/{r.sun.txt => r.sun.incidout.txt} (88%) create mode 100644 python/plugins/processing/algs/grass7/description/r.sun.insoltime.txt create mode 100644 python/server/auto_generated/qgsstorebadlayerinfo.sip.in create mode 100644 resources/compdcs.csv create mode 100644 resources/datum_shift.csv create mode 100644 resources/gcs.csv create mode 100644 resources/geoccs.csv create mode 100644 resources/pcs.csv create mode 100644 resources/vertcs.csv create mode 100644 src/server/qgsstorebadlayerinfo.cpp create mode 100644 src/server/qgsstorebadlayerinfo.h create mode 100644 tests/src/gui/testqgsrasterlayersaveasdialog.cpp create mode 100644 tests/src/python/test_qgsattributeform.py rename tests/src/python/{test_qgsvectorcolorramp.py => test_qgscolorramp.py} (90%) create mode 100644 tests/testdata/control_images/labelingengine/expected_label_adjacent_parts/expected_label_adjacent_parts.png create mode 100644 tests/testdata/control_images/labelingengine/expected_label_curved_label_above_1/expected_label_curved_label_above_1.png create mode 100644 tests/testdata/control_images/labelingengine/expected_label_curved_label_below_1/expected_label_curved_label_below_1.png create mode 100644 tests/testdata/control_images/labelingengine/expected_label_curved_label_small_segments/expected_label_curved_label_small_segments.png create mode 100644 tests/testdata/control_images/labelingengine/expected_label_curved_negative_distance/expected_label_curved_negative_distance.png create mode 100644 tests/testdata/control_images/labelingengine/expected_label_multipart_touching_branches/expected_label_multipart_touching_branches.png create mode 100644 tests/testdata/control_images/labelingengine/expected_label_multipart_touching_lines/expected_label_multipart_touching_lines.png create mode 100644 tests/testdata/control_images/labelingengine/expected_label_rotate_with_reproject/expected_label_rotate_with_reproject.png create mode 100644 tests/testdata/control_images/labelingengine/expected_parallel_prefer_above/expected_parallel_prefer_above.png create mode 100644 tests/testdata/control_images/qgis_server/WMS_GetMap_Filter6/WMS_GetMap_Filter6.png create mode 100644 tests/testdata/control_images/qgis_server/WMS_GetPrint_Basic_Pdf/WMS_GetPrint_Basic_Pdf.png create mode 100644 tests/testdata/control_images/qgis_server/WMS_GetPrint_Basic_Pdf/WMS_GetPrint_Basic_Pdf_mask.png create mode 100644 tests/testdata/control_images/qgis_server/WMS_GetPrint_Selection_Pdf/WMS_GetPrint_Selection_Pdf.png create mode 100644 tests/testdata/control_images/qgis_server/WMS_GetPrint_Selection_Pdf/WMS_GetPrint_Selection_Pdf_mask.png rename tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_curved/{default => }/expected_inverted_polys_curved.png (100%) delete mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_curved/precise/expected_inverted_polys_curved.png rename tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/{default => }/expected_inverted_polys_preprocess.png (100%) create mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/expected_inverted_polys_preprocess_mask.png delete mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/precise/expected_inverted_polys_preprocess.png rename tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/{default => }/expected_inverted_polys_projection.png (100%) create mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/expected_inverted_polys_projection_mask.png delete mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/precise/expected_inverted_polys_projection.png rename tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/{default => }/expected_inverted_polys_projection2.png (100%) create mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/expected_inverted_polys_projection2_mask.png delete mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/precise/expected_inverted_polys_projection2.png create mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_rotation/expected_inverted_polys_rotation.png rename tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/{default => }/expected_inverted_polys_single.png (100%) create mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/expected_inverted_polys_single_mask.png delete mode 100644 tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/precise/expected_inverted_polys_single.png create mode 100644 tests/testdata/layout_atlas_table.qgs create mode 100644 tests/testdata/multipatch.shp create mode 100644 tests/testdata/multipatch.shx create mode 100644 tests/testdata/qgis_server/bug_gh29767_double_vfield.qgs create mode 100644 tests/testdata/qgis_server/bug_gh30264_empty_layer_wrong_bbox.gpkg create mode 100644 tests/testdata/qgis_server/bug_gh30264_empty_layer_wrong_bbox.qgs create mode 100644 tests/testdata/qgis_server/test_project_wms_filter.gpkg create mode 100644 tests/testdata/qgis_server/test_project_wms_filter.qgs create mode 100644 tests/testdata/qgis_server/test_project_wms_invalid_layers.qgs create mode 100644 tests/testdata/qgis_server/wfs_describeFeatureType_1_1_0_virtual_fields.txt create mode 100644 tests/testdata/qgis_server/wms_getcapabilities_empty_layer.txt diff --git a/.ci/travis/scripts/ctest2travis.py b/.ci/travis/scripts/ctest2travis.py index 2462bb5583..e6cbe1e07d 100755 --- a/.ci/travis/scripts/ctest2travis.py +++ b/.ci/travis/scripts/ctest2travis.py @@ -22,7 +22,7 @@ __author__ = 'Matthias Kuhn' __date__ = 'March 2017' __copyright__ = '(C) 2017, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # This script parses output from ctest and injects # diff --git a/.docker/qgis_resources/test_runner/qgis_setup.sh b/.docker/qgis_resources/test_runner/qgis_setup.sh index 91df75bf26..12abaa83b5 100644 --- a/.docker/qgis_resources/test_runner/qgis_setup.sh +++ b/.docker/qgis_resources/test_runner/qgis_setup.sh @@ -38,7 +38,7 @@ printf "[qgis]\n" >> $CONF_MASTER_FILE SHOW_TIPS=$(qgis --help 2>&1 | head -2 | grep 'QGIS - ' | perl -npe 'chomp; s/QGIS - (\d+)\.(\d+).*/showTips\1\2=false/') printf "%s\n\n" "$SHOW_TIPS" >> $CONF_MASTER_FILE -if [ -n "$PLUGIN_NAME" ]; then +if [[ -n "$PLUGIN_NAME" ]]; then # Enable plugin printf '[PythonPlugins]\n' >> $CONF_MASTER_FILE printf "%s=true\n\n" "$PLUGIN_NAME" >> $CONF_MASTER_FILE diff --git a/.travis.yml b/.travis.yml index 879da56920..a3646681df 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,6 +48,8 @@ matrix: # CODE LAYOUT ########################################################## - os: linux + dist: xenial + name: code layout 👗 if: type != cron env: - TRAVIS_CONFIG=code_layout @@ -55,7 +57,6 @@ matrix: apt: sources: - sourceline: 'ppa:jonathonf/backports' # silversearcher-ag backport - - sourceline: 'ppa:sergey-dryabzhinsky/packages' # doxygen packages: - doxygen - graphviz diff --git a/CMakeLists.txt b/CMakeLists.txt index f8f73a31ea..5be19ed1ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ SET(CMAKE_LINK_DEPENDS_NO_SHARED ON) # Project and version SET(CPACK_PACKAGE_VERSION_MAJOR "3") SET(CPACK_PACKAGE_VERSION_MINOR "4") -SET(CPACK_PACKAGE_VERSION_PATCH "8") +SET(CPACK_PACKAGE_VERSION_PATCH "9") SET(COMPLETE_VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}) SET(RELEASE_NAME "Madeira") PROJECT(qgis VERSION ${COMPLETE_VERSION}) diff --git a/ChangeLog b/ChangeLog index 2bc043d8cd..9a05a28993 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1375 @@ +nirvn <nirvn.asia@gmail.com> 2019-06-21 + + [ui] Fix undersized labelling engine settings button on hidpi screens + +Merge: a4645f6954 313fc088cf +Alessandro Pasotti <elpaso@itopen.it> 2019-06-21 + + Merge pull request #30291 from elpaso/bugfix-gh30264-wms-bbox-wrong-transform-empty-layers-3_4 + + Server wms bbox wrong transform on empty layers + +Juergen E. Fischer <jef@norbit.de> 2019-06-20 + + osgeo4w: change start directory of shortcuts to 'my documents' + + (cherry picked from commit 3c57d28cfabf615f29af51a332db5ef51bd191f0) + +Juergen E. Fischer <jef@norbit.de> 2019-05-17 + + windows: fix retrieval of user name and full name with special characters + + (cherry picked from commit b20e93c8e2a68639b37fac227c38ff1da70a29c7) + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-20 + + Update reference file + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-03 + + [processing] Drop existing fid columns when running Package Layers algorithm + + Many layer sources have fid fields which are not compatible with gpkg + requirements, so it's safest to just recreate these anew. + + Fixes errors when packaging certain source layers. + +Tom Elwertowski <telwertowski@comcast.net> 2019-06-20 + + macOS needs path to GEOS framework for PAL + +David Signer <david@opengis.ch> 2019-06-20 + + const copy before for loop + +David Signer <david@opengis.ch> 2019-06-20 + + tests for removing constraints on provider default value + +David Signer <david@opengis.ch> 2019-06-20 + + remove constrainst of fields that use defaultValueClauses from provider on original + + fixes #28122 + +Blottiere Paul <blottiere.paul@gmail.com> 2019-06-20 + + Replace shared pointer with unique pointer + +Blottiere Paul <blottiere.paul@gmail.com> 2019-06-20 + + Add unit test + +Blottiere Paul <blottiere.paul@gmail.com> 2019-06-20 + + Add QLongLong support. Fixes #30263 + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-20 + + Merge pull request #30271 from elpaso/bugfix-gh30264-wms-bbox-wrong-transform-empty-layers + + Server wms bbox wrong transform on empty layers + + Cherry-pick from master 0290342e6e + +Merge: 95271e2776 5c1fd63a88 +Denis Rouzaud <denis.rouzaud@gmail.com> 2019-06-20 + + Merge pull request #30287 from qgis/backport-30269-to-release-3_4 + + [Backport release-3_4] do not use unique_ptr for QGraphicsItem + +Denis Rouzaud <denis.rouzaud@gmail.com> 2019-06-19 + + do not hold a pointer to an QGraphicsItem within a QGraphicsItem + + since map canvas is deleting them all, this is causing a crash when trying to delete the already deleted item in the parent item + +Denis Rouzaud <denis.rouzaud@gmail.com> 2019-06-19 + + do not use unique_ptr for QGraphicsItem + + since the ownership of the item is transferred to the scene + this leads to a crash when deleting the object holding the pointer + + since the ownership is transferred back when removing the item, one should + take care of resetting the pointer no canvas deletion + + this should fix #28962 + +Merge: d367269451 d10e0c42bc +Matthias Kuhn <matthias@opengis.ch> 2019-06-20 + + Merge pull request #30285 from qgis/backport-30276-to-release-3_4 + + [Backport release-3_4] Fix crash in raster calculator + +Juergen E. Fischer <jef@norbit.de> 2019-06-20 + + fix build on xenial (Qt <5.6) + +Matthias Kuhn <matthias@opengis.ch> 2019-06-20 + + Improved fix + +Matthias Kuhn <matthias@opengis.ch> 2019-06-19 + + Do not assume we can randomly access std::vector elements without pushing them + + Fix #30232 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-20 + + [needs-docs] [labeling] Allow data defined control over line placement options + + Allows users to override the line placement settings (e.g. + above/below/on line options) on a per-feature basis. Somehow + this one was the only(?) setting from labeling which + was missing a data defined control... + + (cherry picked from commit 3bd3aba25b60f32c2170e519a5e9b37249d49be2) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-20 + + Fix priority of parallel placements + + Ensure that above line placement is preferred when both above + and below line placements are valid + + (cherry picked from commit 04c51db5515c6228301e9ef503016f4d513783a5) + +Harrissou Sant-anna <delazj@gmail.com> 2019-06-17 + + Add tooltip to file selector widget + +lbartoletti <loic.bartoletti@oslandia.com> 2019-06-18 + + more tests + +lbartoletti <loic.bartoletti@oslandia.com> 2019-06-06 + + Fix reshape for snapped point with Z and add test + +Merge: c23df6959e 98ef11b0f6 +Matthias Kuhn <matthias@opengis.ch> 2019-06-18 + + Merge pull request #30259 from qgis/backport-30253-to-release-3_4 + + [Backport release-3_4] Synchronize status bar messages + +Merge: a8c171a9ae 004d3f842b +Matthias Kuhn <matthias@opengis.ch> 2019-06-18 + + Merge pull request #30256 from qgis/backport-30255-to-release-3_4 + + [Backport release-3_4] update crash reports for github + +Matthias Kuhn <matthias@opengis.ch> 2019-06-17 + + Fix setStatusTip + + Fixes #30249 + +Juergen E. Fischer <jef@norbit.de> 2019-06-17 + + update crash reports for github + +Juergen E. Fischer <jef@norbit.de> 2019-06-17 + + wfs provider: fix invalid feature id assignment (fixes #29146) + + (cherry picked from commit 62b24064a27c0c4b6a6a4d918a27c48ae3c8551b) + +Jorge Gustavo Rocha <jgr@di.uminho.pt> 2019-06-14 + + show version information on std::cout on Windows + +Jorge Gustavo Rocha <jgr@di.uminho.pt> 2019-06-14 + + output usage() and version() to stdout + +Jorge Gustavo Rocha <jgr@di.uminho.pt> 2019-06-13 + + Add missing entry to usage; replace QStringList by QString + +Jorge Gustavo Rocha <jgr@di.uminho.pt> 2019-06-13 + + add --version|-v command line option + +Merge: cdaec4aa4c 2ba1a9381e +Alessandro Pasotti <elpaso@itopen.it> 2019-06-17 + + Merge pull request #30205 from elpaso/pg-oid-backport + + Pg oid backport + +Merge: 271deffc02 7caa167066 +Matthias Kuhn <matthias@opengis.ch> 2019-06-17 + + Merge pull request #30183 from m-kuhn/backport-30173-to-release-3_4 + + [dbmanager] allow to import GEOMETRY tables + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-16 + + Fix collecting geometries when one of the added geometries is already multi-part + + Fixes #30208 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-16 + + [processing] Fix missing default value for Select by Expression + + Fixes #30218 + +Merge: b8e9ed85cb a8323a551e +rldhont <rldhont@gmail.com> 2019-06-15 + + Merge pull request #30224 from rldhont/server-getcontext-fix-hidden-release-3_4 + + [Backport release-3_4]GetContext: Fix hidden attribute value based on tree layer visibility + +Harrissou Sant-anna <delazj@gmail.com> 2019-06-06 + + Update help Url for Core plugins in official doc + + (cherry picked from commit 352423e443398b57493a67d6fe0bc00b76a34cd4) + +Matthias Kuhn <matthias@opengis.ch> 2019-06-14 + + Allow selecting "no projection" as default for new projects + +Matthias Kuhn <matthias@opengis.ch> 2019-06-14 + + Show "no CRS" option in dialog when appropriate + + The projection selection widget (combobox) has a flag `CrsNotSet` that allows showing an additional entry for selection no CRS. + The projection selection dialog also has this option (setShowNoProjection). However, a dialog started from a widget with the option + set did not have this option set up to now. + +rldhont <rldhont@gmail.com> 2019-06-14 + + [Test][Server] GetContext: Fix hidden attribute + +rldhont <rldhont@gmail.com> 2019-06-14 + + [Bugfix][Server] GetContext: Fix hidden attribute value based on tree layer visibility + +Merge: 951116894a ea5bcdc67d +rldhont <rldhont@gmail.com> 2019-06-14 + + Merge pull request #9692 from rldhont/fix-regression-server-print-selection-pdf-release-3_4 + + Fix regression server print selection pdf release 3.4 + +Larry Shaffer <lshaffer@boundlessgeo.com> 2019-06-07 + + [oauth2] Remove call to override cursor during token refresh + + Unsafe to work with main GUI thread from background auth threads. + +Larry Shaffer <lshaffer@boundlessgeo.com> 2019-06-06 + + [oauth2] Fix token refresh timeout cancellation with singleshot timer + + Also, avoid O2 library error by checking for refresh token and URL + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-10 + + [processing] Nicer strings, default values for select/extract by attribute + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-10 + + [processing] Fix exception in select by expression using not equal to operator + + Fixes #30135 + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-13 + + Merge pull request #30192 from elpaso/pg-oid + + Use Oid alias instead of unsigned int in PG provider + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-13 + + Merge pull request #30184 from elpaso/bugfix-gh30041-pg-oid-overflow + + An attempt to fix oid overflow in regclass + + Cherry-picked from master ffe3c31c5c + +Matthias Kuhn <matthias@opengis.ch> 2019-06-12 + + fix backport merge conflict issues + +Merge: dc84c873cd 54d05e54fb +Matthias Kuhn <matthias@opengis.ch> 2019-06-12 + + Merge pull request #30172 from m-kuhn/backport-30079-to-release-3_4 + + Backport #30079 to release 3 4 + +olivierdalang <olivier.dalang@gmail.com> 2019-06-05 + + [dbmanager] allow to import GEOMETRY tables + + UI is similar to the browser, where generic geometry tables + are display several times, one for each type. + +Matthias Kuhn <matthias@opengis.ch> 2019-06-11 + + Update src/gui/qgsmaptoolcapture.cpp + +olivierdalang <olivier.dalang@gmail.com> 2019-06-05 + + adapt to review + +olivierdalang <olivier.dalang@gmail.com> 2019-06-04 + + [cad] fix graphical glitches + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-11 + + Only use internal crs definition files for GDAL >= 3 builds + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-04 + + Fix caching of coordinate transforms without authid strings + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-04 + + Update some test results to pass with GDAL 3/proj 6 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-04 + + Disable a test which has no meaning under gdal 3.0 + + GDAL_FIX_ESRI_WKT is no longer a thing with GDAL 3.0 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-04 + + Package internal version of older gdal crs .csv files + + These have been removed in GDAL 3.0, yet we depend on them for + population of the internal QGIS srs database. + + Accordingly, grab a copy from the gdal archives and package them + internally, to ensure that they are available for 3.4 to use + even when build against gdal 3.0. + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-10 + + Sipify + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-03 + + Fix Travis build + + (cherry picked from commit 942827ba527167a5cc87a916d1a613d155bd54be) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-03 + + Dox + + (cherry picked from commit a98d12e1e0e9594fb86e8563e7e38b940c4e3b1a) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-03 + + [labeling] Fix incorrect bounding box of labels used when + map is rotated + + Fixes #24680 + + (cherry picked from commit 1bc716fc61077bd0bd3fd28c3889fc12dbd4f6f0) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-03 + + [labeling] Fix cannot use labeling map tools when canvas is rotated + + Fixes #25384 + + (cherry picked from commit 004b7d879adb1fdec1903cc0a146aef1cb11fd06) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-03 + + Add some unit tests for labeling results + + (cherry picked from commit 70a07f930e3e95f077f3f5aa22616d0b6968d1a0) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-30 + + Tweak names + + (cherry picked from commit 789a758464a2797b09fa919393091a38a1240771) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-29 + + Don't limit label distances to postive values + + Sometimes it's useful to have negative distances, as a 0 distance + can still be quite far from line features for some font families. + + (cherry picked from commit 3cb3676329b21dcaa7ab658aed992052a6b7660f) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-29 + + Fix warning + + (cherry picked from commit 0458e08c99d558d7cba43881dbe0476ce859171a) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + [labeling] Fix curved labels sometimes placed below line even when + set to above line only + + (cherry picked from commit 10c4bb9f9bdf2fa2f7b5a494a8f9e9459f19150d) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + Remove unused calculation + + (cherry picked from commit 50315c4a334e696a036121dd4f1bbc31ea3e2a44) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + Tweak curved label cost of placing away from center (increase cost slightly to encourage more central placements) + + (cherry picked from commit b04374d46f82bcafece9a0ed0c6d1fce2e192c76) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-29 + + [labeling] Update confusing/vague variable names + + (cherry picked from commit f9b8c6ffa3fa631644789090dd22adaaa79d7536) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-29 + + [labeling] Fix curved labeling fails when line feature geometry + begins with small segments + + Fixes #28699 + + (cherry picked from commit 328b0afa6ed7d6a45c4dcdf832bd0835b1df0f11) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-29 + + Avoid redundant calculation in QgsMapToPixelSimplifier + + (cherry picked from commit fcacd00a3053fc059dff0a70a4336eff9025a401) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + Remove impossible to hit code path - distance is never < 0 + + (cherry picked from commit 3d9386b11b26a96996c55555e73de73c94f1b9e6) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-29 + + Update for c++11 + + (cherry picked from commit b334fc4dc8ec78480b468da1732b79ac0da53ce7) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + [labeling] Don't waste time trying to generate curved labels on lines + where the label length is greater then the line length + + (cherry picked from commit e1bd4e921018542671aa70eb626fbf33d7e2acb1) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + Optimise method + + Avoid duplicate calculations + + (cherry picked from commit e227e93d0b0c7345613669771da8902fe5ed5703) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-29 + + [labeling] Ensure "merge connected features" setting works correctly + with line networks that contains forks and branches + + And simplify memory management + + Refs #12173 + + (cherry picked from commit e0aa09ce189a665eb26a4e5071145bca7d06d224) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-29 + + [labeling] Fix missing labels when multilinestring features are used in + conjunction with the "merge connected lines" setting + + Refs #12173 + + (cherry picked from commit 7213030ad9556b2da6f74cd9242d5e9e9efaed07) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + Fix offset labels from reprojected layers when map is rotated + + Fixes #24796 + + (cherry picked from commit 7f8d43eb9bb1b99a75709fb796b487e3157ecec5) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + Fix labeling ignores "label per part" setting when geometry parts + are adjacent + + Fixes #26763 + + (cherry picked from commit 4cb1213efd245ea05b166950d050e1780c340c9f) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-07 + + For xyz tiles, disable smooth pixmap transform when + we are rendering at native tile resolutions (or just close enough to) + + This allows pixel-perfect rendering of tiles at native resolutions + + (cherry picked from commit 1c9586a73289e933ad37da97509140029ca3f076) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-10 + + [layouts] Fix attribute table filtering to items within atlas feature + when atlas feature has a different CRS to table layer + + And greatly improve performance when using an attribute table + filtered to the atlas feature + + (cherry picked from commit 3cad7ed10681d157c384aeb3e67ec90e65dc44c1) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-07 + + [layouts] Fix filtering of attribute table to visible features + when linked map is rotated + + The rotation wasn't being taken into account, which meant that + visible features weren't shown (and vice versa) + + (cherry picked from commit 762ea69cd2e90eed8779908d87fa373421264eeb) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-10 + + Sipify + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-07 + + Avoid sqlite database lookup on EVERY https network request + + Whenever a https network request is created, QgsAuthManager::sslCertCustomConfigByHost + is used to alter the ssl configuration according to config + stored within the sqlite authentication database. This results + in a database query being created for EVERY request, regardless + of whether a user actually has any ssl configuration set. + + Instead, use a cache to avoid firing off this db query + for every request + + (cherry picked from commit c9f8b19647bf3289b444a0212480c1006fcb47d0) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-10 + + Use * to fetch all fields from feature services, don't list them one by one + + Otherwise we often exceed the maximum size of a get query + + (cherry picked from commit 182b1e12798b36a3a35d68e80546c94e4de1cd15) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-07 + + Fix crash when closing QGIS with open layout designer windows + + Qt connections to a lambda ALWAYS should have a context object, + or the connection lasts forever, even after the object which + made the connection is deleted. + +Larry Shaffer <lshaffer@boundlessgeo.com> 2019-06-06 + + Update feature paging fix to allow for WFS version >= 1.1 + + But, only default to paging enabled if WFS 2.0.0 or higher + + From Even Rouault: For some older MapServer versions that had a paging + extension for WFS 1.1, but didn't support yet WFS 2.0 + +Larry Shaffer <lshaffer@boundlessgeo.com> 2019-06-05 + + Fix WFS connection's version Detect button, which did not support auth + + Adds QgsNewHttpConnection protected member to access auth settings + +Larry Shaffer <lshaffer@boundlessgeo.com> 2019-05-23 + + Fix WFS connection version-related GUI widget enabling/disabling + + Fixes: + - When saved with paging disabled, caused option to never be reenabled + - When loading settings, feaure paging now constrained to WFS version + - WFS 2.0.0 capabilities are no longer constrained to just that version, + allowing versions above as well. + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-05 + + Get raster layer name when d&d gpkg, also open vectors in addition to rasters + + Fixes #30050 + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-06 + + Typo + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-06 + + Add test for double widgets in a form + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-06 + + Do not emit changed signal if the value has not really changed + + NULL case + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-06 + + Do not crash if maptool is not set (got this from a test run) + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-06 + + Remove old incomplete documentation + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-05 + + Do not emit dateChanged signal if value has not changed + + Fixes #29937 + +Merge: 988e65906b c358c3ae05 +Matthias Kuhn <matthias@opengis.ch> 2019-06-07 + + Merge pull request #30111 from m-kuhn/ssl_certificate_check-3_4 + + Only check server SSL certificate if requested + +Matthias Kuhn <matthias@opengis.ch> 2019-06-04 + + Only check server SSL certificate if requested + + Fix #30075 + +Merge: 26b4ee6efd ea0ed29c29 +rldhont <rldhont@gmail.com> 2019-06-06 + + Merge pull request #29962 from rldhont/backport-9133-release-3_4 + + Backport : Fix invalid data source message is always shown for release-3_4 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-04 + + Fix inverted polygon renderer widget not opening colors and other + panels inline in style dock + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-04 + + Fix inverted polygon is distorted when map is rotated + + Fixes #26381 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-04 + + Fix disabled, broken test + +Nyall Dawson <nyall.dawson@gmail.com> 2019-06-04 + + Update test mask images + +Matthias Kuhn <matthias@opengis.ch> 2019-06-04 + + Fix cache dir in options + +Matthias Kuhn <matthias@opengis.ch> 2019-06-04 + + Use system cache location instead of profile folder for network cache + + Profile folders are often on network drives and shared among machines whereas the cache should be local (as fast as possible) and is disposable. + +Alessandro Pasotti <elpaso@itopen.it> 2019-06-05 + + Wlcome page: hide migration from QGIS2 option if settings do not exist + + Fixes #30082 + +Merge: 0deda6c02a 66d05b826d +Even Rouault <even.rouault@spatialys.com> 2019-06-05 + + Merge pull request #30101 from qgis/backport-30039-to-release-3_4 + + [Backport release-3_4] [WFS provider] Avoid dangling download progress dialog + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-20 + + Don't show a 'invalid layer source' warning if a user opens a multi-layer + vector file, but then chooses not to actually add any layers from the file + +Even Rouault <even.rouault@spatialys.com> 2019-05-31 + + [WFS provider] Avoid dangling download progress dialog + + While investigating #27384, which I failed to reproduce, I noticed + another - minor - issue when loading layers from a local GeoServer + instance. Very often (easily triggered by reloading layers with F5), + one or several download progress window would be displayed ~ 4 seconds + after the refresh had finished. This was due to a race between the + creation and destruction of this window. + +Merge: 98c0722660 e2c6f71976 +Alessandro Pasotti <elpaso@itopen.it> 2019-06-05 + + Merge pull request #30008 from elpaso/bugfix-20848-issue-exporting-as-gpkg_3_4 + + Backport and enhance fix export raster as GPKG + +Merge: 6f075caf62 863b03112c +Matthias Kuhn <matthias@opengis.ch> 2019-06-05 + + Merge pull request #30086 from m-kuhn/backport-30074-to-release-3_4 + + [Backport release-3_4] Fix "default layout templates" button + +Matthias Kuhn <matthias@opengis.ch> 2019-06-04 + + Add QGIS 4 TODO + +Matthias Kuhn <matthias@opengis.ch> 2019-06-04 + + Redirect default layout template button to configured folder + + The "Default templates" button in the layout manager now + + 1. checks if there is a composer_templates folder in the app dir + 2. if not, redirects to the first configured composer templates folder + 3. if no composer templates folder is configured, it's deactivated + + Fix #30064 + +Matthias Kuhn <matthias@opengis.ch> 2019-06-04 + + Code modernization + +Merge: 1fcc982320 c75fd57eb9 +Luigi Pirelli <luipir@gmail.com> 2019-06-03 + + Merge pull request #30056 from qgis/backport-29992-to-release-3_4 + + [Backport release-3_4] [processing] fix NDVI calculation + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-29 + + Backport and enhance fix export raster as GPKG + + Now checks the existence of a vector file with same + name, this should also fix the original issue. + + - With test + - Requires forward port + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-20 + + Fix export raster as GPKG + + Fixes #20848 + + Test added for internal functions because the main functionality + is in app. + + Partially reverts 006b130e8a85dbba9e499642a8493a515cf41aa0 + See: https://github.com/qgis/QGIS/commit/006b130e8a85dbba9e499642a8493a515cf41aa0 + +matteo <matteo.ghetta@gmail.com> 2019-05-28 + + [processing] fix NDVI calculation + +Merge: b52d2ad6a3 1194955c53 +Alessandro Pasotti <elpaso@itopen.it> 2019-06-03 + + Merge pull request #30033 from elpaso/bugfix-gh29700-histogram-crash + + Fix histogram bindings + + > Is it worth adding a python test for this method? Is there an existing one? Gut feeling is that there's likely NO tests for this method, it predates the focus on stability. + + I'll see what I can do. + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + [labeling] Fix curved labels sometimes placed below line even when + set to above line only + + (cherry picked from commit 10c4bb9f9bdf2fa2f7b5a494a8f9e9459f19150d) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-29 + + [labeling] Fix curved labeling fails when line feature geometry + begins with small segments + + Fixes #28699 + + (cherry picked from commit 328b0afa6ed7d6a45c4dcdf832bd0835b1df0f11) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + Fix some curved labels randomly disappear at certain scales + + Refs #12173 + + (cherry picked from commit 0b451b251404ad54af1e2b2103d315d2d9b365c6) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + Sip update + + (cherry picked from commit 788ee78d7405f0d5ca80c478854a2216dd6c41d2) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + [needs-docs] Rework new project CRS handling + + The previous approach was severely broken, because the default + CRS for new projects setting was ignored as soon as a layer + was added to the project. + + Instead, refine the setting to add options + - "Use CRS from first layer added": same as previous behavior, + the project CRS is set to match the first layer added to a new + project + - "Use a default CRS": CRS for a new project is set to a preset + default CRS, and is left unchanged when adding layers to the + project + + Also update qgis_global_settings.ini to reflect these changes. + + Fixes #27516 + + (cherry picked from commit dac7259b46521c41917e1f781b09e369d5c8b243) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-28 + + Fix QgsSettings::enumValue resolution when used with a non-default section + + (cherry picked from commit 10c686ba321ba96cd37e06cbe3185d96201e62b9) + +Martin Dobias <wonder.sk@gmail.com> 2019-05-30 + + [browser] Fix removal of views from postgres databases (fixes #29812) + + For views one needs to use DROP VIEW sql command + +Peter Petrik <zilolv@gmail.com> 2019-05-30 + + fix #30028 Closing Vertex Edititor crashes the app + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-31 + + Use sipConvertFromType when returning histogram + +Even Rouault <even.rouault@spatialys.com> 2019-05-30 + + [OGR provider] Map GeometryCollection of TIN coming from multipart shapefiles to MultiPolygonZ (fixes #29376) + +Even Rouault <even.rouault@spatialys.com> 2019-05-30 + + [WFS client] Revert read buffer size limitation (fixes #29258, fixes #27626) + + This apparently caused deadlock issues. + + Credit to @nyalldawson for spotting the offending commit. + + Partial revert of 0addae5b783e541953522eabe178426e820bf852 + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-30 + + Don't crash when copying layout elements + + Guard for existing multiFrames + + Fixes #29747 + +Peter Petrik <zilolv@gmail.com> 2019-05-29 + + fix #29630 spatialindex for NaN points + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-29 + + [processing] add default value to user filter matrix (fix #29999) + +Even Rouault <even.rouault@spatialys.com> 2019-05-29 + + QgsGeometryUtils::segmentizeArc(): fix full circle segmentization (fixes #29895) + + This fix display of full circles coming from PostGIS. + +nirvn <nirvn.asia@gmail.com> 2019-05-30 + + [layout][ui] Fix missing opacity setting for the label font color button + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-30 + + Fix histogram bindings + + Hopfully fixes #29700 + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-28 + + Update src/core/layout/qgslayoutmultiframe.cpp + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-28 + + Fix crash when exporting layout + + Fixes #29798 + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-29 + + Remove unused header + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-22 + + Remove raw string (not necessary here) + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-21 + + Fix identify on map in relation reference widget + + Fixes #22071 - Relation reference widget wrong feature when "on map identification" + +Even Rouault <even.rouault@spatialys.com> 2019-05-25 + + QgsVectorFileWriter::writeAsVectorFormat(): return appropriate output layer name for GPX driver (github fixes #29819) + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-28 + + Revert "QgsLayoutAtlasWidget: Disconnect signals when layout RIP" + + This reverts commit 1626565c76b3fc772ed6d075b7274c305009d213. + + Found a better way to delete the widget when designer + dialog is closed. + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-28 + + Ensure the designer dialog is deleted immediately + + Before other signals can crash the application. + + Fixes #29821 + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-28 + + Use qgis::overload + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-27 + + QgsLayoutAtlasWidget: Disconnect signals when layout RIP + + Fixes #29821 + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-28 + + Use completeBaseName for exported atlas path + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-28 + + Fix atlas export when file name contains multiple dots + + Fixes #29980 + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-27 + + update tests and merge all color ramp tests into single file + + (cherry picked from commit 507c10c7c1f55873678e15f57fb3d1d3a8cdd4b3) + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-26 + + add tests for QgsColorRamp + + (cherry picked from commit d83b01f5f0fc4816244e8cd6849a7082c5344bec) + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-26 + + prevent crash in the color brewer color ramp when requested color + corresponding to the NaN value (fix #29509) + + (cherry picked from commit bdbc3585d6c1c8e6ae653aac15af29a1dcbee8cc) + +Merge: 26f88151d1 11e8347752 +Alessandro Pasotti <elpaso@itopen.it> 2019-05-28 + + Merge pull request #29984 from qgis/backport-29970-to-release-3_4 + + [Backport release-3_4] Server WFS fix describefeaturetype double virtual fields + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-28 + + Add missing test control file + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-27 + + Server WFS fix describefeaturetype double virtual fields + + Fixes #29767 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-24 + + Fix (?) crash when filtering layer with attachment field + + Fixes #21775 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-27 + + Regenerate distance area calculation on demand in attribute table + + Storing the instance in the table means that it does not respond + correctly to project ellipsoid changes, resulting in area calculations + using an outdated ellipsoid until the attribute table is reopened + + Fixes #25500 + +Even Rouault <even.rouault@spatialys.com> 2019-05-25 + + [WFS provider] Support layers with GML field names only differing by cases (github fixes #29858) + +Even Rouault <even.rouault@spatialys.com> 2019-05-25 + + [WFS provider] Emit TYPENAME and TYPENAMES for WFS 2.0 DescribeFeatureType & GetFeature + + Fixes Redmine #21768 and https://github.com/qgis/QGIS/pull/9849 + + Due to confusion in the WFS 2.0 sepecification the situation is that WFS 2.0 + servers 'randomly' recognize TYPENAME or + TYPENAMES depending on DescribeFeatureType and GetFeature requests. So + emit both parameters as tests show that it fixes issues and doesn't seem to + cause harm. + +Klavs Pihlkjær <klavspc@gmail.com> 2019-04-16 + + [WFS provider] Improve handling of NAMESPACE(S) (github #9849) + + Modified by E. Rouault + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-27 + + use data provider to get provider name as providerType() not available + in the LTR branch + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-24 + + add tests for style URI retrieval + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-24 + + load style from the QML file with the same name as layer file name + for GeoPackages, CSV and SpatiaLite (fix #21691) + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-27 + + Fix raster calculator invalid expressions + + Tell the user that is invalid instead of + silently ignoring undefined functions. + + Fixes #29824 + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-27 + + Handle file:// links in identify text + + Fixes #29879 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-02-08 + + Fix more incorrect 'invalid data source' errors when loading mesh layers + +Nyall Dawson <nyall.dawson@gmail.com> 2019-02-08 + + Fix invalid data source message is always shown after dragging and dropping + vector layers to QGIS window + +Denis Rouzaud <denis.rouzaud@gmail.com> 2019-05-26 + + fix sipify doesn't handle true/false correctly in 3.4 (#29954) + +volaya <volayaf@gmail.com> 2019-05-24 + + [processing] do not declare output of saveselectfeatures as points + + It can be of any geometry type + +Merge: a9d6460a5f d8b50ed881 +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-25 + + Merge pull request #25793 from alexbruy/backport-r-sun + + [processing] split GRASS r.sun algorithm into two (fix #21637) + +Juergen E. Fischer <jef@norbit.de> 2019-05-22 + + fix windows build on x86 + + (cherry picked from commit b18731bc349def440f01840a4c07827dca6bbaac) + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-23 + + update tests + + (cherry picked from commit 60090705021f3e9876745b95a1bf874cfb87ce3a) + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-23 + + [processing] split r.sun into two algorithms as it has mutually + exclusive options (fix #21637) + + (cherry picked from commit ab646c4d75c6eac3c37cfa6a284191040048ffe8) + +Merge: c16a98d59c a87b46bed3 +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-24 + + Merge pull request #10090 from qgis/backport-10081-to-release-3_4 + + [Backport release-3_4] [maptips] restore wrapping of the long lines (fix #21388) + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-24 + + QString -> QStringLiteral + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-23 + + [maptips] restore wrapping of the long lines (fix #21388) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-21 + + Also invalid QgsCoordinateReferenceSystem cache on qgis exit, fixes crashes on exit + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-23 + + Fix confusing memory management in dxf export + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-23 + + Fix dxf export ignores multisurface geometry types + + Fixes #21779 + +nirvn <nirvn.asia@gmail.com> 2019-05-23 + + fix build + +nirvn <nirvn.asia@gmail.com> 2019-05-22 + + [effects] Fix blur radius not taking dpi into account (fixes #14885) + +volaya <volayaf@gmail.com> 2019-05-23 + + [processing] do not export sdat files provided as part of a multiple raster input + + fixes #22131 + +Alessandro Pasotti <elpaso@itopen.it> 2019-05-23 + + db-manager: Update input layer and table names + + when selecting an external file + + Fixes #22033 - wrong shapefile import + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-21 + + Fix rule based label/symbol renderers reset max scale for rules to + 1:100000 + + And improve dox + + Fixes #21845 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-21 + + Add method to QgsRasterBlockFeedback to collect error messages + + And append raster errors to rendering errors whenever encountered + + (cherry picked from commit 60deffbfa8900a7dd02fe255d84ed16f7d9b2c83) + +Juergen E. Fischer <jef@norbit.de> 2019-05-22 + + fix build of grassrasterprovider + + (cherry picked from commit fbd328982380be6d78786977364014efd2bceff4) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-21 + + If an error occurs while reading raster block data, don't return + corrupt data as a result. Instead, indicate explicitly that an + error occurred so that callers will fallback on appropriate + error paths. + + Fixes rendering random junk (and possible crashes) when + attempting to open an invalid gdal raster data source, + such as the one attached to + https://github.com/OSGeo/gdal/issues/1545 + + Also replace manual memory management with unique_ptrs + + (cherry picked from commit 230c62fad6edb7bea3dafb4400411664c77a2542) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-22 + + Abort symbol rendering early if render job is cancelled + + Some symbol rendering operations take a long time, especially + if settings are accidentally ridiculous (e.g. changing a marker + line with interval 1 mm to map units on a small scale map can + result in millions+ of markers being rendered for a single + feature). If we don't abort these operations responsively, + then the render job can become effectively "stuck" and sit + burning away CPU for no good reason (or in some cases lock the + QGIS ui as a result). + + Instead, for possibly length symbol rendering operations we + check at reasonable places for the QgsRenderContext::renderingStopped() + flag and if it's set, abort the rendering quickly and gracefully. + + (cherry picked from commit bb0d449954884cbceb4cc3463518d391582c99e3) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-22 + + [layouts] Avoid resetting column selection when restoring project + with an atttribute table set to the "atlas feature" source + + Fixes #20538 + + (cherry picked from commit 810b522f4342e6972e8c12a14c93ee4c9bc300be) + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-22 + + [processing] use correct parent layer parameter in v.net.distance + algorithm (fix #22013) + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-22 + + [processing] move "Split RGB bands" algorithm inside "Raster tools" + group to maintain consistency (fix #21849) + +Alexander Bruy <alexander.bruy@gmail.com> 2019-05-22 + + [processing] use correct file extension in r.in.lidar.info (fix #21910) + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-21 + + Add missing dox to QgsRenderContext + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-21 + + Mark render features methods as throwing QgsCsException, to allow it to be nicely caught in Python + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-21 + + Fix incorrect entries are added to coordinate transform cache + if crs cannot be represented as auth/id combo + +Harrissou Sant-anna <delazj@gmail.com> 2019-05-17 + + Title case the resampling options + +Harrissou Sant-anna <delazj@gmail.com> 2019-05-16 + + [needs-docs] Harmonize display of GDAL build vrt options + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-21 + + Ensure NULL item shows before field names in expression builder, instead of mixed inside them + +Denis Rouzaud <denis.rouzaud@gmail.com> 2019-05-21 + + update Travis to build on Trusty for code layout (#10048) + + * update Travis to build on Trusty for code layout + + * fix shellcheck replace ! -z by -n + + * shellcheck: fix -n doesn't work with unquoted arguments + + * more shellcheck fixes + + * use bash instead of posix + +Daniele Viganò <daniele@vigano.me> 2019-05-20 + + [RPM] Fix a dependency on older Fedora releases + +Merge: cdfe7bc35d eb2f3b33df +Blottiere Paul <blottiere.paul@gmail.com> 2019-05-21 + + Merge pull request #10032 from elemoine/backport-10010-to-release-3_4 + + [server] Support FILTER values with colons. backport of #10010 + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-20 + + Fix all layers are force redrawed whenever a filter is changed in any + +Merge: bfe746d2f5 10db307993 +rldhont <rldhont@gmail.com> 2019-05-20 + + Merge pull request #9991 from rldhont/server-handle-bad-layers-release-3_4 + + [Server] Handle bad layers at QGIS project laoding and throw exception + +rldhont <rldhont@gmail.com> 2019-05-13 + + [Server] Handle bad layers at QGIS project laoding and throw exception + + This commit return exceptions if a layer is not available like other servers (e.g. UMN) and prevents caching of projects with missing datasources (a datasource may become available later on). + +rldhont <rldhont@gmail.com> 2019-04-01 + + Add unit-tests to avoid regression in Server printing to PDF output format + + In QGIS 3.4, Selection can be printed in Image output and not in PDF or SVG output. + + A fix has been done 2752f83 to fix inconsistent use of layout render context flags, and draw selection is activated with a flag. + +Nyall Dawson <nyall.dawson@gmail.com> 2019-01-29 + + Fix inconsistent use of layout render context flags + +Éric Lemoine <eric.lemoine@oslandia.com> 2019-05-15 + + Mention xvfb-run in tests/README.md + +Éric Lemoine <eric.lemoine@oslandia.com> 2019-05-15 + + Support FILTER values with colons + +Harrissou Sant-anna <delazj@gmail.com> 2019-05-15 + + Make data type option translatable in GDAL algorithms dialog + +Nyall Dawson <nyall.dawson@gmail.com> 2019-05-14 + + Avoid unnecessary calculations in SVG fill symbol cloning + + Minor speed boost + +Larry Shaffer <lshaffer@boundlessgeo.com> 2019-05-17 + + [oauth2] Verify replies still exist and attribute gets are valid + + Fixes unreported crash, due to access on nonexistent replies. + +Juergen E. Fischer <jef@norbit.de> 2019-05-17 + + Release of 3.4.8 + backporting[bot] <backporting[bot]@users.noreply.github.com> 2019-05-14 [Backport release-3_4] stronger test for embedded layers (#10003) diff --git a/debian/changelog b/debian/changelog index 9269b06c8f..d436108564 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,14 @@ -qgis (3.4.8) UNRELEASED; urgency=medium +qgis (3.4.9) UNRELEASED; urgency=medium + + * Release of 3.4.9 + + -- Jürgen E. Fischer <jef@norbit.de> Fri, 21 Jun 2019 14:00:40 +0200 + +qgis (3.4.8) unstable; urgency=medium * Release of 3.4.8 - -- Jürgen E. Fischer <jef@norbit.de> Fri, 17 May 2019 13:00:24 +0200 + -- Jürgen E. Fischer <jef@norbit.de> Fri, 21 Jun 2019 14:00:40 +0200 qgis (3.4.7) unstable; urgency=medium diff --git a/images/themes/default/mIconAutoPlacementSettings.svg b/images/themes/default/mIconAutoPlacementSettings.svg index 8226505f37..e01e8340d6 100644 --- a/images/themes/default/mIconAutoPlacementSettings.svg +++ b/images/themes/default/mIconAutoPlacementSettings.svg @@ -1,9 +1 @@ -<svg enable-background="new 4 7 24 18" height="18" viewBox="4 7 24 18" width="24" xmlns="http://www.w3.org/2000/svg"> -<g fill="#82a0b4" stroke="#3c5a6e" stroke-linejoin="round" transform="translate(-18 -16)"> -<path d="m30.61 39.576l3.495-3.5h-2.331v-2.334h-2.331v2.334h-2.333z"/> -<path d="m22.652 31.623l3.5 3.497v-2.332h2.333v-2.331h-2.333v-2.334z"/> -<path d="m30.61 23.664l3.495 3.5h-2.331v2.333h-2.331v-2.333h-2.333z"/> -<path d="m38.563 31.623l-3.502 3.497v-2.332h-2.333v-2.331h2.333v-2.334z"/> -</g> -<path d="m23.949 14.637v3.083c-.163.059-.325.125-.48.198l-2.176-2.177-2.572 2.573 2.177 2.176c-.073.154-.14.317-.198.48h-3.08v3.617h3.08c.058.161.125.326.198.48l-2.177 2.176 2.572 2.571 2.176-2.176c.155.073.317.14.48.198v3.08h3.617v-3.08c.163-.059.325-.125.48-.198l2.176 2.176 2.571-2.571-2.176-2.176c.072-.154.141-.319.198-.48h3.08v-3.617h-3.08c-.059-.163-.125-.325-.198-.48l2.176-2.176-2.571-2.573-2.176 2.177c-.153-.073-.319-.141-.48-.198v-3.083zm1.809 5.966c1.2 0 2.176.975 2.176 2.176 0 1.2-.976 2.176-2.176 2.176-1.201 0-2.176-.976-2.176-2.176 0-1.202.975-2.176 2.176-2.176z" fill="#fce94f" stroke="#c4a000" stroke-linecap="round" stroke-linejoin="round"/> -</svg> +<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="4 7 24 24" width="24"><g fill="#82a0b4" stroke="#3c5a6e" stroke-width=".994" stroke-linejoin="round"><path d="M30.61 39.576l3.495-3.5h-2.331v-2.334h-2.331v2.334H27.11zM22.652 31.623l3.5 3.497v-2.332h2.333v-2.331h-2.333v-2.334zM30.61 23.664l3.495 3.5h-2.331v2.333h-2.331v-2.333H27.11zM38.563 31.623l-3.502 3.497v-2.332h-2.333v-2.331h2.333v-2.334z" transform="matrix(1.0056 0 0 1.00555 -17.279 -15.295)"/></g><path d="M17.722 14.5v3.03c-.16.058-.32.123-.472.195l-2.14-2.14-2.528 2.529 2.14 2.139a5.107 5.107 0 0 0-.194.471H11.5v3.555h3.028c.057.159.123.32.195.472l-2.14 2.139 2.528 2.527 2.14-2.139c.152.072.31.138.471.195V30.5h3.556v-3.027c.16-.058.32-.123.472-.195l2.14 2.139 2.527-2.527-2.14-2.139c.071-.151.139-.313.195-.472H27.5v-3.555h-3.028a5.524 5.524 0 0 0-.195-.471l2.14-2.139-2.528-2.529-2.14 2.14a4.955 4.955 0 0 0-.471-.195V14.5zm1.778 5.864c1.18 0 2.14.958 2.14 2.138s-.96 2.14-2.14 2.14a2.14 2.14 0 0 1 0-4.277z" fill="#fce94f" stroke="#c4a000" stroke-linecap="round" stroke-linejoin="round"/></svg> diff --git a/linux/org.qgis.qgis.appdata.xml.in b/linux/org.qgis.qgis.appdata.xml.in index 385c6d5c9c..84f94f1903 100644 --- a/linux/org.qgis.qgis.appdata.xml.in +++ b/linux/org.qgis.qgis.appdata.xml.in @@ -18,6 +18,7 @@ <project_group>QGIS</project_group> <releases> + <release version="3.4.9" date="2019-06-21" /> <release version="3.4.8" date="2019-05-17" /> <release version="3.4.7" date="2019-04-19" /> <release version="3.4.6" date="2019-03-22" /> diff --git a/ms-windows/osgeo4w/package.cmd b/ms-windows/osgeo4w/package.cmd index d6182f874f..efb0295a34 100644 --- a/ms-windows/osgeo4w/package.cmd +++ b/ms-windows/osgeo4w/package.cmd @@ -400,6 +400,12 @@ if not exist %ARCH%\release\qgis\%PACKAGENAME% mkdir %ARCH%\release\qgis\%PACKAG "apps/%PACKAGENAME%/resources/palettes/" ^ "apps/%PACKAGENAME%/resources/2to3migration.txt" ^ "apps/%PACKAGENAME%/resources/qgis_global_settings.ini" ^ + "apps/%PACKAGENAME%/resources/compdcs.csv" ^ + "apps/%PACKAGENAME%/resources/datum_shift.csv" ^ + "apps/%PACKAGENAME%/resources/gcs.csv" ^ + "apps/%PACKAGENAME%/resources/geoccs.csv" ^ + "apps/%PACKAGENAME%/resources/pcs.csv" ^ + "apps/%PACKAGENAME%/resources/vertcs.csv" ^ "apps/%PACKAGENAME%/qgiscrashhandler.exe" ^ "bin/%PACKAGENAME%.bat.tmpl" ^ "bin/%PACKAGENAME%-designer.bat.tmpl" ^ diff --git a/ms-windows/osgeo4w/postinstall-desktop.bat b/ms-windows/osgeo4w/postinstall-desktop.bat index 458433d311..10cc733098 100644 --- a/ms-windows/osgeo4w/postinstall-desktop.bat +++ b/ms-windows/osgeo4w/postinstall-desktop.bat @@ -11,11 +11,11 @@ call "%OSGEO4W_ROOT%\bin\@package@.bat" --postinstall if not %OSGEO4W_MENU_LINKS%==0 mkdir "%OSGEO4W_STARTMENU%" if not %OSGEO4W_DESKTOP_LINKS%==0 mkdir "%OSGEO4W_DESKTOP%" -if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\@package@-bin.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@" -if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\@package@-bin.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@" +if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\@package@-bin.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@" "" "" "" "" "~$folder.mydocuments$" +if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\@package@-bin.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@" "" "" "" "" "~$folder.mydocuments$" -if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_STARTMENU%" "Qt Designer with QGIS @version@ custom widgets" "exec hide """%OSGEO4W_ROOT%\bin\@package@-designer.bat"" "%O4W_ROOT%\apps\@package@\icons\QGIS.ico" -if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_DESKTOP%" "Qt Designer with QGIS @version@ custom widgets" "exec hide %O4W_ROOT%\bin\@package@-designer.bat" "%O4W_ROOT%\apps\@package@\icons\QGIS.ico" +if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_STARTMENU%" "Qt Designer with QGIS @version@ custom widgets" "exec hide """%OSGEO4W_ROOT%\bin\@package@-designer.bat"" "%O4W_ROOT%\apps\@package@\icons\QGIS.ico" "" "" "~$folder.mydocuments$" +if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%O4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_DESKTOP%" "Qt Designer with QGIS @version@ custom widgets" "exec hide %O4W_ROOT%\bin\@package@-designer.bat" "%O4W_ROOT%\apps\@package@\icons\QGIS.ico" "" "" "~$folder.mydocuments$" set OSGEO4W_ROOT=%OSGEO4W_ROOT:\=\\% textreplace -std -t "%O4W_ROOT%\apps\@package@\bin\qgis.reg" diff --git a/ms-windows/osgeo4w/postinstall-dev.bat b/ms-windows/osgeo4w/postinstall-dev.bat index cfc68d35a3..e77a581140 100644 --- a/ms-windows/osgeo4w/postinstall-dev.bat +++ b/ms-windows/osgeo4w/postinstall-dev.bat @@ -17,12 +17,12 @@ for %%g in (@grassversions@) do ( textreplace -std -map @grassmajor@ !v! -t bin\@package@-g!v!.bat call "%OSGEO4W_ROOT%\bin\@package@-g!v!.bat" --postinstall - if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@ with GRASS !gv! (Nightly)" - if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@ with GRASS !gv! (Nightly)" + if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@ with GRASS !gv! (Nightly)" "" "" "" "" "~$folder.mydocuments$" + if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g!v!.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@ with GRASS !gv! (Nightly)" "" "" "" "" "~$folder.mydocuments$" ) -if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_STARTMENU%" "Qt Designer with QGIS @version@ custom widgets (Nightly)" "exec hide """%OSGEO4W_ROOT%\bin\@package@-designer.bat"" "%OSGEO4W_ROOT%\apps\@package@\icons\QGIS.ico" -if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_DESKTOP%" "Qt Designer with QGIS @version@ custom widgets (Nightly)" "exec hide """%OSGEO4W_ROOT%\bin\@package@-designer.bat"" "%OSGEO4W_ROOT%\apps\@package@\icons\QGIS.ico" +if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_STARTMENU%" "Qt Designer with QGIS @version@ custom widgets (Nightly)" "exec hide """%OSGEO4W_ROOT%\bin\@package@-designer.bat"" "%OSGEO4W_ROOT%\apps\@package@\icons\QGIS.ico" "" "" "~$folder.mydocuments$" +if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\nircmd.exe" "%OSGEO4W_DESKTOP%" "Qt Designer with QGIS @version@ custom widgets (Nightly)" "exec hide """%OSGEO4W_ROOT%\bin\@package@-designer.bat"" "%OSGEO4W_ROOT%\apps\@package@\icons\QGIS.ico" "" "" "~$folder.mydocuments$" set O4W_ROOT=%OSGEO4W_ROOT% set OSGEO4W_ROOT=%OSGEO4W_ROOT:\=\\% diff --git a/ms-windows/osgeo4w/postinstall-grass.bat b/ms-windows/osgeo4w/postinstall-grass.bat index 9216a05b1f..b851c2cde8 100644 --- a/ms-windows/osgeo4w/postinstall-grass.bat +++ b/ms-windows/osgeo4w/postinstall-grass.bat @@ -9,5 +9,5 @@ call "%OSGEO4W_ROOT%\bin\@package@-grass@grassmajor@.bat" --postinstall if not %OSGEO4W_MENU_LINKS%==0 mkdir "%OSGEO4W_STARTMENU%" if not %OSGEO4W_DESKTOP_LINKS%==0 mkdir "%OSGEO4W_DESKTOP%" -if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@ with GRASS @grassversion@" -if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@ with GRASS @grassversion@" +if not %OSGEO4W_MENU_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.exe" "%OSGEO4W_STARTMENU%" "QGIS Desktop @version@ with GRASS @grassversion@" "" "" "" "" "~$folder.mydocuments$" +if not %OSGEO4W_DESKTOP_LINKS%==0 nircmd shortcut "%OSGEO4W_ROOT%\bin\@package@-bin-g@grassmajor@.exe" "%OSGEO4W_DESKTOP%" "QGIS Desktop @version@ with GRASS @grassversion@" "" "" "" "" "~$folder.mydocuments$" diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 9be4f7cb70..4cbc8eb591 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -76,6 +76,7 @@ INCLUDE_DIRECTORIES(SYSTEM ${QT_QTSVG_INCLUDE_DIR} ${QT_QTXML_INCLUDE_DIR} ${GDAL_INCLUDE_DIR} + ${GEOS_INCLUDE_DIR} ${QWT_INCLUDE_DIR} ${QCA_INCLUDE_DIR} ${QTKEYCHAIN_INCLUDE_DIR} diff --git a/python/PyQt/PyQt5/Qsci.py b/python/PyQt/PyQt5/Qsci.py index 42d29d0337..18f43835a0 100644 --- a/python/PyQt/PyQt5/Qsci.py +++ b/python/PyQt/PyQt5/Qsci.py @@ -21,6 +21,6 @@ __author__ = 'Matthias Kuhn' __date__ = 'November 2015' __copyright__ = '(C) 2015, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.Qsci import * diff --git a/python/PyQt/PyQt5/Qt.py b/python/PyQt/PyQt5/Qt.py index a59c878991..653f8d25c2 100644 --- a/python/PyQt/PyQt5/Qt.py +++ b/python/PyQt/PyQt5/Qt.py @@ -21,7 +21,7 @@ __author__ = 'Marco Bernasocchi' __date__ = 'September 2016' __copyright__ = '(C) 2016, Marco Bernasocchi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.Qt import * diff --git a/python/PyQt/PyQt5/QtCore.py b/python/PyQt/PyQt5/QtCore.py index 32cb7a597b..d2c411bc05 100644 --- a/python/PyQt/PyQt5/QtCore.py +++ b/python/PyQt/PyQt5/QtCore.py @@ -21,7 +21,7 @@ __author__ = 'Matthias Kuhn' __date__ = 'November 2015' __copyright__ = '(C) 2015, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtCore import * diff --git a/python/PyQt/PyQt5/QtGui.py b/python/PyQt/PyQt5/QtGui.py index 8f5fb786b9..6c4eb001c6 100644 --- a/python/PyQt/PyQt5/QtGui.py +++ b/python/PyQt/PyQt5/QtGui.py @@ -21,6 +21,6 @@ __author__ = 'Matthias Kuhn' __date__ = 'November 2015' __copyright__ = '(C) 2015, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtGui import * diff --git a/python/PyQt/PyQt5/QtNetwork.py b/python/PyQt/PyQt5/QtNetwork.py index 62af75ae5a..6a728cb1ea 100644 --- a/python/PyQt/PyQt5/QtNetwork.py +++ b/python/PyQt/PyQt5/QtNetwork.py @@ -21,6 +21,6 @@ __author__ = 'Juergen E. Fischer' __date__ = 'March 2016' __copyright__ = '(C) 2016, Juergen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtNetwork import * diff --git a/python/PyQt/PyQt5/QtPrintSupport.py b/python/PyQt/PyQt5/QtPrintSupport.py index f17420d5ca..0fdb41f191 100644 --- a/python/PyQt/PyQt5/QtPrintSupport.py +++ b/python/PyQt/PyQt5/QtPrintSupport.py @@ -21,6 +21,6 @@ __author__ = 'Matthias Kuhn' __date__ = 'November 2015' __copyright__ = '(C) 2015, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtPrintSupport import * diff --git a/python/PyQt/PyQt5/QtSql.py b/python/PyQt/PyQt5/QtSql.py index bcb637b01b..5490a7c9b1 100644 --- a/python/PyQt/PyQt5/QtSql.py +++ b/python/PyQt/PyQt5/QtSql.py @@ -21,6 +21,6 @@ __author__ = 'Juergen E. Fischer' __date__ = 'March 2016' __copyright__ = '(C) 2016, Juergen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtSql import * diff --git a/python/PyQt/PyQt5/QtSvg.py b/python/PyQt/PyQt5/QtSvg.py index 69fdabc18c..c30e522afa 100644 --- a/python/PyQt/PyQt5/QtSvg.py +++ b/python/PyQt/PyQt5/QtSvg.py @@ -21,6 +21,6 @@ __author__ = 'Juergen E. Fischer' __date__ = 'March 2016' __copyright__ = '(C) 2016, Juergen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtSvg import * diff --git a/python/PyQt/PyQt5/QtTest.py b/python/PyQt/PyQt5/QtTest.py index 60abe0f05d..8c7a768a21 100644 --- a/python/PyQt/PyQt5/QtTest.py +++ b/python/PyQt/PyQt5/QtTest.py @@ -21,6 +21,6 @@ __author__ = 'Juergen E. Fischer' __date__ = 'March 2016' __copyright__ = '(C) 2016, Juergen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtTest import * diff --git a/python/PyQt/PyQt5/QtWebKit.py b/python/PyQt/PyQt5/QtWebKit.py index 55a9446509..e3e0323e83 100644 --- a/python/PyQt/PyQt5/QtWebKit.py +++ b/python/PyQt/PyQt5/QtWebKit.py @@ -21,6 +21,6 @@ __author__ = 'Matthias Kuhn' __date__ = 'November 2015' __copyright__ = '(C) 2015, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtWebKit import * diff --git a/python/PyQt/PyQt5/QtWebKitWidgets.py b/python/PyQt/PyQt5/QtWebKitWidgets.py index 298dc34791..4d41434798 100644 --- a/python/PyQt/PyQt5/QtWebKitWidgets.py +++ b/python/PyQt/PyQt5/QtWebKitWidgets.py @@ -21,6 +21,6 @@ __author__ = 'Matthias Kuhn' __date__ = 'November 2015' __copyright__ = '(C) 2015, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtWebKitWidgets import * diff --git a/python/PyQt/PyQt5/QtWidgets.py b/python/PyQt/PyQt5/QtWidgets.py index 65a9298ebf..1150546d08 100644 --- a/python/PyQt/PyQt5/QtWidgets.py +++ b/python/PyQt/PyQt5/QtWidgets.py @@ -21,7 +21,7 @@ __author__ = 'Matthias Kuhn' __date__ = 'November 2015' __copyright__ = '(C) 2015, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtWidgets import * diff --git a/python/PyQt/PyQt5/QtXml.py b/python/PyQt/PyQt5/QtXml.py index 5d29edece8..c068fef7d5 100644 --- a/python/PyQt/PyQt5/QtXml.py +++ b/python/PyQt/PyQt5/QtXml.py @@ -21,6 +21,6 @@ __author__ = 'Juergen E. Fischer' __date__ = 'March 2016' __copyright__ = '(C) 2016, Juergen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.QtXml import * diff --git a/python/PyQt/PyQt5/sip.py b/python/PyQt/PyQt5/sip.py index e7a067be03..a4e71a3d10 100644 --- a/python/PyQt/PyQt5/sip.py +++ b/python/PyQt/PyQt5/sip.py @@ -21,7 +21,7 @@ __author__ = 'Nyall Dawson' __date__ = 'October 2017' __copyright__ = '(C) 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' try: from PyQt5.sip import * diff --git a/python/PyQt/PyQt5/uic/__init__.py b/python/PyQt/PyQt5/uic/__init__.py index 12558fc32e..8b81620e89 100644 --- a/python/PyQt/PyQt5/uic/__init__.py +++ b/python/PyQt/PyQt5/uic/__init__.py @@ -21,7 +21,7 @@ __author__ = 'Jürgen E. Fischer' __date__ = 'February 2016' __copyright__ = '(C) 2016, Jürgen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import warnings from PyQt5.uic.Compiler import indenter, compiler diff --git a/python/PyQt/PyQt5/uic/properties.py b/python/PyQt/PyQt5/uic/properties.py index b8b9bb1f4a..cad1e9d9b8 100644 --- a/python/PyQt/PyQt5/uic/properties.py +++ b/python/PyQt/PyQt5/uic/properties.py @@ -21,6 +21,6 @@ __author__ = 'Juergen E. Fischer' __date__ = 'March 2016' __copyright__ = '(C) 2016, Juergen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.uic import properties diff --git a/python/PyQt/PyQt5/uic/pyuic.py b/python/PyQt/PyQt5/uic/pyuic.py index 9460a9e8c4..9cfc80986b 100644 --- a/python/PyQt/PyQt5/uic/pyuic.py +++ b/python/PyQt/PyQt5/uic/pyuic.py @@ -21,7 +21,7 @@ __author__ = 'Juergen E. Fischer' __date__ = 'March 2016' __copyright__ = '(C) 2016, Juergen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from PyQt5.uic import pyuic if (callable(pyuic.main)): diff --git a/python/__init__.py b/python/__init__.py index f223ff4a07..818e3a3584 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -21,7 +21,7 @@ __author__ = 'Martin Dobias' __date__ = 'January 2007' __copyright__ = '(C) 2007, Martin Dobias' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from builtins import zip import os diff --git a/python/console/__init__.py b/python/console/__init__.py index dfb46b6960..264b370e30 100644 --- a/python/console/__init__.py +++ b/python/console/__init__.py @@ -21,6 +21,6 @@ __author__ = 'Salvatore Larosa' __date__ = 'September 2012' __copyright__ = '(C) 2012, Salvatore Larosa' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .console import show_console # NOQA diff --git a/python/core/auto_generated/effects/qgsblureffect.sip.in b/python/core/auto_generated/effects/qgsblureffect.sip.in index 3dcc69dfb0..f9e9e8bd01 100644 --- a/python/core/auto_generated/effects/qgsblureffect.sip.in +++ b/python/core/auto_generated/effects/qgsblureffect.sip.in @@ -51,28 +51,96 @@ Constructor for QgsBlurEffect. virtual QgsBlurEffect *clone() const /Factory/; - void setBlurLevel( const int level ); + void setBlurLevel( const double level ); %Docstring -Sets blur level (strength) +Sets blur level (radius) :param level: blur level. Depending on the current blurMethod(), this parameter has different effects .. seealso:: :py:func:`blurLevel` -.. seealso:: :py:func:`blurMethod` +.. seealso:: :py:func:`setBlurUnit` + +.. seealso:: :py:func:`setBlurMapUnitScale` + +.. seealso:: :py:func:`setBlurMethod` %End - int blurLevel() const; + double blurLevel() const; %Docstring -Returns the blur level (strength) +Returns the blur level (radius) :return: blur level. Depending on the current blurMethod(), this parameter has different effects .. seealso:: :py:func:`setBlurLevel` +.. seealso:: :py:func:`blurUnit` + +.. seealso:: :py:func:`blurMapUnitScale` + .. seealso:: :py:func:`blurMethod` +%End + + void setBlurUnit( const QgsUnitTypes::RenderUnit unit ); +%Docstring +Sets the units used for the blur level (radius). + +:param unit: units for blur level + +.. seealso:: :py:func:`blurUnit` + +.. seealso:: :py:func:`setBlurLevel` + +.. seealso:: :py:func:`setBlurMapUnitScale` + +.. versionadded:: 3.4.9 +%End + + QgsUnitTypes::RenderUnit blurUnit() const; +%Docstring +Returns the units used for the blur level (radius). + +:return: units for blur level + +.. seealso:: :py:func:`setBlurUnit` + +.. seealso:: :py:func:`blurLevel` + +.. seealso:: :py:func:`blurMapUnitScale` + +.. versionadded:: 3.4.9 +%End + + void setBlurMapUnitScale( const QgsMapUnitScale &scale ); +%Docstring +Sets the map unit scale used for the blur strength (radius). + +:param scale: map unit scale for blur strength + +.. seealso:: :py:func:`blurMapUnitScale` + +.. seealso:: :py:func:`setBlurLevel` + +.. seealso:: :py:func:`setBlurUnit` + +.. versionadded:: 3.4.9 +%End + + const QgsMapUnitScale &blurMapUnitScale() const; +%Docstring +Returns the map unit scale used for the blur strength (radius). + +:return: map unit scale for blur strength + +.. seealso:: :py:func:`setBlurMapUnitScale` + +.. seealso:: :py:func:`blurLevel` + +.. seealso:: :py:func:`blurUnit` + +.. versionadded:: 3.4.9 %End void setBlurMethod( const BlurMethod method ); diff --git a/python/core/auto_generated/effects/qgsgloweffect.sip.in b/python/core/auto_generated/effects/qgsgloweffect.sip.in index a071bdccae..97958bb10a 100644 --- a/python/core/auto_generated/effects/qgsgloweffect.sip.in +++ b/python/core/auto_generated/effects/qgsgloweffect.sip.in @@ -118,25 +118,91 @@ Returns the map unit scale used for the spread distance. .. seealso:: :py:func:`spreadUnit` %End - void setBlurLevel( const int level ); + void setBlurLevel( const double level ); %Docstring -Sets blur level (strength) for the glow. This can be used to smooth the +Sets blur level (radius) for the glow. This can be used to smooth the output from the glow effect. -:param level: blur level. Values between 0 and 16 are valid, with larger - values indicating greater blur strength. +:param level: blur level. .. seealso:: :py:func:`blurLevel` + +.. seealso:: :py:func:`setBlurUnit` + +.. seealso:: :py:func:`setBlurMapUnitScale` +%End + + double blurLevel() const; +%Docstring +Returns the blur level (radius) for the glow. + +:return: blur level. + +.. seealso:: :py:func:`setBlurLevel` + +.. seealso:: :py:func:`blurUnit` + +.. seealso:: :py:func:`blurMapUnitScale` +%End + + void setBlurUnit( const QgsUnitTypes::RenderUnit unit ); +%Docstring +Sets the units used for the glow blur level (radius). + +:param unit: units for blur level + +.. seealso:: :py:func:`blurUnit` + +.. seealso:: :py:func:`setBlurLevel` + +.. seealso:: :py:func:`setBlurMapUnitScale` + +.. versionadded:: 3.4.9 +%End + + QgsUnitTypes::RenderUnit blurUnit() const; +%Docstring +Returns the units used for the glow blur level (radius). + +:return: units for blur level + +.. seealso:: :py:func:`setBlurUnit` + +.. seealso:: :py:func:`blurLevel` + +.. seealso:: :py:func:`blurMapUnitScale` + +.. versionadded:: 3.4.9 %End - int blurLevel() const; + void setBlurMapUnitScale( const QgsMapUnitScale &scale ); %Docstring -Returns the blur level (strength) for the glow. +Sets the map unit scale used for the glow blur strength (radius). -:return: blur level. Value will be between 0 and 16, with larger - values indicating greater blur strength. +:param scale: map unit scale for blur strength + +.. seealso:: :py:func:`blurMapUnitScale` .. seealso:: :py:func:`setBlurLevel` + +.. seealso:: :py:func:`setBlurUnit` + +.. versionadded:: 3.4.9 +%End + + const QgsMapUnitScale &blurMapUnitScale() const; +%Docstring +Returns the map unit scale used for the glow blur strength (radius). + +:return: map unit scale for blur strength + +.. seealso:: :py:func:`setBlurMapUnitScale` + +.. seealso:: :py:func:`blurLevel` + +.. seealso:: :py:func:`blurUnit` + +.. versionadded:: 3.4.9 %End void setOpacity( const double opacity ); diff --git a/python/core/auto_generated/effects/qgsshadoweffect.sip.in b/python/core/auto_generated/effects/qgsshadoweffect.sip.in index 7e35bd97a2..240421bf95 100644 --- a/python/core/auto_generated/effects/qgsshadoweffect.sip.in +++ b/python/core/auto_generated/effects/qgsshadoweffect.sip.in @@ -29,24 +29,92 @@ Base class for paint effects which offset, blurred shadows virtual void readProperties( const QgsStringMap &props ); - void setBlurLevel( const int level ); + void setBlurLevel( const double level ); %Docstring -Sets blur level (strength) for the shadow. +Sets blur level (radius) for the shadow. -:param level: blur level. Values between 0 and 16 are valid, with larger +:param level: blur level. values indicating greater blur strength. .. seealso:: :py:func:`blurLevel` + +.. seealso:: :py:func:`setBlurUnit` + +.. seealso:: :py:func:`setBlurMapUnitScale` %End - int blurLevel() const; + double blurLevel() const; %Docstring -Returns the blur level (strength) for the shadow. +Returns the blur level (radius) for the shadow. -:return: blur level. Value will be between 0 and 16, with larger +:return: blur level. values indicating greater blur strength. .. seealso:: :py:func:`setBlurLevel` + +.. seealso:: :py:func:`blurUnit` + +.. seealso:: :py:func:`blurMapUnitScale` +%End + + void setBlurUnit( const QgsUnitTypes::RenderUnit unit ); +%Docstring +Sets the units used for the shadow blur level (radius). + +:param unit: units for blur level + +.. seealso:: :py:func:`blurUnit` + +.. seealso:: :py:func:`setBlurLevel` + +.. seealso:: :py:func:`setBlurMapUnitScale` + +.. versionadded:: 3.4.9 +%End + + QgsUnitTypes::RenderUnit blurUnit() const; +%Docstring +Returns the units used for the shadow blur level (radius). + +:return: units for blur level + +.. seealso:: :py:func:`setBlurUnit` + +.. seealso:: :py:func:`blurLevel` + +.. seealso:: :py:func:`blurMapUnitScale` + +.. versionadded:: 3.4.9 +%End + + void setBlurMapUnitScale( const QgsMapUnitScale &scale ); +%Docstring +Sets the map unit scale used for the shadow blur strength (radius). + +:param scale: map unit scale for blur strength + +.. seealso:: :py:func:`blurMapUnitScale` + +.. seealso:: :py:func:`setBlurLevel` + +.. seealso:: :py:func:`setBlurUnit` + +.. versionadded:: 3.4.9 +%End + + const QgsMapUnitScale &blurMapUnitScale() const; +%Docstring +Returns the map unit scale used for the shadow blur strength (radius). + +:return: map unit scale for blur strength + +.. seealso:: :py:func:`setBlurMapUnitScale` + +.. seealso:: :py:func:`blurLevel` + +.. seealso:: :py:func:`blurUnit` + +.. versionadded:: 3.4.9 %End void setOffsetAngle( const int angle ); diff --git a/python/core/auto_generated/qgsattributeeditorelement.sip.in b/python/core/auto_generated/qgsattributeeditorelement.sip.in index afc767d3e1..27e2752a86 100644 --- a/python/core/auto_generated/qgsattributeeditorelement.sip.in +++ b/python/core/auto_generated/qgsattributeeditorelement.sip.in @@ -55,7 +55,7 @@ layer. %Docstring Constructor -:param type: The type of the new element. Should never +:param type: The type of the new element. :param name: :param parent: %End diff --git a/python/core/auto_generated/qgslabelsearchtree.sip.in b/python/core/auto_generated/qgslabelsearchtree.sip.in index 61fc8bc91b..dd494f2f1f 100644 --- a/python/core/auto_generated/qgslabelsearchtree.sip.in +++ b/python/core/auto_generated/qgslabelsearchtree.sip.in @@ -11,6 +11,7 @@ + class QgsLabelSearchTree { %Docstring @@ -37,6 +38,13 @@ Removes and deletes all the entries + void setMapSettings( const QgsMapSettings &settings ); +%Docstring +Sets the map ``settings`` associated with the labeling run. + +.. versionadded:: 3.4.8 +%End + private: //! QgsLabelSearchTree cannot be copied. QgsLabelSearchTree( const QgsLabelSearchTree &rh ); diff --git a/python/core/auto_generated/qgspallabeling.sip.in b/python/core/auto_generated/qgspallabeling.sip.in index f5906edc02..d68951b61e 100644 --- a/python/core/auto_generated/qgspallabeling.sip.in +++ b/python/core/auto_generated/qgspallabeling.sip.in @@ -19,25 +19,58 @@ class QgsLabelPosition #include "qgspallabeling.h" %End public: - QgsLabelPosition( int id, double r, const QVector< QgsPointXY > &corners, const QgsRectangle &rect, double w, double h, const QString &layer, const QString &labeltext, const QFont &labelfont, bool upside_down, bool diagram = false, bool pinned = false, const QString &providerId = QString() ); + + QgsLabelPosition( QgsFeatureId id, double r, const QVector< QgsPointXY > &corners, const QgsRectangle &rect, double w, double h, const QString &layer, const QString &labeltext, const QFont &labelfont, bool upside_down, bool diagram = false, bool pinned = false, const QString &providerId = QString(), + const QgsGeometry &labelGeometry = QgsGeometry() ); +%Docstring +Constructor for QgsLabelPosition. + +:param id: associated feature ID +:param r: label rotation in degrees clockwise +:param corners: corner points of label bounding box, in map units +:param rect: label bounding box, in map units +:param w: width of label, in map units +:param h: height of label, in map units +:param layer: ID of associated map layer +:param labeltext: text rendered for label +:param labelfont: font used to render label +:param upside_down: TRUE if label is upside down +:param diagram: TRUE if label is a diagram +:param pinned: TRUE if label has pinned placement +:param providerId: ID of associated label provider +:param labelGeometry: polygon geometry of label boundary +%End QgsLabelPosition(); %Docstring Constructor for QgsLabelPosition %End - int featureId; + QgsFeatureId featureId; + double rotation; + QVector< QgsPointXY > cornerPoints; QgsRectangle labelRect; + + QgsGeometry labelGeometry; + double width; + double height; + QString layerID; + QString labelText; + QFont labelFont; + bool upsideDown; + bool isDiagram; + bool isPinned; + QString providerID; }; @@ -238,6 +271,7 @@ class QgsPalLayerSettings RepeatDistanceUnit, Priority, PredefinedPositionOrder, + LinePlacementOptions, // rendering ScaleVisibility, @@ -516,6 +550,13 @@ Returns infos about labels at a given (map) position QList<QgsLabelPosition> labelsWithinRect( const QgsRectangle &r ) const; %Docstring Returns infos about labels within a given (map) rectangle +%End + + void setMapSettings( const QgsMapSettings &settings ); +%Docstring +Sets the map ``settings`` associated with the labeling run. + +.. versionadded:: 3.4.8 %End private: @@ -538,7 +579,7 @@ called to find out whether the layer is used for labeling %End - static QgsGeometry prepareGeometry( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry() ) /Factory/; + static QgsGeometry prepareGeometry( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry(), bool mergeLines = false ) /Factory/; %Docstring Prepares a geometry for registration with PAL. Handles reprojection, rotation, clipping, etc. @@ -546,13 +587,14 @@ Prepares a geometry for registration with PAL. Handles reprojection, rotation, c :param context: render context :param ct: coordinate transform, or invalid transform if no transformation required :param clipGeometry: geometry to clip features to, if applicable +:param mergeLines: TRUE if touching lines from this layer will be merged and treated as single features during labeling :return: prepared geometry .. versionadded:: 2.9 %End - static bool geometryRequiresPreparation( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry() ); + static bool geometryRequiresPreparation( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry(), bool mergeLines = false ); %Docstring Checks whether a geometry requires preparation before registration with PAL @@ -560,6 +602,7 @@ Checks whether a geometry requires preparation before registration with PAL :param context: render context :param ct: coordinate transform, or invalid transform if no transformation required :param clipGeometry: geometry to clip features to, if applicable +:param mergeLines: TRUE if touching lines from this layer will be merged and treated as single features during labeling :return: true if geometry requires preparation diff --git a/python/core/auto_generated/qgsrendercontext.sip.in b/python/core/auto_generated/qgsrendercontext.sip.in index bded1fa66d..d2c06c4a7e 100644 --- a/python/core/auto_generated/qgsrendercontext.sip.in +++ b/python/core/auto_generated/qgsrendercontext.sip.in @@ -203,6 +203,11 @@ render and represents the exact bounds of the map being rendered. %End const QgsMapToPixel &mapToPixel() const; +%Docstring +Returns the context's map to pixel transform, which transforms between map coordinates and device coordinates. + +.. seealso:: :py:func:`setMapToPixel` +%End double scaleFactor() const; %Docstring @@ -214,8 +219,20 @@ per millimeter. %End bool renderingStopped() const; +%Docstring +Returns TRUE if the rendering operation has been stopped and any ongoing +rendering should be canceled immediately. + +.. seealso:: :py:func:`setRenderingStopped` +%End bool forceVectorOutput() const; +%Docstring +Returns TRUE if rendering operations should use vector operations instead +of any faster raster shortcuts. + +.. seealso:: :py:func:`setForceVectorOutput` +%End bool useAdvancedEffects() const; %Docstring @@ -228,6 +245,11 @@ Used to enable or disable advanced effects such as blend modes %End bool drawEditingInformation() const; +%Docstring +Returns TRUE if edit markers should be drawn during the render operation. + +.. seealso:: :py:func:`setDrawEditingInformation` +%End double rendererScale() const; %Docstring @@ -239,6 +261,11 @@ for the rendered map, eg 1000.0 for a 1:1000 map render. QColor selectionColor() const; +%Docstring +Returns the color to use when rendering selected features. + +.. seealso:: :py:func:`setSelectionColor` +%End bool showSelection() const; %Docstring @@ -267,6 +294,11 @@ Set to an invalid QgsCoordinateTransform to indicate that no transformation is r %End void setMapToPixel( const QgsMapToPixel &mtp ); +%Docstring +Sets the context's map to pixel transform, which transforms between map coordinates and device coordinates. + +.. seealso:: :py:func:`mapToPixel` +%End void setExtent( const QgsRectangle &extent ); %Docstring @@ -298,8 +330,19 @@ render and represents the exact bounds of the map being rendered. %End void setDrawEditingInformation( bool b ); +%Docstring +Sets whether edit markers should be drawn during the render operation. + +.. seealso:: :py:func:`drawEditingInformation` +%End void setRenderingStopped( bool stopped ); +%Docstring +Sets whether the rendering operation has been ``stopped`` and any ongoing +rendering should be canceled immediately. + +.. seealso:: :py:func:`renderingStopped` +%End void setDistanceArea( const QgsDistanceArea &distanceArea ); %Docstring @@ -336,8 +379,20 @@ of any rendering operations. %End void setForceVectorOutput( bool force ); +%Docstring +Sets whether rendering operations should use vector operations instead +of any faster raster shortcuts. + +.. seealso:: :py:func:`forceVectorOutput` +%End + void setSelectionColor( const QColor &color ); +%Docstring +Sets the ``color`` to use when rendering selected features. + +.. seealso:: :py:func:`selectionColor` +%End void setShowSelection( bool showSelection ); %Docstring diff --git a/python/core/auto_generated/raster/qgsrasterinterface.sip.in b/python/core/auto_generated/raster/qgsrasterinterface.sip.in index 06a1010979..dc22c36d55 100644 --- a/python/core/auto_generated/raster/qgsrasterinterface.sip.in +++ b/python/core/auto_generated/raster/qgsrasterinterface.sip.in @@ -61,6 +61,25 @@ Whether our painter is drawing to a temporary image used just by this layer Set whether our painter is drawing to a temporary image used just by this layer .. seealso:: :py:func:`renderPartialOutput` +%End + + void appendError( const QString &error ); +%Docstring +Appends an error message to the stored list of errors. Should be called +whenever an error is encountered while retrieving a raster block. + +.. seealso:: :py:func:`errors` + +.. versionadded:: 3.8.0 +%End + + QStringList errors() const; +%Docstring +Returns a list of any errors encountered while retrieving the raster block. + +.. seealso:: :py:func:`appendError` + +.. versionadded:: 3.8.0 %End }; @@ -327,8 +346,8 @@ Returns a band histogram. Histograms are cached in providers. maximum = PyFloat_AsDouble( a3 ); } - QgsRasterHistogram h = sipCpp->histogram( a0, a1, minimum, maximum, *a4, a5, a6, a7 ); - sipRes = &h; + QgsRasterHistogram *h = new QgsRasterHistogram( sipCpp->histogram( a0, a1, minimum, maximum, *a4, a5, a6, a7 ) ); + return sipConvertFromType( h, sipType_QgsRasterHistogram, Py_None ); %End diff --git a/python/core/auto_generated/symbology/qgsheatmaprenderer.sip.in b/python/core/auto_generated/symbology/qgsheatmaprenderer.sip.in index 368580e528..b2f6cd1ba8 100644 --- a/python/core/auto_generated/symbology/qgsheatmaprenderer.sip.in +++ b/python/core/auto_generated/symbology/qgsheatmaprenderer.sip.in @@ -29,7 +29,7 @@ A renderer which draws points as a live heatmap virtual void startRender( QgsRenderContext &context, const QgsFields &fields ); - virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ); + virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) throw( QgsCsException ); virtual void stopRender( QgsRenderContext &context ); diff --git a/python/core/auto_generated/symbology/qgsinvertedpolygonrenderer.sip.in b/python/core/auto_generated/symbology/qgsinvertedpolygonrenderer.sip.in index abc65c2ec4..8e9248605a 100644 --- a/python/core/auto_generated/symbology/qgsinvertedpolygonrenderer.sip.in +++ b/python/core/auto_generated/symbology/qgsinvertedpolygonrenderer.sip.in @@ -46,7 +46,7 @@ Direct copies are forbidden. Use clone() instead. virtual void startRender( QgsRenderContext &context, const QgsFields &fields ); - virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ); + virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) throw( QgsCsException ); %Docstring Renders a given feature. diff --git a/python/core/auto_generated/symbology/qgsnullsymbolrenderer.sip.in b/python/core/auto_generated/symbology/qgsnullsymbolrenderer.sip.in index d725009db7..bcfe15c6ac 100644 --- a/python/core/auto_generated/symbology/qgsnullsymbolrenderer.sip.in +++ b/python/core/auto_generated/symbology/qgsnullsymbolrenderer.sip.in @@ -29,7 +29,7 @@ and diagrams for the layer. Selected features will also be drawn with a default virtual QgsSymbol *originalSymbolForFeature( const QgsFeature &feature, QgsRenderContext &context ) const; - virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ); + virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) throw( QgsCsException ); virtual void stopRender( QgsRenderContext &context ); diff --git a/python/core/auto_generated/symbology/qgspointdistancerenderer.sip.in b/python/core/auto_generated/symbology/qgspointdistancerenderer.sip.in index 0ab7e9b874..659a8ab68c 100644 --- a/python/core/auto_generated/symbology/qgspointdistancerenderer.sip.in +++ b/python/core/auto_generated/symbology/qgspointdistancerenderer.sip.in @@ -65,7 +65,7 @@ Constructor for QgsPointDistanceRenderer. virtual void toSld( QDomDocument &doc, QDomElement &element, const QgsStringMap &props = QgsStringMap() ) const; - virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ); + virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) throw( QgsCsException ); virtual QSet<QString> usedAttributes( const QgsRenderContext &context ) const; diff --git a/python/core/auto_generated/symbology/qgsrenderer.sip.in b/python/core/auto_generated/symbology/qgsrenderer.sip.in index 05a6bddaf2..917a9a4290 100644 --- a/python/core/auto_generated/symbology/qgsrenderer.sip.in +++ b/python/core/auto_generated/symbology/qgsrenderer.sip.in @@ -175,7 +175,7 @@ and generate a proper subclass. :return: A copy of this renderer %End - virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ); + virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) throw( QgsCsException ); %Docstring Render a feature using this renderer in the given context. Must be called between startRender() and stopRender() calls. @@ -476,12 +476,7 @@ implementation does not use subrenderers and will always return null. protected: QgsFeatureRenderer( const QString &type ); - void renderFeatureWithSymbol( const QgsFeature &feature, - QgsSymbol *symbol, - QgsRenderContext &context, - int layer, - bool selected, - bool drawVertexMarker ); + void renderFeatureWithSymbol( const QgsFeature &feature, QgsSymbol *symbol, QgsRenderContext &context, int layer, bool selected, bool drawVertexMarker ) throw( QgsCsException ); %Docstring Render the ``feature`` with the ``symbol`` using ``context``. Use ``layer`` to specify the symbol layer, ``selected`` to diff --git a/python/core/auto_generated/symbology/qgsrulebasedrenderer.sip.in b/python/core/auto_generated/symbology/qgsrulebasedrenderer.sip.in index a1f28f4c2e..1464129e4b 100644 --- a/python/core/auto_generated/symbology/qgsrulebasedrenderer.sip.in +++ b/python/core/auto_generated/symbology/qgsrulebasedrenderer.sip.in @@ -453,7 +453,7 @@ Constructor for convenience. Creates a root rule and adds a default rule with sy Returns symbol for current feature. Should not be used individually: there could be more symbols for a feature %End - virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ); + virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) throw( QgsCsException ); virtual void startRender( QgsRenderContext &context, const QgsFields &fields ); diff --git a/python/core/auto_generated/symbology/qgssymbol.sip.in b/python/core/auto_generated/symbology/qgssymbol.sip.in index 0687f0440e..888e0053ff 100644 --- a/python/core/auto_generated/symbology/qgssymbol.sip.in +++ b/python/core/auto_generated/symbology/qgssymbol.sip.in @@ -428,7 +428,7 @@ Returns whether the symbol utilizes any data defined properties. .. deprecated:: Will be removed in QGIS 4.0 %End - void renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false, int currentVertexMarkerType = 0, double currentVertexMarkerSize = 0.0 ); + void renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false, int currentVertexMarkerType = 0, double currentVertexMarkerSize = 0.0 ) throw( QgsCsException ); %Docstring Render a feature. Before calling this the startRender() method should be called to initialize the rendering process. After rendering all features stopRender() must be called. diff --git a/python/core/contextmanagers.py b/python/core/contextmanagers.py index 8200db3463..cfa5301208 100644 --- a/python/core/contextmanagers.py +++ b/python/core/contextmanagers.py @@ -21,7 +21,7 @@ __author__ = 'Nathan Woodrow' __date__ = 'May 2014' __copyright__ = '(C) 2014, Nathan Woodrow' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import sys from contextlib import contextmanager diff --git a/python/gui/auto_additions/qgsgui.py b/python/gui/auto_additions/qgsgui.py new file mode 100644 index 0000000000..ca9571e97c --- /dev/null +++ b/python/gui/auto_additions/qgsgui.py @@ -0,0 +1,2 @@ +# The following has been generated automatically from src/gui/qgsgui.h +QgsGui.ProjectCrsBehavior.baseClass = QgsGui diff --git a/python/gui/auto_generated/editorwidgets/qgsrelationreferencewidget.sip.in b/python/gui/auto_generated/editorwidgets/qgsrelationreferencewidget.sip.in index 2f1874f854..0bd80d6873 100644 --- a/python/gui/auto_generated/editorwidgets/qgsrelationreferencewidget.sip.in +++ b/python/gui/auto_generated/editorwidgets/qgsrelationreferencewidget.sip.in @@ -72,7 +72,7 @@ determines if the foreign key is shown in a combox box or a read-only line edit bool allowMapIdentification(); %Docstring -determines if the widge offers the possibility to select the related feature on the map (using a dedicated map tool) +determines if the widget offers the possibility to select the related feature on the map (using a dedicated map tool) %End void setAllowMapIdentification( bool allowMapIdentification ); diff --git a/python/gui/auto_generated/qgsadvanceddigitizingcanvasitem.sip.in b/python/gui/auto_generated/qgsadvanceddigitizingcanvasitem.sip.in index d256f8fc58..7df742bcc9 100644 --- a/python/gui/auto_generated/qgsadvanceddigitizingcanvasitem.sip.in +++ b/python/gui/auto_generated/qgsadvanceddigitizingcanvasitem.sip.in @@ -10,6 +10,7 @@ + class QgsAdvancedDigitizingCanvasItem : QgsMapCanvasItem { %Docstring @@ -25,8 +26,6 @@ The QgsAdvancedDigitizingCanvasItem class draws the graphical elements of the CA virtual void paint( QPainter *painter ); - protected: - }; /************************************************************************ diff --git a/python/gui/auto_generated/qgsadvanceddigitizingdockwidget.sip.in b/python/gui/auto_generated/qgsadvanceddigitizingdockwidget.sip.in index b551b7016b..b1ca78972d 100644 --- a/python/gui/auto_generated/qgsadvanceddigitizingdockwidget.sip.in +++ b/python/gui/auto_generated/qgsadvanceddigitizingdockwidget.sip.in @@ -264,6 +264,13 @@ Removes all points from the CAD point list Adds point to the CAD point list .. versionadded:: 3.0 +%End + + void removePreviousPoint(); +%Docstring +Remove previous point in the CAD point list + +.. versionadded:: 3.8 %End void setPoints( const QList<QgsPointXY> &points ); diff --git a/python/gui/auto_generated/qgsgui.sip.in b/python/gui/auto_generated/qgsgui.sip.in index 1ac8edd1fb..6ea49b8c95 100644 --- a/python/gui/auto_generated/qgsgui.sip.in +++ b/python/gui/auto_generated/qgsgui.sip.in @@ -10,7 +10,7 @@ -class QgsGui +class QgsGui : QObject { %Docstring QgsGui is a singleton class containing various registry and other global members @@ -24,6 +24,12 @@ related to GUI classes. %End public: + enum ProjectCrsBehavior + { + UseCrsOfFirstLayerAdded, + UsePresetCrs, + }; + static QgsGui *instance(); diff --git a/python/gui/auto_generated/qgsmaptooladvanceddigitizing.sip.in b/python/gui/auto_generated/qgsmaptooladvanceddigitizing.sip.in index e011743e59..56ff3c2f2a 100644 --- a/python/gui/auto_generated/qgsmaptooladvanceddigitizing.sip.in +++ b/python/gui/auto_generated/qgsmaptooladvanceddigitizing.sip.in @@ -117,6 +117,8 @@ This method is protected because it should be a decision of the map tool and not .. versionadded:: 3.0 %End + + public: virtual void cadCanvasPressEvent( QgsMapMouseEvent *e ); diff --git a/python/gui/auto_generated/qgsnewhttpconnection.sip.in b/python/gui/auto_generated/qgsnewhttpconnection.sip.in index 6e6429f6b3..625ec52421 100644 --- a/python/gui/auto_generated/qgsnewhttpconnection.sip.in +++ b/python/gui/auto_generated/qgsnewhttpconnection.sip.in @@ -97,6 +97,7 @@ Returns the "test connection" button. + virtual QString wfsSettingsKey( const QString &base, const QString &connectionName ) const; %Docstring Returns the QSettings key for WFS related settings for the connection. diff --git a/python/gui/auto_generated/qgsscalerangewidget.sip.in b/python/gui/auto_generated/qgsscalerangewidget.sip.in index 2f7616a06a..ad3da5efb2 100644 --- a/python/gui/auto_generated/qgsscalerangewidget.sip.in +++ b/python/gui/auto_generated/qgsscalerangewidget.sip.in @@ -68,6 +68,13 @@ The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map. .. seealso:: :py:func:`setMaximumScale` .. seealso:: :py:func:`setScaleRange` + +.. warning:: + + Calling setMinimumScale() places a restriction on the acceptable maximum scale for the + widget, and will alter any previously set maximum scale to pass this constraint. Always + call setMinimumScale() before setMaximumScale() when restoring a scale range in the widget, or + use the convenience method setScaleRange() instead. %End void setMaximumScale( double scale ); @@ -80,6 +87,13 @@ The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map. .. seealso:: :py:func:`setMinimumScale` .. seealso:: :py:func:`setScaleRange` + +.. warning:: + + Calling setMinimumScale() places a restriction on the acceptable maximum scale for the + widget, and will alter any previously set maximum scale to pass this constraint. Always + call setMinimumScale() before setMaximumScale() when restoring a scale range in the widget, or + use the convenience method setScaleRange() instead. %End void setScaleRange( double min, double max ); diff --git a/python/gui/auto_generated/qgsstatusbar.sip.in b/python/gui/auto_generated/qgsstatusbar.sip.in index 6f42218be8..11edbff18b 100644 --- a/python/gui/auto_generated/qgsstatusbar.sip.in +++ b/python/gui/auto_generated/qgsstatusbar.sip.in @@ -88,6 +88,15 @@ Removes any temporary message being shown. .. seealso:: :py:func:`showMessage` %End + void setParentStatusBar( QStatusBar *statusBar ); +%Docstring +Sets the parent status bar. +Messages that are shown on the parent status bar will be intercepted +and shown on this status bar too. + +.. versionadded:: 3.8 +%End + protected: diff --git a/python/gui/auto_generated/symbology/qgsinvertedpolygonrendererwidget.sip.in b/python/gui/auto_generated/symbology/qgsinvertedpolygonrendererwidget.sip.in index 7517489b06..c7034e0515 100644 --- a/python/gui/auto_generated/symbology/qgsinvertedpolygonrendererwidget.sip.in +++ b/python/gui/auto_generated/symbology/qgsinvertedpolygonrendererwidget.sip.in @@ -45,6 +45,9 @@ Constructor virtual void setContext( const QgsSymbolWidgetContext &context ); + virtual void setDockMode( bool dockMode ); + + protected: }; diff --git a/python/gui/gui_auto.sip b/python/gui/gui_auto.sip index bff290273b..ac4f3f169a 100644 --- a/python/gui/gui_auto.sip +++ b/python/gui/gui_auto.sip @@ -3,7 +3,6 @@ %Include auto_generated/qgsdetaileditemdata.sip %Include auto_generated/qgsexpressionbuilderdialog.sip %Include auto_generated/qgsgeometryrubberband.sip -%Include auto_generated/qgsgui.sip %Include auto_generated/qgshelp.sip %Include auto_generated/qgshighlight.sip %Include auto_generated/qgsmapcanvasitem.sip @@ -122,6 +121,7 @@ %Include auto_generated/qgsgradientcolorrampdialog.sip %Include auto_generated/qgsgradientstopeditor.sip %Include auto_generated/qgsgroupwmsdatadialog.sip +%Include auto_generated/qgsgui.sip %Include auto_generated/qgshistogramwidget.sip %Include auto_generated/qgsidentifymenu.sip %Include auto_generated/qgskeyvaluewidget.sip diff --git a/python/plugins/MetaSearch/resources/connections-default.xml b/python/plugins/MetaSearch/resources/connections-default.xml index c1c2bed12a..aae5269305 100644 --- a/python/plugins/MetaSearch/resources/connections-default.xml +++ b/python/plugins/MetaSearch/resources/connections-default.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Guidance: https://docs.qgis.org/2.18/en/docs/user_manual/plugins/plugins_metasearch.html#managing-catalog-services --> +<!-- Guidance: https://docs.qgis.org/testing/en/docs/user_manual/plugins/core_plugins/plugins_metasearch.html#managing-catalog-services --> <qgsCSWConnections version="1.0"> <csw name="USA: Data.gov CSW" url="https://catalog.data.gov/csw-all"/> <csw name="Danmark: National CSW (geodata-info)" url="https://geodata-info.dk/srv/dan/csw"/> diff --git a/python/plugins/MetaSearch/util.py b/python/plugins/MetaSearch/util.py index 6633775b5e..aa50904bb9 100644 --- a/python/plugins/MetaSearch/util.py +++ b/python/plugins/MetaSearch/util.py @@ -142,10 +142,10 @@ def get_help_url(): else: version = '.'.join([major, minor]) - path = '%s/%s/docs/user_manual/plugins/plugins_metasearch.html' % \ + path = '%s/%s/docs/user_manual/plugins/core_plugins/plugins_metasearch.html' % \ (version, locale_name) - return '/'.join(['http://docs.qgis.org', path]) + return '/'.join(['https://docs.qgis.org', path]) def open_url(url): diff --git a/python/plugins/db_manager/db_plugins/oracle/sql_dictionary.py b/python/plugins/db_manager/db_plugins/oracle/sql_dictionary.py index 165b7ee497..980046ff1d 100644 --- a/python/plugins/db_manager/db_plugins/oracle/sql_dictionary.py +++ b/python/plugins/db_manager/db_plugins/oracle/sql_dictionary.py @@ -27,7 +27,7 @@ __author__ = 'Médéric RIBREUX' __date__ = 'August 2014' __copyright__ = '(C) 2014, Médéric RIBREUX' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # keywords keywords = [ diff --git a/python/plugins/db_manager/db_plugins/plugin.py b/python/plugins/db_manager/db_plugins/plugin.py index 348a337bdd..4d52c85e38 100644 --- a/python/plugins/db_manager/db_plugins/plugin.py +++ b/python/plugins/db_manager/db_plugins/plugin.py @@ -27,7 +27,12 @@ from qgis.PyQt.QtWidgets import QApplication, QAction, QMenu, QInputDialog, QMes from qgis.PyQt.QtGui import QKeySequence, QIcon from qgis.gui import QgsMessageBar -from qgis.core import Qgis, QgsApplication, QgsSettings +from qgis.core import ( + Qgis, + QgsApplication, + QgsSettings, + QgsWkbTypes +) from ..db_plugins import createDbPlugin @@ -517,8 +522,28 @@ class Database(DbItemObject): def tables(self, schema=None, sys_tables=False): tables = self.connector.getTables(schema.name if schema else None, sys_tables) if tables is not None: - tables = [self.tablesFactory(x, self, schema) for x in tables] - return tables + ret = [] + for t in tables: + table = self.tablesFactory(t, self, schema) + ret.append(table) + + # Similarly to what to browser does, if the geom type is generic geometry, + # we additionnly add three copies of the layer to allow importing + if isinstance(table, VectorTable): + if table.geomType == 'GEOMETRY': + point_table = self.tablesFactory(t, self, schema) + point_table.geomType = 'POINT' + ret.append(point_table) + + line_table = self.tablesFactory(t, self, schema) + line_table.geomType = 'LINESTRING' + ret.append(line_table) + + poly_table = self.tablesFactory(t, self, schema) + poly_table.geomType = 'POLYGON' + ret.append(poly_table) + + return ret def createTable(self, table, fields, schema=None): field_defs = [x.definition() for x in fields] @@ -683,6 +708,13 @@ class Table(DbItemObject): geomCol = self.geomColumn if self.type in [Table.VectorType, Table.RasterType] else "" uniqueCol = self.getValidQgisUniqueFields(True) if self.isView else None uri.setDataSource(schema, self.name, geomCol if geomCol else None, None, uniqueCol.name if uniqueCol else "") + uri.setSrid(str(self.srid)) + for f in self.fields(): + if f.primaryKey: + uri.setKeyColumn(f.name) + break + uri.setWkbType(QgsWkbTypes.parseType(self.geomType)) + return uri def mimeUri(self): diff --git a/python/plugins/db_manager/db_plugins/postgis/connector_test.py b/python/plugins/db_manager/db_plugins/postgis/connector_test.py index 82055410d4..ab7879f256 100644 --- a/python/plugins/db_manager/db_plugins/postgis/connector_test.py +++ b/python/plugins/db_manager/db_plugins/postgis/connector_test.py @@ -21,7 +21,7 @@ __author__ = 'Sandro Santilli' __date__ = 'May 2017' __copyright__ = '(C) 2017, Sandro Santilli' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import qgis diff --git a/python/plugins/db_manager/db_plugins/postgis/plugin_test.py b/python/plugins/db_manager/db_plugins/postgis/plugin_test.py index 08960473fd..7ac42f5421 100644 --- a/python/plugins/db_manager/db_plugins/postgis/plugin_test.py +++ b/python/plugins/db_manager/db_plugins/postgis/plugin_test.py @@ -21,7 +21,7 @@ __author__ = 'Sandro Santilli' __date__ = 'May 2017' __copyright__ = '(C) 2017, Sandro Santilli' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re diff --git a/python/plugins/db_manager/db_plugins/postgis/sql_dictionary.py b/python/plugins/db_manager/db_plugins/postgis/sql_dictionary.py index 0f0c73b988..fa7b63de6a 100644 --- a/python/plugins/db_manager/db_plugins/postgis/sql_dictionary.py +++ b/python/plugins/db_manager/db_plugins/postgis/sql_dictionary.py @@ -22,7 +22,7 @@ __author__ = 'Giuseppe Sucameli' __date__ = 'April 2012' __copyright__ = '(C) 2012, Giuseppe Sucameli' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # keywords keywords = [ diff --git a/python/plugins/db_manager/db_plugins/spatialite/sql_dictionary.py b/python/plugins/db_manager/db_plugins/spatialite/sql_dictionary.py index e0a99ddde4..40bbbbcccc 100644 --- a/python/plugins/db_manager/db_plugins/spatialite/sql_dictionary.py +++ b/python/plugins/db_manager/db_plugins/spatialite/sql_dictionary.py @@ -22,7 +22,7 @@ __author__ = 'Giuseppe Sucameli' __date__ = 'April 2012' __copyright__ = '(C) 2012, Giuseppe Sucameli' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # keywords keywords = [ diff --git a/python/plugins/db_manager/db_plugins/vlayers/sql_dictionary.py b/python/plugins/db_manager/db_plugins/vlayers/sql_dictionary.py index 9fb0d1aa4b..1b740a7e57 100644 --- a/python/plugins/db_manager/db_plugins/vlayers/sql_dictionary.py +++ b/python/plugins/db_manager/db_plugins/vlayers/sql_dictionary.py @@ -22,7 +22,7 @@ __author__ = 'Hugo Mercier' __date__ = 'December 2015' __copyright__ = '(C) 2015, Hugo Mercier' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # keywords diff --git a/python/plugins/db_manager/dlg_field_properties.py b/python/plugins/db_manager/dlg_field_properties.py index 93f715d27f..2aeb94bdec 100644 --- a/python/plugins/db_manager/dlg_field_properties.py +++ b/python/plugins/db_manager/dlg_field_properties.py @@ -22,7 +22,7 @@ __author__ = 'Giuseppe Sucameli' __date__ = 'April 2012' __copyright__ = '(C) 2012, Giuseppe Sucameli' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtWidgets import QDialog, QMessageBox diff --git a/python/plugins/db_manager/dlg_import_vector.py b/python/plugins/db_manager/dlg_import_vector.py index dd65310636..e8abea7a01 100644 --- a/python/plugins/db_manager/dlg_import_vector.py +++ b/python/plugins/db_manager/dlg_import_vector.py @@ -70,6 +70,7 @@ class DlgImportVector(QDialog, Ui_Dialog): self.cboSchema.currentIndexChanged.connect(self.populateTables) self.widgetSourceSrid.setCrs(QgsProject.instance().crs()) self.widgetTargetSrid.setCrs(QgsProject.instance().crs()) + self.updateInputLayer() def setupWorkingMode(self, mode): """ hide the widget to select a layer/file if the input layer is already set """ diff --git a/python/plugins/db_manager/sql_dictionary.py b/python/plugins/db_manager/sql_dictionary.py index cf04ef84ca..d6484a8a0d 100644 --- a/python/plugins/db_manager/sql_dictionary.py +++ b/python/plugins/db_manager/sql_dictionary.py @@ -21,7 +21,7 @@ __author__ = 'Giuseppe Sucameli' __date__ = 'April 2012' __copyright__ = '(C) 2012, Giuseppe Sucameli' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # GENERIC SQL DICTIONARY diff --git a/python/plugins/db_manager/sqledit.py b/python/plugins/db_manager/sqledit.py index c62afcd31a..179513afd8 100644 --- a/python/plugins/db_manager/sqledit.py +++ b/python/plugins/db_manager/sqledit.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import Qt from qgis.PyQt.QtGui import QColor, QFont, QKeySequence diff --git a/python/plugins/processing/ProcessingPlugin.py b/python/plugins/processing/ProcessingPlugin.py index 31579d1cd6..abb1279712 100644 --- a/python/plugins/processing/ProcessingPlugin.py +++ b/python/plugins/processing/ProcessingPlugin.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import shutil import os diff --git a/python/plugins/processing/__init__.py b/python/plugins/processing/__init__.py index 9ba0e2dbf3..8e2e66f829 100644 --- a/python/plugins/processing/__init__.py +++ b/python/plugins/processing/__init__.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from processing.tools.dataobjects import * # NOQA from processing.tools.general import * # NOQA diff --git a/python/plugins/processing/algs/exampleprovider/ExampleAlgorithm.py b/python/plugins/processing/algs/exampleprovider/ExampleAlgorithm.py index 231ed15126..22e3c2e53f 100644 --- a/python/plugins/processing/algs/exampleprovider/ExampleAlgorithm.py +++ b/python/plugins/processing/algs/exampleprovider/ExampleAlgorithm.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsVectorFileWriter, QgsSettings, QgsProcessingUtils diff --git a/python/plugins/processing/algs/exampleprovider/ExampleAlgorithmProvider.py b/python/plugins/processing/algs/exampleprovider/ExampleAlgorithmProvider.py index e76ee9af55..e2d7f6fe32 100644 --- a/python/plugins/processing/algs/exampleprovider/ExampleAlgorithmProvider.py +++ b/python/plugins/processing/algs/exampleprovider/ExampleAlgorithmProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsProcessingProvider from processing.core.ProcessingConfig import Setting, ProcessingConfig diff --git a/python/plugins/processing/algs/exampleprovider/ProcessingExampleProviderPlugin.py b/python/plugins/processing/algs/exampleprovider/ProcessingExampleProviderPlugin.py index f2949e6bc5..40d105a331 100644 --- a/python/plugins/processing/algs/exampleprovider/ProcessingExampleProviderPlugin.py +++ b/python/plugins/processing/algs/exampleprovider/ProcessingExampleProviderPlugin.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import sys diff --git a/python/plugins/processing/algs/exampleprovider/__init__.py b/python/plugins/processing/algs/exampleprovider/__init__.py index 81f1696236..01181506c1 100644 --- a/python/plugins/processing/algs/exampleprovider/__init__.py +++ b/python/plugins/processing/algs/exampleprovider/__init__.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from exampleprovider.ProcessingExampleProviderPlugin import ProcessingExampleProviderPlugin diff --git a/python/plugins/processing/algs/gdal/AssignProjection.py b/python/plugins/processing/algs/gdal/AssignProjection.py index 95488d3ad5..326fc7e3d5 100644 --- a/python/plugins/processing/algs/gdal/AssignProjection.py +++ b/python/plugins/processing/algs/gdal/AssignProjection.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/Buffer.py b/python/plugins/processing/algs/gdal/Buffer.py index 0ac9140254..14f1922dce 100644 --- a/python/plugins/processing/algs/gdal/Buffer.py +++ b/python/plugins/processing/algs/gdal/Buffer.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Giovanni Manghi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessing, QgsProcessingParameterDistance, diff --git a/python/plugins/processing/algs/gdal/ClipRasterByExtent.py b/python/plugins/processing/algs/gdal/ClipRasterByExtent.py index f5d7da0132..1968230a57 100644 --- a/python/plugins/processing/algs/gdal/ClipRasterByExtent.py +++ b/python/plugins/processing/algs/gdal/ClipRasterByExtent.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os @@ -54,12 +54,13 @@ class ClipRasterByExtent(GdalAlgorithm): DATA_TYPE = 'DATA_TYPE' OUTPUT = 'OUTPUT' - TYPES = ['Use input layer data type', 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] - def __init__(self): super().__init__() def initAlgorithm(self, config=None): + + self.TYPES = [self.tr('Use Input Layer Data Type'), 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] + self.addParameter(QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter(QgsProcessingParameterExtent(self.EXTENT, diff --git a/python/plugins/processing/algs/gdal/ClipRasterByMask.py b/python/plugins/processing/algs/gdal/ClipRasterByMask.py index 56d6f5cc0b..841b88aab0 100644 --- a/python/plugins/processing/algs/gdal/ClipRasterByMask.py +++ b/python/plugins/processing/algs/gdal/ClipRasterByMask.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os @@ -58,12 +58,13 @@ class ClipRasterByMask(GdalAlgorithm): DATA_TYPE = 'DATA_TYPE' OUTPUT = 'OUTPUT' - TYPES = ['Use input layer data type', 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] - def __init__(self): super().__init__() def initAlgorithm(self, config=None): + + self.TYPES = [self.tr('Use Input Layer Data Type'), 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] + self.addParameter(QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter(QgsProcessingParameterFeatureSource(self.MASK, diff --git a/python/plugins/processing/algs/gdal/ClipVectorByExtent.py b/python/plugins/processing/algs/gdal/ClipVectorByExtent.py index fb97db04ee..c432cd8731 100644 --- a/python/plugins/processing/algs/gdal/ClipVectorByExtent.py +++ b/python/plugins/processing/algs/gdal/ClipVectorByExtent.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsVectorLayer, QgsProcessing, diff --git a/python/plugins/processing/algs/gdal/ClipVectorByMask.py b/python/plugins/processing/algs/gdal/ClipVectorByMask.py index bbf102c43c..46a8d751e9 100644 --- a/python/plugins/processing/algs/gdal/ClipVectorByMask.py +++ b/python/plugins/processing/algs/gdal/ClipVectorByMask.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessing, QgsProcessingAlgorithm, diff --git a/python/plugins/processing/algs/gdal/ColorRelief.py b/python/plugins/processing/algs/gdal/ColorRelief.py index 8c9d0b3ead..6dcc99b279 100644 --- a/python/plugins/processing/algs/gdal/ColorRelief.py +++ b/python/plugins/processing/algs/gdal/ColorRelief.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.core import (QgsRasterFileWriter, diff --git a/python/plugins/processing/algs/gdal/Dissolve.py b/python/plugins/processing/algs/gdal/Dissolve.py index 79385b320c..dd82f0fbc3 100644 --- a/python/plugins/processing/algs/gdal/Dissolve.py +++ b/python/plugins/processing/algs/gdal/Dissolve.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Giovanni Manghi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingException, QgsProcessingParameterDefinition, diff --git a/python/plugins/processing/algs/gdal/ExecuteSql.py b/python/plugins/processing/algs/gdal/ExecuteSql.py index 7d02a666ad..dfe5a1cf31 100644 --- a/python/plugins/processing/algs/gdal/ExecuteSql.py +++ b/python/plugins/processing/algs/gdal/ExecuteSql.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingException, diff --git a/python/plugins/processing/algs/gdal/GdalAlgorithm.py b/python/plugins/processing/algs/gdal/GdalAlgorithm.py index 4e615f1f94..b3f4107026 100644 --- a/python/plugins/processing/algs/gdal/GdalAlgorithm.py +++ b/python/plugins/processing/algs/gdal/GdalAlgorithm.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re diff --git a/python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py b/python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py index 2adab75115..5951ec9ba3 100644 --- a/python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py +++ b/python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication from qgis.PyQt.QtWidgets import (QWidget, diff --git a/python/plugins/processing/algs/gdal/GdalAlgorithmProvider.py b/python/plugins/processing/algs/gdal/GdalAlgorithmProvider.py index 944f581b0e..35b758e0bf 100644 --- a/python/plugins/processing/algs/gdal/GdalAlgorithmProvider.py +++ b/python/plugins/processing/algs/gdal/GdalAlgorithmProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/GdalUtils.py b/python/plugins/processing/algs/gdal/GdalUtils.py index 8a36e631d1..d78ee5d23e 100644 --- a/python/plugins/processing/algs/gdal/GdalUtils.py +++ b/python/plugins/processing/algs/gdal/GdalUtils.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import subprocess diff --git a/python/plugins/processing/algs/gdal/GridAverage.py b/python/plugins/processing/algs/gdal/GridAverage.py index f385453daf..dd81144b5c 100644 --- a/python/plugins/processing/algs/gdal/GridAverage.py +++ b/python/plugins/processing/algs/gdal/GridAverage.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/GridDataMetrics.py b/python/plugins/processing/algs/gdal/GridDataMetrics.py index 7c97fe00ea..8ebce505c8 100644 --- a/python/plugins/processing/algs/gdal/GridDataMetrics.py +++ b/python/plugins/processing/algs/gdal/GridDataMetrics.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/GridInverseDistance.py b/python/plugins/processing/algs/gdal/GridInverseDistance.py index d84bc4df3b..3f977733a9 100644 --- a/python/plugins/processing/algs/gdal/GridInverseDistance.py +++ b/python/plugins/processing/algs/gdal/GridInverseDistance.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/GridInverseDistanceNearestNeighbor.py b/python/plugins/processing/algs/gdal/GridInverseDistanceNearestNeighbor.py index 574eefe389..1e4e867188 100644 --- a/python/plugins/processing/algs/gdal/GridInverseDistanceNearestNeighbor.py +++ b/python/plugins/processing/algs/gdal/GridInverseDistanceNearestNeighbor.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/GridLinear.py b/python/plugins/processing/algs/gdal/GridLinear.py index 72b4862d64..7cf2a7b2a8 100644 --- a/python/plugins/processing/algs/gdal/GridLinear.py +++ b/python/plugins/processing/algs/gdal/GridLinear.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/GridNearestNeighbor.py b/python/plugins/processing/algs/gdal/GridNearestNeighbor.py index d8ff610fbc..e725a1ebd6 100644 --- a/python/plugins/processing/algs/gdal/GridNearestNeighbor.py +++ b/python/plugins/processing/algs/gdal/GridNearestNeighbor.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/OffsetCurve.py b/python/plugins/processing/algs/gdal/OffsetCurve.py index 7d9c95ca21..5809e28f31 100644 --- a/python/plugins/processing/algs/gdal/OffsetCurve.py +++ b/python/plugins/processing/algs/gdal/OffsetCurve.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Giovanni Manghi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessing, QgsProcessingParameterDefinition, diff --git a/python/plugins/processing/algs/gdal/OgrToPostGis.py b/python/plugins/processing/algs/gdal/OgrToPostGis.py index fb5775caa4..431474f50a 100644 --- a/python/plugins/processing/algs/gdal/OgrToPostGis.py +++ b/python/plugins/processing/algs/gdal/OgrToPostGis.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessing, QgsProcessingException, diff --git a/python/plugins/processing/algs/gdal/OneSideBuffer.py b/python/plugins/processing/algs/gdal/OneSideBuffer.py index f415005bb8..a8544aa8ff 100644 --- a/python/plugins/processing/algs/gdal/OneSideBuffer.py +++ b/python/plugins/processing/algs/gdal/OneSideBuffer.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Giovanni Manghi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessing, QgsProcessingException, diff --git a/python/plugins/processing/algs/gdal/PointsAlongLines.py b/python/plugins/processing/algs/gdal/PointsAlongLines.py index 63c9d71f5a..3005f112b8 100644 --- a/python/plugins/processing/algs/gdal/PointsAlongLines.py +++ b/python/plugins/processing/algs/gdal/PointsAlongLines.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Giovanni Manghi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingException, QgsProcessingParameterFeatureSource, diff --git a/python/plugins/processing/algs/gdal/aspect.py b/python/plugins/processing/algs/gdal/aspect.py index 0f78ded5aa..84ac6a4098 100644 --- a/python/plugins/processing/algs/gdal/aspect.py +++ b/python/plugins/processing/algs/gdal/aspect.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/buildvrt.py b/python/plugins/processing/algs/gdal/buildvrt.py index 6611a46f24..98235c6f1f 100644 --- a/python/plugins/processing/algs/gdal/buildvrt.py +++ b/python/plugins/processing/algs/gdal/buildvrt.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Radoslaw Guzinski' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os @@ -60,9 +60,6 @@ class buildvrt(GdalAlgorithm): RESAMPLING = 'RESAMPLING' SRC_NODATA = 'SRC_NODATA' - RESOLUTION_OPTIONS = ['average', 'highest', 'lowest'] - RESAMPLING_OPTIONS = ['nearest', 'bilinear', 'cubic', 'cubicspline', 'lanczos', 'average', 'mode'] - def __init__(self): super().__init__() @@ -83,12 +80,24 @@ class buildvrt(GdalAlgorithm): def defaultFileExtension(self): return 'vrt' + self.RESAMPLING_OPTIONS = ((self.tr('Nearest Neighbour'), 'nearest'), + (self.tr('Bilinear'), 'bilinear'), + (self.tr('Cubic Convolution'), 'cubic'), + (self.tr('B-Spline Convolution'), 'cubicspline'), + (self.tr('Lanczos Windowed Sinc'), 'lanczos'), + (self.tr('Average'), 'average'), + (self.tr('Mode'), 'mode')) + + self.RESOLUTION_OPTIONS = ((self.tr('Average'), 'average'), + (self.tr('Highest'), 'highest'), + (self.tr('Lowest'), 'lowest')) + self.addParameter(QgsProcessingParameterMultipleLayers(self.INPUT, self.tr('Input layers'), QgsProcessing.TypeRaster)) self.addParameter(QgsProcessingParameterEnum(self.RESOLUTION, self.tr('Resolution'), - options=self.RESOLUTION_OPTIONS, + options=[i[0] for i in self.RESOLUTION_OPTIONS], defaultValue=0)) self.addParameter(QgsProcessingParameterBoolean(self.SEPARATE, self.tr('Place each input file into a separate band'), @@ -111,7 +120,7 @@ class buildvrt(GdalAlgorithm): resampling = QgsProcessingParameterEnum(self.RESAMPLING, self.tr('Resampling algorithm'), - options=self.RESAMPLING_OPTIONS, + options=[i[0] for i in self.RESAMPLING_OPTIONS], defaultValue=0) resampling.setFlags(resampling.flags() | QgsProcessingParameterDefinition.FlagAdvanced) self.addParameter(resampling) @@ -146,7 +155,7 @@ class buildvrt(GdalAlgorithm): def getConsoleCommands(self, parameters, context, feedback, executing=True): arguments = [] arguments.append('-resolution') - arguments.append(self.RESOLUTION_OPTIONS[self.parameterAsEnum(parameters, self.RESOLUTION, context)]) + arguments.append(self.RESOLUTION_OPTIONS[self.parameterAsEnum(parameters, self.RESOLUTION, context)][1]) if self.parameterAsBool(parameters, buildvrt.SEPARATE, context): arguments.append('-separate') if self.parameterAsBool(parameters, buildvrt.PROJ_DIFFERENCE, context): @@ -158,7 +167,7 @@ class buildvrt(GdalAlgorithm): arguments.append('-a_srs') arguments.append(GdalUtils.gdal_crs_string(crs)) arguments.append('-r') - arguments.append(self.RESAMPLING_OPTIONS[self.parameterAsEnum(parameters, self.RESAMPLING, context)]) + arguments.append(self.RESAMPLING_OPTIONS[self.parameterAsEnum(parameters, self.RESAMPLING, context)][1]) if self.SRC_NODATA in parameters and parameters[self.SRC_NODATA] not in (None, ''): nodata = self.parameterAsString(parameters, self.SRC_NODATA, context) diff --git a/python/plugins/processing/algs/gdal/contour.py b/python/plugins/processing/algs/gdal/contour.py index 8148dbd434..3a0b941a07 100644 --- a/python/plugins/processing/algs/gdal/contour.py +++ b/python/plugins/processing/algs/gdal/contour.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/extractprojection.py b/python/plugins/processing/algs/gdal/extractprojection.py index 8f9071df4d..375a20719e 100644 --- a/python/plugins/processing/algs/gdal/extractprojection.py +++ b/python/plugins/processing/algs/gdal/extractprojection.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/fillnodata.py b/python/plugins/processing/algs/gdal/fillnodata.py index 788c056742..f3055ac9cd 100644 --- a/python/plugins/processing/algs/gdal/fillnodata.py +++ b/python/plugins/processing/algs/gdal/fillnodata.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/gdal2tiles.py b/python/plugins/processing/algs/gdal/gdal2tiles.py index 3306fe90e3..e0656d7dae 100644 --- a/python/plugins/processing/algs/gdal/gdal2tiles.py +++ b/python/plugins/processing/algs/gdal/gdal2tiles.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingAlgorithm, diff --git a/python/plugins/processing/algs/gdal/gdal2xyz.py b/python/plugins/processing/algs/gdal/gdal2xyz.py index 8ddd9ea8c4..407b9ce28f 100644 --- a/python/plugins/processing/algs/gdal/gdal2xyz.py +++ b/python/plugins/processing/algs/gdal/gdal2xyz.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingAlgorithm, QgsProcessingException, diff --git a/python/plugins/processing/algs/gdal/gdaladdo.py b/python/plugins/processing/algs/gdal/gdaladdo.py index 3c64f898bf..ae08d514eb 100644 --- a/python/plugins/processing/algs/gdal/gdaladdo.py +++ b/python/plugins/processing/algs/gdal/gdaladdo.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/gdalcalc.py b/python/plugins/processing/algs/gdal/gdalcalc.py index c4b8f95745..1b20304cc7 100644 --- a/python/plugins/processing/algs/gdal/gdalcalc.py +++ b/python/plugins/processing/algs/gdal/gdalcalc.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Giovanni Manghi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingException, QgsProcessingParameterDefinition, diff --git a/python/plugins/processing/algs/gdal/gdalinfo.py b/python/plugins/processing/algs/gdal/gdalinfo.py index 800459caff..634914ded9 100644 --- a/python/plugins/processing/algs/gdal/gdalinfo.py +++ b/python/plugins/processing/algs/gdal/gdalinfo.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/gdaltindex.py b/python/plugins/processing/algs/gdal/gdaltindex.py index 1bf98be466..6c74482f26 100644 --- a/python/plugins/processing/algs/gdal/gdaltindex.py +++ b/python/plugins/processing/algs/gdal/gdaltindex.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Pedro Venancio' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/hillshade.py b/python/plugins/processing/algs/gdal/hillshade.py index 13a7733bc6..17819a5113 100644 --- a/python/plugins/processing/algs/gdal/hillshade.py +++ b/python/plugins/processing/algs/gdal/hillshade.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/merge.py b/python/plugins/processing/algs/gdal/merge.py index 0cbd7cd9cc..277be10c39 100644 --- a/python/plugins/processing/algs/gdal/merge.py +++ b/python/plugins/processing/algs/gdal/merge.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/nearblack.py b/python/plugins/processing/algs/gdal/nearblack.py index 67804354a7..968b84416c 100644 --- a/python/plugins/processing/algs/gdal/nearblack.py +++ b/python/plugins/processing/algs/gdal/nearblack.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/ogr2ogr.py b/python/plugins/processing/algs/gdal/ogr2ogr.py index 063720e6ec..ac9aad107f 100644 --- a/python/plugins/processing/algs/gdal/ogr2ogr.py +++ b/python/plugins/processing/algs/gdal/ogr2ogr.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/ogr2ogrtabletopostgislist.py b/python/plugins/processing/algs/gdal/ogr2ogrtabletopostgislist.py index c31066f2e3..1349978d3a 100644 --- a/python/plugins/processing/algs/gdal/ogr2ogrtabletopostgislist.py +++ b/python/plugins/processing/algs/gdal/ogr2ogrtabletopostgislist.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsSettings diff --git a/python/plugins/processing/algs/gdal/ogr2ogrtopostgislist.py b/python/plugins/processing/algs/gdal/ogr2ogrtopostgislist.py index 32c648fd9d..e014b9b4b7 100644 --- a/python/plugins/processing/algs/gdal/ogr2ogrtopostgislist.py +++ b/python/plugins/processing/algs/gdal/ogr2ogrtopostgislist.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessing, QgsProcessingParameterFeatureSource, diff --git a/python/plugins/processing/algs/gdal/ogrinfo.py b/python/plugins/processing/algs/gdal/ogrinfo.py index c7de5cdfe8..71db6f848c 100644 --- a/python/plugins/processing/algs/gdal/ogrinfo.py +++ b/python/plugins/processing/algs/gdal/ogrinfo.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingException, diff --git a/python/plugins/processing/algs/gdal/pct2rgb.py b/python/plugins/processing/algs/gdal/pct2rgb.py index 89a43ef7b5..f4d6ae24ae 100644 --- a/python/plugins/processing/algs/gdal/pct2rgb.py +++ b/python/plugins/processing/algs/gdal/pct2rgb.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/polygonize.py b/python/plugins/processing/algs/gdal/polygonize.py index 41ab9f5503..97e7585623 100644 --- a/python/plugins/processing/algs/gdal/polygonize.py +++ b/python/plugins/processing/algs/gdal/polygonize.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/proximity.py b/python/plugins/processing/algs/gdal/proximity.py index 83cb6105d1..e71aa0cd6c 100644 --- a/python/plugins/processing/algs/gdal/proximity.py +++ b/python/plugins/processing/algs/gdal/proximity.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/rasterize.py b/python/plugins/processing/algs/gdal/rasterize.py index d76e0bf844..7043b758ed 100644 --- a/python/plugins/processing/algs/gdal/rasterize.py +++ b/python/plugins/processing/algs/gdal/rasterize.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/rasterize_over.py b/python/plugins/processing/algs/gdal/rasterize_over.py index 9928d884c0..8d5ca33deb 100644 --- a/python/plugins/processing/algs/gdal/rasterize_over.py +++ b/python/plugins/processing/algs/gdal/rasterize_over.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/rearrange_bands.py b/python/plugins/processing/algs/gdal/rearrange_bands.py index 9ade547ebb..fa7f796d2c 100644 --- a/python/plugins/processing/algs/gdal/rearrange_bands.py +++ b/python/plugins/processing/algs/gdal/rearrange_bands.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Mathieu Pellerin' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re @@ -52,12 +52,13 @@ class rearrange_bands(GdalAlgorithm): DATA_TYPE = 'DATA_TYPE' OUTPUT = 'OUTPUT' - TYPES = ['Use input layer data type', 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] - def __init__(self): super().__init__() def initAlgorithm(self, config=None): + + self.TYPES = [self.tr('Use Input Layer Data Type'), 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] + self.addParameter(QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter(QgsProcessingParameterBand(self.BANDS, self.tr('Selected band(s)'), diff --git a/python/plugins/processing/algs/gdal/retile.py b/python/plugins/processing/algs/gdal/retile.py index a0db8fca91..224b2f81d8 100644 --- a/python/plugins/processing/algs/gdal/retile.py +++ b/python/plugins/processing/algs/gdal/retile.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessing, QgsProcessingParameterDefinition, @@ -65,11 +65,11 @@ class retile(GdalAlgorithm): super().__init__() def initAlgorithm(self, config=None): - self.methods = ((self.tr('Nearest neighbour'), 'near'), + self.methods = ((self.tr('Nearest Neighbour'), 'near'), (self.tr('Bilinear'), 'bilinear'), (self.tr('Cubic'), 'cubic'), - (self.tr('Cubic spline'), 'cubicspline'), - (self.tr('Lanczos windowed sinc'), 'lanczos'),) + (self.tr('Cubic Spline'), 'cubicspline'), + (self.tr('Lanczos Windowed Sinc'), 'lanczos'),) self.addParameter(QgsProcessingParameterMultipleLayers(self.INPUT, self.tr('Input files'), diff --git a/python/plugins/processing/algs/gdal/rgb2pct.py b/python/plugins/processing/algs/gdal/rgb2pct.py index 8b754ce3c9..0b370ab484 100644 --- a/python/plugins/processing/algs/gdal/rgb2pct.py +++ b/python/plugins/processing/algs/gdal/rgb2pct.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/roughness.py b/python/plugins/processing/algs/gdal/roughness.py index a329545b2f..37b278851d 100644 --- a/python/plugins/processing/algs/gdal/roughness.py +++ b/python/plugins/processing/algs/gdal/roughness.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/sieve.py b/python/plugins/processing/algs/gdal/sieve.py index e553340398..e8491c39e8 100644 --- a/python/plugins/processing/algs/gdal/sieve.py +++ b/python/plugins/processing/algs/gdal/sieve.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/slope.py b/python/plugins/processing/algs/gdal/slope.py index 4d55312837..29ba30eaf4 100644 --- a/python/plugins/processing/algs/gdal/slope.py +++ b/python/plugins/processing/algs/gdal/slope.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/tpi.py b/python/plugins/processing/algs/gdal/tpi.py index 547a7fa729..75e6061b0f 100644 --- a/python/plugins/processing/algs/gdal/tpi.py +++ b/python/plugins/processing/algs/gdal/tpi.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/translate.py b/python/plugins/processing/algs/gdal/translate.py index 40b31d63ea..36f3c2a634 100644 --- a/python/plugins/processing/algs/gdal/translate.py +++ b/python/plugins/processing/algs/gdal/translate.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os @@ -55,12 +55,13 @@ class translate(GdalAlgorithm): DATA_TYPE = 'DATA_TYPE' OUTPUT = 'OUTPUT' - TYPES = ['Use input layer data type', 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] - def __init__(self): super().__init__() def initAlgorithm(self, config=None): + + self.TYPES = [self.tr('Use Input Layer Data Type'), 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] + self.addParameter(QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter(QgsProcessingParameterCrs(self.TARGET_CRS, self.tr('Override the projection for the output file'), diff --git a/python/plugins/processing/algs/gdal/tri.py b/python/plugins/processing/algs/gdal/tri.py index ba86a9389c..37b3bfd947 100644 --- a/python/plugins/processing/algs/gdal/tri.py +++ b/python/plugins/processing/algs/gdal/tri.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/gdal/ui/RasterOptionsWidget.py b/python/plugins/processing/algs/gdal/ui/RasterOptionsWidget.py index 828aa564b8..4ad1b66130 100644 --- a/python/plugins/processing/algs/gdal/ui/RasterOptionsWidget.py +++ b/python/plugins/processing/algs/gdal/ui/RasterOptionsWidget.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtWidgets import QLineEdit, QComboBox from qgis.gui import QgsRasterFormatSaveOptionsWidget diff --git a/python/plugins/processing/algs/gdal/warp.py b/python/plugins/processing/algs/gdal/warp.py index 5a5618857d..73ad679b16 100644 --- a/python/plugins/processing/algs/gdal/warp.py +++ b/python/plugins/processing/algs/gdal/warp.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os @@ -63,24 +63,24 @@ class warp(GdalAlgorithm): EXTRA = 'EXTRA' OUTPUT = 'OUTPUT' - TYPES = ['Use input layer data type', 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] - def __init__(self): super().__init__() def initAlgorithm(self, config=None): - self.methods = ((self.tr('Nearest neighbour'), 'near'), + self.methods = ((self.tr('Nearest Neighbour'), 'near'), (self.tr('Bilinear'), 'bilinear'), (self.tr('Cubic'), 'cubic'), - (self.tr('Cubic spline'), 'cubicspline'), - (self.tr('Lanczos windowed sinc'), 'lanczos'), + (self.tr('Cubic Spline'), 'cubicspline'), + (self.tr('Lanczos Windowed Sinc'), 'lanczos'), (self.tr('Average'), 'average'), (self.tr('Mode'), 'mode'), (self.tr('Maximum'), 'max'), (self.tr('Minimum'), 'min'), (self.tr('Median'), 'med'), - (self.tr('First quartile'), 'q1'), - (self.tr('Third quartile'), 'q3')) + (self.tr('First Quartile'), 'q1'), + (self.tr('Third Quartile'), 'q3')) + + self.TYPES = [self.tr('Use Input Layer Data Type'), 'Byte', 'Int16', 'UInt16', 'UInt32', 'Int32', 'Float32', 'Float64', 'CInt16', 'CInt32', 'CFloat32', 'CFloat64'] self.addParameter(QgsProcessingParameterRasterLayer(self.INPUT, self.tr('Input layer'))) self.addParameter(QgsProcessingParameterCrs(self.SOURCE_CRS, diff --git a/python/plugins/processing/algs/grass7/Grass7Algorithm.py b/python/plugins/processing/algs/grass7/Grass7Algorithm.py index c7e37056a1..136d7fff45 100644 --- a/python/plugins/processing/algs/grass7/Grass7Algorithm.py +++ b/python/plugins/processing/algs/grass7/Grass7Algorithm.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012-2015, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import sys import os diff --git a/python/plugins/processing/algs/grass7/Grass7AlgorithmProvider.py b/python/plugins/processing/algs/grass7/Grass7AlgorithmProvider.py index d0df662f4c..02ace800a8 100644 --- a/python/plugins/processing/algs/grass7/Grass7AlgorithmProvider.py +++ b/python/plugins/processing/algs/grass7/Grass7AlgorithmProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.PyQt.QtCore import QCoreApplication diff --git a/python/plugins/processing/algs/grass7/Grass7Utils.py b/python/plugins/processing/algs/grass7/Grass7Utils.py index 78c3e03ba8..e2b05b4fdb 100644 --- a/python/plugins/processing/algs/grass7/Grass7Utils.py +++ b/python/plugins/processing/algs/grass7/Grass7Utils.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014-2015, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import stat import shutil diff --git a/python/plugins/processing/algs/grass7/description/r.in.lidar.info.txt b/python/plugins/processing/algs/grass7/description/r.in.lidar.info.txt index 58ceef4a95..785a5af3c9 100644 --- a/python/plugins/processing/algs/grass7/description/r.in.lidar.info.txt +++ b/python/plugins/processing/algs/grass7/description/r.in.lidar.info.txt @@ -1,7 +1,7 @@ r.in.lidar r.in.lidar.info - Extract information from LAS file Raster (r.*) -QgsProcessingParameterFile|input|LAS input file|QgsProcessingParameterFile.File|txt|None|False +QgsProcessingParameterFile|input|LAS input file|QgsProcessingParameterFile.File|las|None|False Hardcoded|-p Hardcoded|-g Hardcoded|-s diff --git a/python/plugins/processing/algs/grass7/description/r.sun.txt b/python/plugins/processing/algs/grass7/description/r.sun.incidout.txt similarity index 88% rename from python/plugins/processing/algs/grass7/description/r.sun.txt rename to python/plugins/processing/algs/grass7/description/r.sun.incidout.txt index 6751571fc6..bf26dda6ab 100644 --- a/python/plugins/processing/algs/grass7/description/r.sun.txt +++ b/python/plugins/processing/algs/grass7/description/r.sun.incidout.txt @@ -1,5 +1,5 @@ r.sun -Solar irradiance and irradiation model. +r.sun.incidout - Solar irradiance and irradiation model ( for the set local time). Raster (r.*) QgsProcessingParameterRasterLayer|elevation|Elevation layer [meters]|None|False QgsProcessingParameterRasterLayer|aspect|Aspect layer [decimal degrees]|None|False @@ -21,11 +21,11 @@ QgsProcessingParameterNumber|day|No. of day of the year (1-365)|QgsProcessingPar *QgsProcessingParameterNumber|distance_step|Sampling distance step coefficient (0.5-1.5)|QgsProcessingParameterNumber.Double|1.0|True|0.5|1.5 *QgsProcessingParameterNumber|npartitions|Read the input files in this number of chunks|QgsProcessingParameterNumber.Integer|1|True|1|None *QgsProcessingParameterNumber|civil_time|Civil time zone value, if none, the time will be local solar time|QgsProcessingParameterNumber.Double|None|True|0.0|None +QgsProcessingParameterNumber|time|Local (solar) time (decimal hours)|QgsProcessingParameterNumber.Double|None|False|0.0|24.0 QgsProcessingParameterBoolean|-p|Do not incorporate the shadowing effect of terrain|False *QgsProcessingParameterBoolean|-m|Use the low-memory version of the program|False -QgsProcessingParameterRasterDestination|incidout|incidence angle raster map|None|True -QgsProcessingParameterRasterDestination|beam_rad|Irradiation [Wh.m-2.day-1]|None|True -QgsProcessingParameterRasterDestination|insol_time|Insolation time [h] |None|True -QgsProcessingParameterRasterDestination|diff_rad|Diffuse irradiation [Wh.m-2.day-1]|None|True -QgsProcessingParameterRasterDestination|refl_rad|Ground reflected irradiation [Wh.m-2.day-1]|None|True -QgsProcessingParameterRasterDestination|glob_rad|Global (total) irradiance/irradiation [Wh.m-2.day-1]|None|True +QgsProcessingParameterRasterDestination|incidout|incidence angle raster map|None|True +QgsProcessingParameterRasterDestination|beam_rad|Beam irradiance [W.m-2]|None|True +QgsProcessingParameterRasterDestination|diff_rad|Diffuse irradiance [W.m-2]|None|True +QgsProcessingParameterRasterDestination|refl_rad|Ground reflected irradiance [W.m-2]|None|True +QgsProcessingParameterRasterDestination|glob_rad|Global (total) irradiance/irradiation [W.m-2]|None|True diff --git a/python/plugins/processing/algs/grass7/description/r.sun.insoltime.txt b/python/plugins/processing/algs/grass7/description/r.sun.insoltime.txt new file mode 100644 index 0000000000..280ffdedf6 --- /dev/null +++ b/python/plugins/processing/algs/grass7/description/r.sun.insoltime.txt @@ -0,0 +1,30 @@ +r.sun +r.sun.insoltime - Solar irradiance and irradiation model (daily sums). +Raster (r.*) +QgsProcessingParameterRasterLayer|elevation|Elevation layer [meters]|None|False +QgsProcessingParameterRasterLayer|aspect|Aspect layer [decimal degrees]|None|False +QgsProcessingParameterNumber|aspect_value|A single value of the orientation (aspect), 270 is south|QgsProcessingParameterNumber.Double|270.0|True|0.0|360.0 +QgsProcessingParameterRasterLayer|slope|Name of the input slope raster map (terrain slope or solar panel inclination) [decimal degrees]|None|False +QgsProcessingParameterNumber|slope_value|A single value of inclination (slope)|QgsProcessingParameterNumber.Double|0.0|True|0.0|360.0 +QgsProcessingParameterRasterLayer|linke|Name of the Linke atmospheric turbidity coefficient input raster map|None|True +QgsProcessingParameterRasterLayer|albedo|Name of the ground albedo coefficient input raster map|None|True +QgsProcessingParameterNumber|albedo_value|A single value of the ground albedo coefficient|QgsProcessingParameterNumber.Double|0.2|True|0.0|360.0 +QgsProcessingParameterRasterLayer|lat|Name of input raster map containing latitudes [decimal degrees]|None|True +QgsProcessingParameterRasterLayer|long|Name of input raster map containing longitudes [decimal degrees]|None|True +QgsProcessingParameterRasterLayer|coeff_bh|Name of real-sky beam radiation coefficient input raster map|None|True +QgsProcessingParameterRasterLayer|coeff_dh|Name of real-sky diffuse radiation coefficient input raster map|None|True +QgsProcessingParameterRasterLayer|horizon_basemap|The horizon information input map basename|None|True +QgsProcessingParameterNumber|horizon_step|Angle step size for multidirectional horizon [degrees]|QgsProcessingParameterNumber.Double|None|True|0.0|360.0 +QgsProcessingParameterNumber|day|No. of day of the year (1-365)|QgsProcessingParameterNumber.Integer|1|False|1|365 +*QgsProcessingParameterNumber|step|Time step when computing all-day radiation sums [decimal hours]|QgsProcessingParameterNumber.Double|0.5|True|0 +*QgsProcessingParameterNumber|declination|Declination value (overriding the internally computed value) [radians]|QgsProcessingParameterNumber.Double|None|True|None|None +*QgsProcessingParameterNumber|distance_step|Sampling distance step coefficient (0.5-1.5)|QgsProcessingParameterNumber.Double|1.0|True|0.5|1.5 +*QgsProcessingParameterNumber|npartitions|Read the input files in this number of chunks|QgsProcessingParameterNumber.Integer|1|True|1|None +*QgsProcessingParameterNumber|civil_time|Civil time zone value, if none, the time will be local solar time|QgsProcessingParameterNumber.Double|None|True|0.0|None +QgsProcessingParameterBoolean|-p|Do not incorporate the shadowing effect of terrain|False +*QgsProcessingParameterBoolean|-m|Use the low-memory version of the program|False +QgsProcessingParameterRasterDestination|insol_time|Insolation time [h] |None|True +QgsProcessingParameterRasterDestination|beam_rad|Irradiation raster map [Wh.m-2.day-1]|None|True +QgsProcessingParameterRasterDestination|diff_rad|Irradiation raster map [Wh.m-2.day-1]|None|True +QgsProcessingParameterRasterDestination|refl_rad|Irradiation raster map [Wh.m-2.day-1]|None|True +QgsProcessingParameterRasterDestination|glob_rad|Irradiance/irradiation raster map [Wh.m-2.day-1]|None|True diff --git a/python/plugins/processing/algs/grass7/description/v.net.distance.txt b/python/plugins/processing/algs/grass7/description/v.net.distance.txt index 73eb792355..3037d76b2f 100644 --- a/python/plugins/processing/algs/grass7/description/v.net.distance.txt +++ b/python/plugins/processing/algs/grass7/description/v.net.distance.txt @@ -13,7 +13,7 @@ QgsProcessingParameterNumber|threshold|Threshold for connecting nodes to the net *QgsProcessingParameterString|to_where|To WHERE conditions of SQL statement without 'where' keyword|None|True|True *QgsProcessingParameterField|arc_column|Arc forward/both direction(s) cost column (number)|None|input|0|False|True *QgsProcessingParameterField|arc_backward_column|Arc backward direction cost column (number)|None|input|0|False|True -*QgsProcessingParameterField|node_column|Node cost column (number)|None|from_layer|0|False|True +*QgsProcessingParameterField|node_column|Node cost column (number)|None|flayer|0|False|True *QgsProcessingParameterBoolean|-g|Use geodesic calculation for longitude-latitude locations|False|True *QgsProcessingParameterBoolean|-l|Write each output path as one line, not as original input segments|False|True QgsProcessingParameterVectorDestination|output|Network_Distance diff --git a/python/plugins/processing/algs/grass7/ext/i.py b/python/plugins/processing/algs/grass7/ext/i.py index 350c6aab27..8bd65f57ea 100644 --- a/python/plugins/processing/algs/grass7/ext/i.py +++ b/python/plugins/processing/algs/grass7/ext/i.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from processing.tools.system import (isWindows, getTempFilename) diff --git a/python/plugins/processing/algs/grass7/ext/i_albedo.py b/python/plugins/processing/algs/grass7/ext/i_albedo.py index 4d79b6a093..bef287948f 100644 --- a/python/plugins/processing/algs/grass7/ext/i_albedo.py +++ b/python/plugins/processing/algs/grass7/ext/i_albedo.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import verifyRasterNum diff --git a/python/plugins/processing/algs/grass7/ext/i_cca.py b/python/plugins/processing/algs/grass7/ext/i_cca.py index 121cd991c1..276d53b1b8 100644 --- a/python/plugins/processing/algs/grass7/ext/i_cca.py +++ b/python/plugins/processing/algs/grass7/ext/i_cca.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import verifyRasterNum, regroupRasters, importSigFile diff --git a/python/plugins/processing/algs/grass7/ext/i_cluster.py b/python/plugins/processing/algs/grass7/ext/i_cluster.py index 15ab1ddc39..306cd5639c 100644 --- a/python/plugins/processing/algs/grass7/ext/i_cluster.py +++ b/python/plugins/processing/algs/grass7/ext/i_cluster.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from .i import regroupRasters, verifyRasterNum, exportSigFile diff --git a/python/plugins/processing/algs/grass7/ext/i_colors_enhance.py b/python/plugins/processing/algs/grass7/ext/i_colors_enhance.py index 590f1152cc..e0c0f42fd9 100644 --- a/python/plugins/processing/algs/grass7/ext/i_colors_enhance.py +++ b/python/plugins/processing/algs/grass7/ext/i_colors_enhance.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import exportInputRasters diff --git a/python/plugins/processing/algs/grass7/ext/i_evapo_mh.py b/python/plugins/processing/algs/grass7/ext/i_evapo_mh.py index fb03d4fcef..70ab508f6d 100644 --- a/python/plugins/processing/algs/grass7/ext/i_evapo_mh.py +++ b/python/plugins/processing/algs/grass7/ext/i_evapo_mh.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def checkParameterValuesBeforeExecuting(alg, parameters, context): diff --git a/python/plugins/processing/algs/grass7/ext/i_gensig.py b/python/plugins/processing/algs/grass7/ext/i_gensig.py index a4bb0a2896..45f21fc571 100644 --- a/python/plugins/processing/algs/grass7/ext/i_gensig.py +++ b/python/plugins/processing/algs/grass7/ext/i_gensig.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from .i import regroupRasters, exportSigFile diff --git a/python/plugins/processing/algs/grass7/ext/i_gensigset.py b/python/plugins/processing/algs/grass7/ext/i_gensigset.py index e8ef7e3d3c..0adfa16b73 100644 --- a/python/plugins/processing/algs/grass7/ext/i_gensigset.py +++ b/python/plugins/processing/algs/grass7/ext/i_gensigset.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from .i import regroupRasters, exportSigFile diff --git a/python/plugins/processing/algs/grass7/ext/i_group.py b/python/plugins/processing/algs/grass7/ext/i_group.py index 28f3879c05..e82bcab091 100644 --- a/python/plugins/processing/algs/grass7/ext/i_group.py +++ b/python/plugins/processing/algs/grass7/ext/i_group.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import verifyRasterNum diff --git a/python/plugins/processing/algs/grass7/ext/i_in_spotvgt.py b/python/plugins/processing/algs/grass7/ext/i_in_spotvgt.py index c77f8b177d..48b46ba025 100644 --- a/python/plugins/processing/algs/grass7/ext/i_in_spotvgt.py +++ b/python/plugins/processing/algs/grass7/ext/i_in_spotvgt.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processInputs(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/i_landsat_acca.py b/python/plugins/processing/algs/grass7/ext/i_landsat_acca.py index b35e1bd1a4..9ec6207ce6 100644 --- a/python/plugins/processing/algs/grass7/ext/i_landsat_acca.py +++ b/python/plugins/processing/algs/grass7/ext/i_landsat_acca.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import verifyRasterNum, orderedInput diff --git a/python/plugins/processing/algs/grass7/ext/i_landsat_toar.py b/python/plugins/processing/algs/grass7/ext/i_landsat_toar.py index ea614e9a31..1c7dd01a1d 100644 --- a/python/plugins/processing/algs/grass7/ext/i_landsat_toar.py +++ b/python/plugins/processing/algs/grass7/ext/i_landsat_toar.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import verifyRasterNum, orderedInput diff --git a/python/plugins/processing/algs/grass7/ext/i_maxlik.py b/python/plugins/processing/algs/grass7/ext/i_maxlik.py index 9798a21a8a..e07f88cf89 100644 --- a/python/plugins/processing/algs/grass7/ext/i_maxlik.py +++ b/python/plugins/processing/algs/grass7/ext/i_maxlik.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import regroupRasters, importSigFile diff --git a/python/plugins/processing/algs/grass7/ext/i_oif.py b/python/plugins/processing/algs/grass7/ext/i_oif.py index d44b839459..6e08fbba59 100644 --- a/python/plugins/processing/algs/grass7/ext/i_oif.py +++ b/python/plugins/processing/algs/grass7/ext/i_oif.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import verifyRasterNum diff --git a/python/plugins/processing/algs/grass7/ext/i_pansharpen.py b/python/plugins/processing/algs/grass7/ext/i_pansharpen.py index 9f7e00a5ae..86d97c379d 100644 --- a/python/plugins/processing/algs/grass7/ext/i_pansharpen.py +++ b/python/plugins/processing/algs/grass7/ext/i_pansharpen.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from processing.tools.system import getTempFilename diff --git a/python/plugins/processing/algs/grass7/ext/i_pca.py b/python/plugins/processing/algs/grass7/ext/i_pca.py index 469fdee458..590a6f031c 100644 --- a/python/plugins/processing/algs/grass7/ext/i_pca.py +++ b/python/plugins/processing/algs/grass7/ext/i_pca.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import verifyRasterNum diff --git a/python/plugins/processing/algs/grass7/ext/i_segment.py b/python/plugins/processing/algs/grass7/ext/i_segment.py index 8ac127bcb3..6e10d7a15c 100644 --- a/python/plugins/processing/algs/grass7/ext/i_segment.py +++ b/python/plugins/processing/algs/grass7/ext/i_segment.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import regroupRasters diff --git a/python/plugins/processing/algs/grass7/ext/i_smap.py b/python/plugins/processing/algs/grass7/ext/i_smap.py index d7d8a1b8a4..faa57f1e3f 100644 --- a/python/plugins/processing/algs/grass7/ext/i_smap.py +++ b/python/plugins/processing/algs/grass7/ext/i_smap.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import regroupRasters, importSigFile diff --git a/python/plugins/processing/algs/grass7/ext/i_tasscap.py b/python/plugins/processing/algs/grass7/ext/i_tasscap.py index 38d7fc00fe..58abfa704c 100644 --- a/python/plugins/processing/algs/grass7/ext/i_tasscap.py +++ b/python/plugins/processing/algs/grass7/ext/i_tasscap.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .i import verifyRasterNum diff --git a/python/plugins/processing/algs/grass7/ext/r_blend_combine.py b/python/plugins/processing/algs/grass7/ext/r_blend_combine.py index 24ec875d27..f12d2ecc8d 100644 --- a/python/plugins/processing/algs/grass7/ext/r_blend_combine.py +++ b/python/plugins/processing/algs/grass7/ext/r_blend_combine.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processInputs(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/r_blend_rgb.py b/python/plugins/processing/algs/grass7/ext/r_blend_rgb.py index 8ced036d19..935941e64c 100644 --- a/python/plugins/processing/algs/grass7/ext/r_blend_rgb.py +++ b/python/plugins/processing/algs/grass7/ext/r_blend_rgb.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/grass7/ext/r_category.py b/python/plugins/processing/algs/grass7/ext/r_category.py index 5e1becd142..09559eda38 100644 --- a/python/plugins/processing/algs/grass7/ext/r_category.py +++ b/python/plugins/processing/algs/grass7/ext/r_category.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from processing.tools.system import getTempFilename from processing.algs.grass7.Grass7Utils import Grass7Utils diff --git a/python/plugins/processing/algs/grass7/ext/r_colors.py b/python/plugins/processing/algs/grass7/ext/r_colors.py index eaed550a7b..b005a0b9ab 100644 --- a/python/plugins/processing/algs/grass7/ext/r_colors.py +++ b/python/plugins/processing/algs/grass7/ext/r_colors.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from processing.algs.grass7.Grass7Utils import Grass7Utils diff --git a/python/plugins/processing/algs/grass7/ext/r_colors_stddev.py b/python/plugins/processing/algs/grass7/ext/r_colors_stddev.py index b8206df2b4..ac825f5d85 100644 --- a/python/plugins/processing/algs/grass7/ext/r_colors_stddev.py +++ b/python/plugins/processing/algs/grass7/ext/r_colors_stddev.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from processing.algs.grass7.Grass7Utils import Grass7Utils diff --git a/python/plugins/processing/algs/grass7/ext/r_drain.py b/python/plugins/processing/algs/grass7/ext/r_drain.py index 9f838e1506..1606deab6f 100644 --- a/python/plugins/processing/algs/grass7/ext/r_drain.py +++ b/python/plugins/processing/algs/grass7/ext/r_drain.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def checkParameterValuesBeforeExecuting(alg, parameters, context): diff --git a/python/plugins/processing/algs/grass7/ext/r_horizon.py b/python/plugins/processing/algs/grass7/ext/r_horizon.py index e078188bf7..3435746001 100644 --- a/python/plugins/processing/algs/grass7/ext/r_horizon.py +++ b/python/plugins/processing/algs/grass7/ext/r_horizon.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/grass7/ext/r_li.py b/python/plugins/processing/algs/grass7/ext/r_li.py index 9416a8d7ac..add3b20344 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li.py +++ b/python/plugins/processing/algs/grass7/ext/r_li.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import shutil from qgis.core import QgsProcessingParameterString diff --git a/python/plugins/processing/algs/grass7/ext/r_li_cwed.py b/python/plugins/processing/algs/grass7/ext/r_li_cwed.py index ef070376f7..e32b87f3ca 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_cwed.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_cwed.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_cwed_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_cwed_ascii.py index bf3b0aac8b..1f56b016d8 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_cwed_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_cwed_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_dominance.py b/python/plugins/processing/algs/grass7/ext/r_li_dominance.py index da597fca4f..299cd7d994 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_dominance.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_dominance.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_dominance_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_dominance_ascii.py index 8706a2a386..2c7e266a6e 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_dominance_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_dominance_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_edgedensity.py b/python/plugins/processing/algs/grass7/ext/r_li_edgedensity.py index 9ec8804c6d..c3c34c9071 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_edgedensity.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_edgedensity.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_edgedensity_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_edgedensity_ascii.py index ddb7984005..c8239003fe 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_edgedensity_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_edgedensity_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_mpa.py b/python/plugins/processing/algs/grass7/ext/r_li_mpa.py index 98258b6365..f5b36478b6 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_mpa.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_mpa.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_mpa_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_mpa_ascii.py index 4f27b5d60c..85f1513093 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_mpa_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_mpa_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_mps.py b/python/plugins/processing/algs/grass7/ext/r_li_mps.py index 9f79dba893..367261fd4e 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_mps.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_mps.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_mps_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_mps_ascii.py index fc8475eb06..1984a60da8 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_mps_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_mps_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_padcv.py b/python/plugins/processing/algs/grass7/ext/r_li_padcv.py index 7f3fc84aaf..8d41d2f2c0 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_padcv.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_padcv.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_padcv_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_padcv_ascii.py index 24a475b7cc..b760fe23e2 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_padcv_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_padcv_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_padrange.py b/python/plugins/processing/algs/grass7/ext/r_li_padrange.py index f1214fe29d..7f50190c50 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_padrange.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_padrange.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_padrange_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_padrange_ascii.py index 442359be53..6a0d4ab65d 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_padrange_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_padrange_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_padsd.py b/python/plugins/processing/algs/grass7/ext/r_li_padsd.py index 1c31f2d8fa..de92727899 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_padsd.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_padsd.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_padsd_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_padsd_ascii.py index 3cf61d719f..d60cdb445b 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_padsd_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_padsd_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_patchdensity.py b/python/plugins/processing/algs/grass7/ext/r_li_patchdensity.py index dec49d1296..c696dd21bd 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_patchdensity.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_patchdensity.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_patchdensity_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_patchdensity_ascii.py index 16bad2066b..21f7e82420 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_patchdensity_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_patchdensity_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_patchnum.py b/python/plugins/processing/algs/grass7/ext/r_li_patchnum.py index ffefb3fdd9..c9f8dc3fb9 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_patchnum.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_patchnum.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_patchnum_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_patchnum_ascii.py index da7d7983de..d47baeb584 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_patchnum_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_patchnum_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_pielou.py b/python/plugins/processing/algs/grass7/ext/r_li_pielou.py index e833ac3423..a681ca1f48 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_pielou.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_pielou.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_pielou_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_pielou_ascii.py index 5f86d7cf47..510a582348 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_pielou_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_pielou_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_renyi.py b/python/plugins/processing/algs/grass7/ext/r_li_renyi.py index 6c00e18ffb..2445641f82 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_renyi.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_renyi.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_renyi_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_renyi_ascii.py index 889c54c412..12871c24bc 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_renyi_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_renyi_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_richness.py b/python/plugins/processing/algs/grass7/ext/r_li_richness.py index 66a31bc7d2..a97e60bb0c 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_richness.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_richness.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_richness_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_richness_ascii.py index 7cae54c4b3..ae09a4749f 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_richness_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_richness_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_shannon.py b/python/plugins/processing/algs/grass7/ext/r_li_shannon.py index ea2cc3443f..42cfe970b5 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_shannon.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_shannon.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_shannon_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_shannon_ascii.py index 617288f477..5875e3a076 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_shannon_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_shannon_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_shape.py b/python/plugins/processing/algs/grass7/ext/r_li_shape.py index 4f60bbf700..e84f651f43 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_shape.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_shape.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_shape_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_shape_ascii.py index e1ebd07bf8..44d18e8da0 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_shape_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_shape_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_simpson.py b/python/plugins/processing/algs/grass7/ext/r_li_simpson.py index 5705975e13..d85622fa08 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_simpson.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_simpson.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile diff --git a/python/plugins/processing/algs/grass7/ext/r_li_simpson_ascii.py b/python/plugins/processing/algs/grass7/ext/r_li_simpson_ascii.py index c226e09feb..54cecccbc5 100644 --- a/python/plugins/processing/algs/grass7/ext/r_li_simpson_ascii.py +++ b/python/plugins/processing/algs/grass7/ext/r_li_simpson_ascii.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .r_li import checkMovingWindow, configFile, moveOutputTxtFile diff --git a/python/plugins/processing/algs/grass7/ext/r_mapcalc.py b/python/plugins/processing/algs/grass7/ext/r_mapcalc.py index 30ffec0600..38dffdcb89 100644 --- a/python/plugins/processing/algs/grass7/ext/r_mapcalc.py +++ b/python/plugins/processing/algs/grass7/ext/r_mapcalc.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/grass7/ext/r_mask_rast.py b/python/plugins/processing/algs/grass7/ext/r_mask_rast.py index 13d0d9b851..512ee03bc3 100644 --- a/python/plugins/processing/algs/grass7/ext/r_mask_rast.py +++ b/python/plugins/processing/algs/grass7/ext/r_mask_rast.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from processing.algs.grass7.Grass7Utils import Grass7Utils diff --git a/python/plugins/processing/algs/grass7/ext/r_mask_vect.py b/python/plugins/processing/algs/grass7/ext/r_mask_vect.py index c59b3c3389..b4162a7a9f 100644 --- a/python/plugins/processing/algs/grass7/ext/r_mask_vect.py +++ b/python/plugins/processing/algs/grass7/ext/r_mask_vect.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from processing.algs.grass7.Grass7Utils import Grass7Utils diff --git a/python/plugins/processing/algs/grass7/ext/r_null.py b/python/plugins/processing/algs/grass7/ext/r_null.py index 1705e50e1b..d7b3a7fc2b 100644 --- a/python/plugins/processing/algs/grass7/ext/r_null.py +++ b/python/plugins/processing/algs/grass7/ext/r_null.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def checkParameterValuesBeforeExecuting(alg, parameters, context): diff --git a/python/plugins/processing/algs/grass7/ext/r_proj.py b/python/plugins/processing/algs/grass7/ext/r_proj.py index fc54ff97c3..903d2ff8d0 100644 --- a/python/plugins/processing/algs/grass7/ext/r_proj.py +++ b/python/plugins/processing/algs/grass7/ext/r_proj.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsProcessingParameterString from ..Grass7Utils import isWindows diff --git a/python/plugins/processing/algs/grass7/ext/r_reclass.py b/python/plugins/processing/algs/grass7/ext/r_reclass.py index b98e1fff92..6e97c09eab 100644 --- a/python/plugins/processing/algs/grass7/ext/r_reclass.py +++ b/python/plugins/processing/algs/grass7/ext/r_reclass.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from processing.tools.system import getTempFilename diff --git a/python/plugins/processing/algs/grass7/ext/r_resamp_filter.py b/python/plugins/processing/algs/grass7/ext/r_resamp_filter.py index de7063c908..724f645200 100644 --- a/python/plugins/processing/algs/grass7/ext/r_resamp_filter.py +++ b/python/plugins/processing/algs/grass7/ext/r_resamp_filter.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def checkParameterValuesBeforeExecuting(alg, parameters, context): diff --git a/python/plugins/processing/algs/grass7/ext/r_rgb.py b/python/plugins/processing/algs/grass7/ext/r_rgb.py index b5a12138b2..08865ba939 100644 --- a/python/plugins/processing/algs/grass7/ext/r_rgb.py +++ b/python/plugins/processing/algs/grass7/ext/r_rgb.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processInputs(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/r_series_interp.py b/python/plugins/processing/algs/grass7/ext/r_series_interp.py index b73229d385..240bc0439d 100644 --- a/python/plugins/processing/algs/grass7/ext/r_series_interp.py +++ b/python/plugins/processing/algs/grass7/ext/r_series_interp.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from processing.algs.grass7.Grass7Utils import Grass7Utils diff --git a/python/plugins/processing/algs/grass7/ext/r_shade.py b/python/plugins/processing/algs/grass7/ext/r_shade.py index 24b65508d6..f97cf675ce 100644 --- a/python/plugins/processing/algs/grass7/ext/r_shade.py +++ b/python/plugins/processing/algs/grass7/ext/r_shade.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processInputs(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/r_statistics.py b/python/plugins/processing/algs/grass7/ext/r_statistics.py index a407368987..1cd90aaa6a 100644 --- a/python/plugins/processing/algs/grass7/ext/r_statistics.py +++ b/python/plugins/processing/algs/grass7/ext/r_statistics.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsProcessingParameterString from processing.algs.grass7.Grass7Utils import Grass7Utils diff --git a/python/plugins/processing/algs/grass7/ext/r_stats_quantile_rast.py b/python/plugins/processing/algs/grass7/ext/r_stats_quantile_rast.py index 3e3802a782..d8e0446b87 100644 --- a/python/plugins/processing/algs/grass7/ext/r_stats_quantile_rast.py +++ b/python/plugins/processing/algs/grass7/ext/r_stats_quantile_rast.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsProcessingParameterString from processing.algs.grass7.Grass7Utils import Grass7Utils diff --git a/python/plugins/processing/algs/grass7/ext/r_what_color.py b/python/plugins/processing/algs/grass7/ext/r_what_color.py index 365a532541..9d1f003e93 100644 --- a/python/plugins/processing/algs/grass7/ext/r_what_color.py +++ b/python/plugins/processing/algs/grass7/ext/r_what_color.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processInputs(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/v_distance.py b/python/plugins/processing/algs/grass7/ext/v_distance.py index 1ba47951bb..1cef0e1f29 100644 --- a/python/plugins/processing/algs/grass7/ext/v_distance.py +++ b/python/plugins/processing/algs/grass7/ext/v_distance.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsProcessingParameterDefinition diff --git a/python/plugins/processing/algs/grass7/ext/v_edit.py b/python/plugins/processing/algs/grass7/ext/v_edit.py index f9411e8d07..69a542fb2e 100644 --- a/python/plugins/processing/algs/grass7/ext/v_edit.py +++ b/python/plugins/processing/algs/grass7/ext/v_edit.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/grass7/ext/v_extrude.py b/python/plugins/processing/algs/grass7/ext/v_extrude.py index b5b5306194..aeb390c884 100644 --- a/python/plugins/processing/algs/grass7/ext/v_extrude.py +++ b/python/plugins/processing/algs/grass7/ext/v_extrude.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def checkParameterValuesBeforeExecuting(alg, parameters, context): diff --git a/python/plugins/processing/algs/grass7/ext/v_in_geonames.py b/python/plugins/processing/algs/grass7/ext/v_in_geonames.py index 79e5338696..368a5131df 100644 --- a/python/plugins/processing/algs/grass7/ext/v_in_geonames.py +++ b/python/plugins/processing/algs/grass7/ext/v_in_geonames.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processCommand(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/v_net.py b/python/plugins/processing/algs/grass7/ext/v_net.py index 71193e0eb8..fee96e1451 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net.py +++ b/python/plugins/processing/algs/grass7/ext/v_net.py @@ -27,7 +27,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.core import QgsProcessingException diff --git a/python/plugins/processing/algs/grass7/ext/v_net_alloc.py b/python/plugins/processing/algs/grass7/ext/v_net_alloc.py index fb89e4f1ea..203f6a8bb0 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_alloc.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_alloc.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_allpairs.py b/python/plugins/processing/algs/grass7/ext/v_net_allpairs.py index 6809bd15b1..b19ea956bd 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_allpairs.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_allpairs.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_bridge.py b/python/plugins/processing/algs/grass7/ext/v_net_bridge.py index a366985dce..d417d53dd3 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_bridge.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_bridge.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_centrality.py b/python/plugins/processing/algs/grass7/ext/v_net_centrality.py index f68e5b7b82..3f9122e4d6 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_centrality.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_centrality.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_components.py b/python/plugins/processing/algs/grass7/ext/v_net_components.py index 153c155379..14862617d5 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_components.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_components.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput from qgis.core import QgsProcessingParameterDefinition diff --git a/python/plugins/processing/algs/grass7/ext/v_net_connectivity.py b/python/plugins/processing/algs/grass7/ext/v_net_connectivity.py index 99a211a0e4..3813860692 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_connectivity.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_connectivity.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_distance.py b/python/plugins/processing/algs/grass7/ext/v_net_distance.py index c5a3d3e6e9..f2514c7398 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_distance.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_distance.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/grass7/ext/v_net_flow.py b/python/plugins/processing/algs/grass7/ext/v_net_flow.py index dfbc91e4ec..19710cfe0f 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_flow.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_flow.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_iso.py b/python/plugins/processing/algs/grass7/ext/v_net_iso.py index adad04e046..992ec880d0 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_iso.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_iso.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_path.py b/python/plugins/processing/algs/grass7/ext/v_net_path.py index 2e8cb5d2c6..cc15fe9165 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_path.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_path.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_salesman.py b/python/plugins/processing/algs/grass7/ext/v_net_salesman.py index 050678545b..25077f18b3 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_salesman.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_salesman.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput from qgis.core import QgsProcessingParameterDefinition diff --git a/python/plugins/processing/algs/grass7/ext/v_net_spanningtree.py b/python/plugins/processing/algs/grass7/ext/v_net_spanningtree.py index 0d0d6d5c9a..5f981f295a 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_spanningtree.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_spanningtree.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_steiner.py b/python/plugins/processing/algs/grass7/ext/v_net_steiner.py index a7f8b85a69..8dbb560a03 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_steiner.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_steiner.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import incorporatePoints, variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_net_visibility.py b/python/plugins/processing/algs/grass7/ext/v_net_visibility.py index 7b367d069b..fd7454d542 100644 --- a/python/plugins/processing/algs/grass7/ext/v_net_visibility.py +++ b/python/plugins/processing/algs/grass7/ext/v_net_visibility.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from .v_net import variableOutput diff --git a/python/plugins/processing/algs/grass7/ext/v_proj.py b/python/plugins/processing/algs/grass7/ext/v_proj.py index b86f78131c..b5aac3a27f 100644 --- a/python/plugins/processing/algs/grass7/ext/v_proj.py +++ b/python/plugins/processing/algs/grass7/ext/v_proj.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsProcessingParameterString diff --git a/python/plugins/processing/algs/grass7/ext/v_rast_stats.py b/python/plugins/processing/algs/grass7/ext/v_rast_stats.py index 8c3586682b..de830cb835 100644 --- a/python/plugins/processing/algs/grass7/ext/v_rast_stats.py +++ b/python/plugins/processing/algs/grass7/ext/v_rast_stats.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processCommand(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/v_rectify.py b/python/plugins/processing/algs/grass7/ext/v_rectify.py index 25eddb3235..a8f830b106 100644 --- a/python/plugins/processing/algs/grass7/ext/v_rectify.py +++ b/python/plugins/processing/algs/grass7/ext/v_rectify.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from processing.algs.grass7.Grass7Utils import Grass7Utils diff --git a/python/plugins/processing/algs/grass7/ext/v_sample.py b/python/plugins/processing/algs/grass7/ext/v_sample.py index b0cd40a850..2e0ebd65ca 100644 --- a/python/plugins/processing/algs/grass7/ext/v_sample.py +++ b/python/plugins/processing/algs/grass7/ext/v_sample.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processInputs(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/v_to_3d.py b/python/plugins/processing/algs/grass7/ext/v_to_3d.py index ea0eb39727..4c7cc4f15e 100644 --- a/python/plugins/processing/algs/grass7/ext/v_to_3d.py +++ b/python/plugins/processing/algs/grass7/ext/v_to_3d.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def checkParameterValuesBeforeExecuting(alg, parameters, context): diff --git a/python/plugins/processing/algs/grass7/ext/v_vect_stats.py b/python/plugins/processing/algs/grass7/ext/v_vect_stats.py index 66fb684cb8..e5688f3a8d 100644 --- a/python/plugins/processing/algs/grass7/ext/v_vect_stats.py +++ b/python/plugins/processing/algs/grass7/ext/v_vect_stats.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processCommand(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/v_voronoi.py b/python/plugins/processing/algs/grass7/ext/v_voronoi.py index cd8e75259b..27b3781348 100644 --- a/python/plugins/processing/algs/grass7/ext/v_voronoi.py +++ b/python/plugins/processing/algs/grass7/ext/v_voronoi.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processInputs(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/v_what_rast.py b/python/plugins/processing/algs/grass7/ext/v_what_rast.py index 4077713792..9193616b9e 100644 --- a/python/plugins/processing/algs/grass7/ext/v_what_rast.py +++ b/python/plugins/processing/algs/grass7/ext/v_what_rast.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processCommand(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/grass7/ext/v_what_vect.py b/python/plugins/processing/algs/grass7/ext/v_what_vect.py index 8590ba05e5..48a49e8e3c 100644 --- a/python/plugins/processing/algs/grass7/ext/v_what_vect.py +++ b/python/plugins/processing/algs/grass7/ext/v_what_vect.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Médéric Ribreux' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def processCommand(alg, parameters, context, feedback): diff --git a/python/plugins/processing/algs/help/__init__.py b/python/plugins/processing/algs/help/__init__.py index 85a14161a4..b16e573a73 100644 --- a/python/plugins/processing/algs/help/__init__.py +++ b/python/plugins/processing/algs/help/__init__.py @@ -21,7 +21,7 @@ __author__ = 'Victor Olaya' __date__ = 'January 2016' __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import codecs diff --git a/python/plugins/processing/algs/qgis/AddTableField.py b/python/plugins/processing/algs/qgis/AddTableField.py index 98bb064b36..3ceeaeff52 100644 --- a/python/plugins/processing/algs/qgis/AddTableField.py +++ b/python/plugins/processing/algs/qgis/AddTableField.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QVariant from qgis.core import (QgsField, diff --git a/python/plugins/processing/algs/qgis/Aggregate.py b/python/plugins/processing/algs/qgis/Aggregate.py index e599293012..6feeb35677 100644 --- a/python/plugins/processing/algs/qgis/Aggregate.py +++ b/python/plugins/processing/algs/qgis/Aggregate.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Arnaud Morvan' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import ( QgsDistanceArea, diff --git a/python/plugins/processing/algs/qgis/Aspect.py b/python/plugins/processing/algs/qgis/Aspect.py index 2abb559dd8..b554c30e4e 100644 --- a/python/plugins/processing/algs/qgis/Aspect.py +++ b/python/plugins/processing/algs/qgis/Aspect.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/BarPlot.py b/python/plugins/processing/algs/qgis/BarPlot.py index c3b90588e5..4f1a167070 100644 --- a/python/plugins/processing/algs/qgis/BarPlot.py +++ b/python/plugins/processing/algs/qgis/BarPlot.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import plotly as plt import plotly.graph_objs as go diff --git a/python/plugins/processing/algs/qgis/BasicStatistics.py b/python/plugins/processing/algs/qgis/BasicStatistics.py index a01b9717cd..24359f37be 100644 --- a/python/plugins/processing/algs/qgis/BasicStatistics.py +++ b/python/plugins/processing/algs/qgis/BasicStatistics.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import codecs diff --git a/python/plugins/processing/algs/qgis/BoxPlot.py b/python/plugins/processing/algs/qgis/BoxPlot.py index 120898efd8..100e2a3bfd 100644 --- a/python/plugins/processing/algs/qgis/BoxPlot.py +++ b/python/plugins/processing/algs/qgis/BoxPlot.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Matteo Ghetta' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import plotly as plt import plotly.graph_objs as go diff --git a/python/plugins/processing/algs/qgis/Buffer.py b/python/plugins/processing/algs/qgis/Buffer.py index 4e96b1a195..b30a5e7201 100644 --- a/python/plugins/processing/algs/qgis/Buffer.py +++ b/python/plugins/processing/algs/qgis/Buffer.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsFeature, QgsGeometry, diff --git a/python/plugins/processing/algs/qgis/CheckValidity.py b/python/plugins/processing/algs/qgis/CheckValidity.py index 4fe35e8222..f7af8414d3 100644 --- a/python/plugins/processing/algs/qgis/CheckValidity.py +++ b/python/plugins/processing/algs/qgis/CheckValidity.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Arnaud Morvan' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/ConcaveHull.py b/python/plugins/processing/algs/qgis/ConcaveHull.py index 4f26187c7b..83f858aa09 100644 --- a/python/plugins/processing/algs/qgis/ConcaveHull.py +++ b/python/plugins/processing/algs/qgis/ConcaveHull.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Piotr Pociask' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication from math import sqrt diff --git a/python/plugins/processing/algs/qgis/CreateAttributeIndex.py b/python/plugins/processing/algs/qgis/CreateAttributeIndex.py index cff31ea25e..34abe7d7f5 100644 --- a/python/plugins/processing/algs/qgis/CreateAttributeIndex.py +++ b/python/plugins/processing/algs/qgis/CreateAttributeIndex.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsVectorDataProvider, QgsFields, diff --git a/python/plugins/processing/algs/qgis/CreateConstantRaster.py b/python/plugins/processing/algs/qgis/CreateConstantRaster.py index aaea24130f..22e14dccdf 100644 --- a/python/plugins/processing/algs/qgis/CreateConstantRaster.py +++ b/python/plugins/processing/algs/qgis/CreateConstantRaster.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/algs/qgis/Datasources2Vrt.py b/python/plugins/processing/algs/qgis/Datasources2Vrt.py index a80dbc5e6e..7b352cce85 100644 --- a/python/plugins/processing/algs/qgis/Datasources2Vrt.py +++ b/python/plugins/processing/algs/qgis/Datasources2Vrt.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Luigi Pirelli' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import codecs import xml.sax.saxutils diff --git a/python/plugins/processing/algs/qgis/DefineProjection.py b/python/plugins/processing/algs/qgis/DefineProjection.py index 35af2cb286..44dce025ed 100644 --- a/python/plugins/processing/algs/qgis/DefineProjection.py +++ b/python/plugins/processing/algs/qgis/DefineProjection.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re diff --git a/python/plugins/processing/algs/qgis/Delaunay.py b/python/plugins/processing/algs/qgis/Delaunay.py index a82cac4603..6a9d2acb10 100644 --- a/python/plugins/processing/algs/qgis/Delaunay.py +++ b/python/plugins/processing/algs/qgis/Delaunay.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/DeleteColumn.py b/python/plugins/processing/algs/qgis/DeleteColumn.py index 70f5a25937..045a463ae9 100644 --- a/python/plugins/processing/algs/qgis/DeleteColumn.py +++ b/python/plugins/processing/algs/qgis/DeleteColumn.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2010, Michael Minn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication diff --git a/python/plugins/processing/algs/qgis/DeleteDuplicateGeometries.py b/python/plugins/processing/algs/qgis/DeleteDuplicateGeometries.py index 2d8f28147b..c10ca50068 100644 --- a/python/plugins/processing/algs/qgis/DeleteDuplicateGeometries.py +++ b/python/plugins/processing/algs/qgis/DeleteDuplicateGeometries.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2010, Michael Minn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsFeatureRequest, QgsProcessingException, diff --git a/python/plugins/processing/algs/qgis/DensifyGeometries.py b/python/plugins/processing/algs/qgis/DensifyGeometries.py index 8686486945..61261145cf 100644 --- a/python/plugins/processing/algs/qgis/DensifyGeometries.py +++ b/python/plugins/processing/algs/qgis/DensifyGeometries.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/DensifyGeometriesInterval.py b/python/plugins/processing/algs/qgis/DensifyGeometriesInterval.py index 9f53536b67..440038c336 100644 --- a/python/plugins/processing/algs/qgis/DensifyGeometriesInterval.py +++ b/python/plugins/processing/algs/qgis/DensifyGeometriesInterval.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2012, Anita Graser' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingParameterDistance, QgsProcessing) diff --git a/python/plugins/processing/algs/qgis/EliminateSelection.py b/python/plugins/processing/algs/qgis/EliminateSelection.py index 6f69756a1b..ecb1c5758c 100644 --- a/python/plugins/processing/algs/qgis/EliminateSelection.py +++ b/python/plugins/processing/algs/qgis/EliminateSelection.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Bernhard Ströbl' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/ExecuteSQL.py b/python/plugins/processing/algs/qgis/ExecuteSQL.py index 82e308968a..6aff3ed07d 100644 --- a/python/plugins/processing/algs/qgis/ExecuteSQL.py +++ b/python/plugins/processing/algs/qgis/ExecuteSQL.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Hugo Mercier' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsVirtualLayerDefinition, QgsVectorLayer, diff --git a/python/plugins/processing/algs/qgis/ExportGeometryInfo.py b/python/plugins/processing/algs/qgis/ExportGeometryInfo.py index 3d931eafd6..957a6ea775 100644 --- a/python/plugins/processing/algs/qgis/ExportGeometryInfo.py +++ b/python/plugins/processing/algs/qgis/ExportGeometryInfo.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/algs/qgis/ExtentFromLayer.py b/python/plugins/processing/algs/qgis/ExtentFromLayer.py index 8303e2c064..8cc29fbd82 100644 --- a/python/plugins/processing/algs/qgis/ExtentFromLayer.py +++ b/python/plugins/processing/algs/qgis/ExtentFromLayer.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/ExtractSpecificVertices.py b/python/plugins/processing/algs/qgis/ExtractSpecificVertices.py index 4db3d9ab19..3e337d8734 100644 --- a/python/plugins/processing/algs/qgis/ExtractSpecificVertices.py +++ b/python/plugins/processing/algs/qgis/ExtractSpecificVertices.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import math from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm diff --git a/python/plugins/processing/algs/qgis/FieldPyculator.py b/python/plugins/processing/algs/qgis/FieldPyculator.py index bed4e77695..7d003b48c2 100644 --- a/python/plugins/processing/algs/qgis/FieldPyculator.py +++ b/python/plugins/processing/algs/qgis/FieldPyculator.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya & NextGIS' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import sys diff --git a/python/plugins/processing/algs/qgis/FieldsCalculator.py b/python/plugins/processing/algs/qgis/FieldsCalculator.py index d2ca11ae1f..5997951754 100644 --- a/python/plugins/processing/algs/qgis/FieldsCalculator.py +++ b/python/plugins/processing/algs/qgis/FieldsCalculator.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QVariant from qgis.core import (QgsExpression, diff --git a/python/plugins/processing/algs/qgis/FieldsMapper.py b/python/plugins/processing/algs/qgis/FieldsMapper.py index 2a1391e640..281c5438e5 100644 --- a/python/plugins/processing/algs/qgis/FieldsMapper.py +++ b/python/plugins/processing/algs/qgis/FieldsMapper.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Arnaud Morvan' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import ( QgsDistanceArea, diff --git a/python/plugins/processing/algs/qgis/FindProjection.py b/python/plugins/processing/algs/qgis/FindProjection.py index e408dded6a..a8a83c5f73 100644 --- a/python/plugins/processing/algs/qgis/FindProjection.py +++ b/python/plugins/processing/algs/qgis/FindProjection.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/GeometryByExpression.py b/python/plugins/processing/algs/qgis/GeometryByExpression.py index 4d4415f9df..69f77a27a5 100644 --- a/python/plugins/processing/algs/qgis/GeometryByExpression.py +++ b/python/plugins/processing/algs/qgis/GeometryByExpression.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsWkbTypes, QgsExpression, diff --git a/python/plugins/processing/algs/qgis/GeometryConvert.py b/python/plugins/processing/algs/qgis/GeometryConvert.py index c5cd0eabc7..ecd9418d40 100644 --- a/python/plugins/processing/algs/qgis/GeometryConvert.py +++ b/python/plugins/processing/algs/qgis/GeometryConvert.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2010, Michael Minn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsFeature, QgsGeometry, diff --git a/python/plugins/processing/algs/qgis/Grid.py b/python/plugins/processing/algs/qgis/Grid.py index a3e9a94fd1..8f2a477f31 100644 --- a/python/plugins/processing/algs/qgis/Grid.py +++ b/python/plugins/processing/algs/qgis/Grid.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2010, Michael Minn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/algs/qgis/Heatmap.py b/python/plugins/processing/algs/qgis/Heatmap.py index d44cc7d473..bccd729384 100644 --- a/python/plugins/processing/algs/qgis/Heatmap.py +++ b/python/plugins/processing/algs/qgis/Heatmap.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from collections import OrderedDict diff --git a/python/plugins/processing/algs/qgis/Hillshade.py b/python/plugins/processing/algs/qgis/Hillshade.py index f4cec85eef..e0b5029794 100644 --- a/python/plugins/processing/algs/qgis/Hillshade.py +++ b/python/plugins/processing/algs/qgis/Hillshade.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/HubDistanceLines.py b/python/plugins/processing/algs/qgis/HubDistanceLines.py index 29c0861951..ddb9d94b57 100644 --- a/python/plugins/processing/algs/qgis/HubDistanceLines.py +++ b/python/plugins/processing/algs/qgis/HubDistanceLines.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2010, Michael Minn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QVariant from qgis.core import (QgsField, diff --git a/python/plugins/processing/algs/qgis/HubDistancePoints.py b/python/plugins/processing/algs/qgis/HubDistancePoints.py index 5e8bc2a3ed..9439988136 100644 --- a/python/plugins/processing/algs/qgis/HubDistancePoints.py +++ b/python/plugins/processing/algs/qgis/HubDistancePoints.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2010, Michael Minn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QVariant from qgis.core import (QgsField, diff --git a/python/plugins/processing/algs/qgis/HypsometricCurves.py b/python/plugins/processing/algs/qgis/HypsometricCurves.py index 66ef73d5ce..1c3315fa08 100644 --- a/python/plugins/processing/algs/qgis/HypsometricCurves.py +++ b/python/plugins/processing/algs/qgis/HypsometricCurves.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import numpy diff --git a/python/plugins/processing/algs/qgis/IdwInterpolation.py b/python/plugins/processing/algs/qgis/IdwInterpolation.py index ea81eb1f3d..4315f5a558 100644 --- a/python/plugins/processing/algs/qgis/IdwInterpolation.py +++ b/python/plugins/processing/algs/qgis/IdwInterpolation.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/ImportIntoPostGIS.py b/python/plugins/processing/algs/qgis/ImportIntoPostGIS.py index 56de8141aa..ee2efc3e9a 100644 --- a/python/plugins/processing/algs/qgis/ImportIntoPostGIS.py +++ b/python/plugins/processing/algs/qgis/ImportIntoPostGIS.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsVectorLayerExporter, QgsSettings, diff --git a/python/plugins/processing/algs/qgis/ImportIntoSpatialite.py b/python/plugins/processing/algs/qgis/ImportIntoSpatialite.py index 40907fb4b0..ab854d2a5b 100644 --- a/python/plugins/processing/algs/qgis/ImportIntoSpatialite.py +++ b/python/plugins/processing/algs/qgis/ImportIntoSpatialite.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Mathieu Pellerin' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsDataSourceUri, QgsFeatureSink, diff --git a/python/plugins/processing/algs/qgis/KNearestConcaveHull.py b/python/plugins/processing/algs/qgis/KNearestConcaveHull.py index ca1eef3311..fc322ad5aa 100644 --- a/python/plugins/processing/algs/qgis/KNearestConcaveHull.py +++ b/python/plugins/processing/algs/qgis/KNearestConcaveHull.py @@ -25,7 +25,7 @@ __copyright__ = '(C) 2014, Detlev Neumann' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os.path import math diff --git a/python/plugins/processing/algs/qgis/KeepNBiggestParts.py b/python/plugins/processing/algs/qgis/KeepNBiggestParts.py index 64736ed5e2..d1fcf8dc30 100644 --- a/python/plugins/processing/algs/qgis/KeepNBiggestParts.py +++ b/python/plugins/processing/algs/qgis/KeepNBiggestParts.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from operator import itemgetter diff --git a/python/plugins/processing/algs/qgis/LinesToPolygons.py b/python/plugins/processing/algs/qgis/LinesToPolygons.py index 262b41ee2c..bac5c5cf1b 100644 --- a/python/plugins/processing/algs/qgis/LinesToPolygons.py +++ b/python/plugins/processing/algs/qgis/LinesToPolygons.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/MeanAndStdDevPlot.py b/python/plugins/processing/algs/qgis/MeanAndStdDevPlot.py index 1bf1228acc..48de103c02 100644 --- a/python/plugins/processing/algs/qgis/MeanAndStdDevPlot.py +++ b/python/plugins/processing/algs/qgis/MeanAndStdDevPlot.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import plotly as plt import plotly.graph_objs as go diff --git a/python/plugins/processing/algs/qgis/MinimumBoundingGeometry.py b/python/plugins/processing/algs/qgis/MinimumBoundingGeometry.py index afa9cb567f..12cbc0df22 100644 --- a/python/plugins/processing/algs/qgis/MinimumBoundingGeometry.py +++ b/python/plugins/processing/algs/qgis/MinimumBoundingGeometry.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/algs/qgis/NearestNeighbourAnalysis.py b/python/plugins/processing/algs/qgis/NearestNeighbourAnalysis.py index 8a9795ec90..88ff81c8d9 100644 --- a/python/plugins/processing/algs/qgis/NearestNeighbourAnalysis.py +++ b/python/plugins/processing/algs/qgis/NearestNeighbourAnalysis.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/algs/qgis/Orthogonalize.py b/python/plugins/processing/algs/qgis/Orthogonalize.py index 81d2d86dc2..da6980d6ed 100644 --- a/python/plugins/processing/algs/qgis/Orthogonalize.py +++ b/python/plugins/processing/algs/qgis/Orthogonalize.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessing, QgsProcessingException, diff --git a/python/plugins/processing/algs/qgis/PointDistance.py b/python/plugins/processing/algs/qgis/PointDistance.py index 4c47cde791..061926e7cc 100644 --- a/python/plugins/processing/algs/qgis/PointDistance.py +++ b/python/plugins/processing/algs/qgis/PointDistance.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/algs/qgis/PointsAlongGeometry.py b/python/plugins/processing/algs/qgis/PointsAlongGeometry.py index d9d57d0e26..fa38b4b51c 100644 --- a/python/plugins/processing/algs/qgis/PointsAlongGeometry.py +++ b/python/plugins/processing/algs/qgis/PointsAlongGeometry.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/algs/qgis/PointsDisplacement.py b/python/plugins/processing/algs/qgis/PointsDisplacement.py index bae1187ace..c788b533e2 100644 --- a/python/plugins/processing/algs/qgis/PointsDisplacement.py +++ b/python/plugins/processing/algs/qgis/PointsDisplacement.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import math from qgis.core import (QgsFeatureSink, diff --git a/python/plugins/processing/algs/qgis/PointsFromLines.py b/python/plugins/processing/algs/qgis/PointsFromLines.py index e607de8af5..36a162157e 100644 --- a/python/plugins/processing/algs/qgis/PointsFromLines.py +++ b/python/plugins/processing/algs/qgis/PointsFromLines.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from osgeo import gdal from qgis.PyQt.QtCore import QVariant diff --git a/python/plugins/processing/algs/qgis/PointsFromPolygons.py b/python/plugins/processing/algs/qgis/PointsFromPolygons.py index 20b4c6ddf6..ffb9832d73 100644 --- a/python/plugins/processing/algs/qgis/PointsFromPolygons.py +++ b/python/plugins/processing/algs/qgis/PointsFromPolygons.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from osgeo import gdal from qgis.core import (QgsFeatureRequest, diff --git a/python/plugins/processing/algs/qgis/PointsInPolygon.py b/python/plugins/processing/algs/qgis/PointsInPolygon.py index d7313eb3ff..7608d0b5a5 100644 --- a/python/plugins/processing/algs/qgis/PointsInPolygon.py +++ b/python/plugins/processing/algs/qgis/PointsInPolygon.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/PointsLayerFromTable.py b/python/plugins/processing/algs/qgis/PointsLayerFromTable.py index f01d50039f..0772d0c86a 100644 --- a/python/plugins/processing/algs/qgis/PointsLayerFromTable.py +++ b/python/plugins/processing/algs/qgis/PointsLayerFromTable.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsApplication, QgsWkbTypes, diff --git a/python/plugins/processing/algs/qgis/PointsToPaths.py b/python/plugins/processing/algs/qgis/PointsToPaths.py index 0069dd4724..84635607fe 100644 --- a/python/plugins/processing/algs/qgis/PointsToPaths.py +++ b/python/plugins/processing/algs/qgis/PointsToPaths.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from datetime import datetime diff --git a/python/plugins/processing/algs/qgis/PolarPlot.py b/python/plugins/processing/algs/qgis/PolarPlot.py index a15e2b7ee2..1c20e3a20c 100644 --- a/python/plugins/processing/algs/qgis/PolarPlot.py +++ b/python/plugins/processing/algs/qgis/PolarPlot.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import plotly as plt import plotly.graph_objs as go diff --git a/python/plugins/processing/algs/qgis/PoleOfInaccessibility.py b/python/plugins/processing/algs/qgis/PoleOfInaccessibility.py index 37f6c0e715..fedb8e919a 100644 --- a/python/plugins/processing/algs/qgis/PoleOfInaccessibility.py +++ b/python/plugins/processing/algs/qgis/PoleOfInaccessibility.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/Polygonize.py b/python/plugins/processing/algs/qgis/Polygonize.py index 6ab6f3e1b0..509c78bef0 100644 --- a/python/plugins/processing/algs/qgis/Polygonize.py +++ b/python/plugins/processing/algs/qgis/Polygonize.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Piotr Pociask' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication from qgis.core import (QgsFields, diff --git a/python/plugins/processing/algs/qgis/PolygonsToLines.py b/python/plugins/processing/algs/qgis/PolygonsToLines.py index c11577583c..1399bb3b1a 100644 --- a/python/plugins/processing/algs/qgis/PolygonsToLines.py +++ b/python/plugins/processing/algs/qgis/PolygonsToLines.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/PostGISExecuteAndLoadSQL.py b/python/plugins/processing/algs/qgis/PostGISExecuteAndLoadSQL.py index 1a17ee7c2e..b9e84e3884 100644 --- a/python/plugins/processing/algs/qgis/PostGISExecuteAndLoadSQL.py +++ b/python/plugins/processing/algs/qgis/PostGISExecuteAndLoadSQL.py @@ -25,7 +25,7 @@ __copyright__ = '(C) 2018, Anita Graser' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (Qgis, QgsProcessingException, diff --git a/python/plugins/processing/algs/qgis/PostGISExecuteSQL.py b/python/plugins/processing/algs/qgis/PostGISExecuteSQL.py index 5a347fb0da..0396f7ac14 100644 --- a/python/plugins/processing/algs/qgis/PostGISExecuteSQL.py +++ b/python/plugins/processing/algs/qgis/PostGISExecuteSQL.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya, Carterix Geomatics' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingException, QgsProcessingParameterString) from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm diff --git a/python/plugins/processing/algs/qgis/QgisAlgorithm.py b/python/plugins/processing/algs/qgis/QgisAlgorithm.py index 0676842cd8..eaa867241d 100644 --- a/python/plugins/processing/algs/qgis/QgisAlgorithm.py +++ b/python/plugins/processing/algs/qgis/QgisAlgorithm.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsProcessingAlgorithm, QgsProcessingFeatureBasedAlgorithm from qgis.PyQt.QtCore import QCoreApplication diff --git a/python/plugins/processing/algs/qgis/QgisAlgorithmProvider.py b/python/plugins/processing/algs/qgis/QgisAlgorithmProvider.py index d7b9a85f08..887960c721 100644 --- a/python/plugins/processing/algs/qgis/QgisAlgorithmProvider.py +++ b/python/plugins/processing/algs/qgis/QgisAlgorithmProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/algs/qgis/RandomExtract.py b/python/plugins/processing/algs/qgis/RandomExtract.py index ae7ae4d574..d132c622cd 100644 --- a/python/plugins/processing/algs/qgis/RandomExtract.py +++ b/python/plugins/processing/algs/qgis/RandomExtract.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import random diff --git a/python/plugins/processing/algs/qgis/RandomExtractWithinSubsets.py b/python/plugins/processing/algs/qgis/RandomExtractWithinSubsets.py index 68b0972f85..c4e6b81664 100644 --- a/python/plugins/processing/algs/qgis/RandomExtractWithinSubsets.py +++ b/python/plugins/processing/algs/qgis/RandomExtractWithinSubsets.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import random diff --git a/python/plugins/processing/algs/qgis/RandomPointsAlongLines.py b/python/plugins/processing/algs/qgis/RandomPointsAlongLines.py index 35351d46d9..054aaa6887 100644 --- a/python/plugins/processing/algs/qgis/RandomPointsAlongLines.py +++ b/python/plugins/processing/algs/qgis/RandomPointsAlongLines.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import random diff --git a/python/plugins/processing/algs/qgis/RandomPointsExtent.py b/python/plugins/processing/algs/qgis/RandomPointsExtent.py index 6248fd1a0e..75eaf8dfac 100644 --- a/python/plugins/processing/algs/qgis/RandomPointsExtent.py +++ b/python/plugins/processing/algs/qgis/RandomPointsExtent.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import random diff --git a/python/plugins/processing/algs/qgis/RandomPointsLayer.py b/python/plugins/processing/algs/qgis/RandomPointsLayer.py index 6f5f748892..e4b26aa68f 100644 --- a/python/plugins/processing/algs/qgis/RandomPointsLayer.py +++ b/python/plugins/processing/algs/qgis/RandomPointsLayer.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import random diff --git a/python/plugins/processing/algs/qgis/RandomPointsPolygons.py b/python/plugins/processing/algs/qgis/RandomPointsPolygons.py index f0b34217a2..8aa6c77561 100644 --- a/python/plugins/processing/algs/qgis/RandomPointsPolygons.py +++ b/python/plugins/processing/algs/qgis/RandomPointsPolygons.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import random diff --git a/python/plugins/processing/algs/qgis/RandomSelection.py b/python/plugins/processing/algs/qgis/RandomSelection.py index 2623333b0e..930965e0f3 100644 --- a/python/plugins/processing/algs/qgis/RandomSelection.py +++ b/python/plugins/processing/algs/qgis/RandomSelection.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import random diff --git a/python/plugins/processing/algs/qgis/RandomSelectionWithinSubsets.py b/python/plugins/processing/algs/qgis/RandomSelectionWithinSubsets.py index 5307180ef2..14430f7a84 100644 --- a/python/plugins/processing/algs/qgis/RandomSelectionWithinSubsets.py +++ b/python/plugins/processing/algs/qgis/RandomSelectionWithinSubsets.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import random diff --git a/python/plugins/processing/algs/qgis/RasterCalculator.py b/python/plugins/processing/algs/qgis/RasterCalculator.py index 5484f60572..16a322b312 100644 --- a/python/plugins/processing/algs/qgis/RasterCalculator.py +++ b/python/plugins/processing/algs/qgis/RasterCalculator.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/algs/qgis/RasterLayerHistogram.py b/python/plugins/processing/algs/qgis/RasterLayerHistogram.py index 1b581a91e1..99d7845aed 100644 --- a/python/plugins/processing/algs/qgis/RasterLayerHistogram.py +++ b/python/plugins/processing/algs/qgis/RasterLayerHistogram.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import plotly as plt import plotly.graph_objs as go diff --git a/python/plugins/processing/algs/qgis/RasterLayerStatistics.py b/python/plugins/processing/algs/qgis/RasterLayerStatistics.py index 58cc77fc68..945ec14511 100644 --- a/python/plugins/processing/algs/qgis/RasterLayerStatistics.py +++ b/python/plugins/processing/algs/qgis/RasterLayerStatistics.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import codecs diff --git a/python/plugins/processing/algs/qgis/RasterSampling.py b/python/plugins/processing/algs/qgis/RasterSampling.py index 6f7ad79dee..f88f59c458 100644 --- a/python/plugins/processing/algs/qgis/RasterSampling.py +++ b/python/plugins/processing/algs/qgis/RasterSampling.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Matteo Ghetta' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/Rasterize.py b/python/plugins/processing/algs/qgis/Rasterize.py index 75d27a6c77..d4a7ae5ce5 100644 --- a/python/plugins/processing/algs/qgis/Rasterize.py +++ b/python/plugins/processing/algs/qgis/Rasterize.py @@ -49,7 +49,7 @@ __copyright__ = '(C) 2016 by OPENGIS.ch' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' class RasterizeAlgorithm(QgisAlgorithm): diff --git a/python/plugins/processing/algs/qgis/RectanglesOvalsDiamondsFixed.py b/python/plugins/processing/algs/qgis/RectanglesOvalsDiamondsFixed.py index 5ed0bb17f1..7cf6eebb47 100644 --- a/python/plugins/processing/algs/qgis/RectanglesOvalsDiamondsFixed.py +++ b/python/plugins/processing/algs/qgis/RectanglesOvalsDiamondsFixed.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import math diff --git a/python/plugins/processing/algs/qgis/RectanglesOvalsDiamondsVariable.py b/python/plugins/processing/algs/qgis/RectanglesOvalsDiamondsVariable.py index 295d89ad15..9af8dc74b1 100644 --- a/python/plugins/processing/algs/qgis/RectanglesOvalsDiamondsVariable.py +++ b/python/plugins/processing/algs/qgis/RectanglesOvalsDiamondsVariable.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import math diff --git a/python/plugins/processing/algs/qgis/RegularPoints.py b/python/plugins/processing/algs/qgis/RegularPoints.py index acc326eea1..33929a6ff4 100644 --- a/python/plugins/processing/algs/qgis/RegularPoints.py +++ b/python/plugins/processing/algs/qgis/RegularPoints.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from random import seed, uniform diff --git a/python/plugins/processing/algs/qgis/Relief.py b/python/plugins/processing/algs/qgis/Relief.py index 17b6440fee..86698fda32 100644 --- a/python/plugins/processing/algs/qgis/Relief.py +++ b/python/plugins/processing/algs/qgis/Relief.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/Ruggedness.py b/python/plugins/processing/algs/qgis/Ruggedness.py index 98cfa9e955..80e2a8b894 100644 --- a/python/plugins/processing/algs/qgis/Ruggedness.py +++ b/python/plugins/processing/algs/qgis/Ruggedness.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/SelectByAttribute.py b/python/plugins/processing/algs/qgis/SelectByAttribute.py index 4e9ca579af..8bc349c676 100644 --- a/python/plugins/processing/algs/qgis/SelectByAttribute.py +++ b/python/plugins/processing/algs/qgis/SelectByAttribute.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2010, Michael Minn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QVariant from qgis.core import (QgsExpression, @@ -48,7 +48,7 @@ class SelectByAttribute(QgisAlgorithm): OUTPUT = 'OUTPUT' OPERATORS = ['=', - '≠', + '<>', '>', '>=', '<', @@ -82,9 +82,9 @@ class SelectByAttribute(QgisAlgorithm): self.operators = ['=', '≠', '>', - '>=', + '≥', '<', - '<=', + '≤', self.tr('begins with'), self.tr('contains'), self.tr('is null'), @@ -104,14 +104,14 @@ class SelectByAttribute(QgisAlgorithm): self.tr('Selection attribute'), parentLayerParameterName=self.INPUT)) self.addParameter(QgsProcessingParameterEnum(self.OPERATOR, - self.tr('Operator'), self.operators)) + self.tr('Operator'), self.operators, defaultValue=0)) self.addParameter(QgsProcessingParameterString(self.VALUE, self.tr('Value'), optional=True)) self.addParameter(QgsProcessingParameterEnum(self.METHOD, self.tr('Modify current selection by'), self.methods, - 0)) + defaultValue=0)) self.addOutput(QgsProcessingOutputVectorLayer(self.OUTPUT, self.tr('Selected (attribute)'))) diff --git a/python/plugins/processing/algs/qgis/SelectByExpression.py b/python/plugins/processing/algs/qgis/SelectByExpression.py index bac1ca625f..00c2a052be 100644 --- a/python/plugins/processing/algs/qgis/SelectByExpression.py +++ b/python/plugins/processing/algs/qgis/SelectByExpression.py @@ -22,7 +22,7 @@ __copyright__ = '(C) 2014, Michael Douchin' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsExpression, QgsProcessing, @@ -66,7 +66,7 @@ class SelectByExpression(QgisAlgorithm): self.addParameter(QgsProcessingParameterExpression(self.EXPRESSION, self.tr('Expression'), parentLayerParameterName=self.INPUT)) self.addParameter(QgsProcessingParameterEnum(self.METHOD, - self.tr('Modify current selection by'), self.methods, 0)) + self.tr('Modify current selection by'), self.methods, defaultValue=0)) self.addOutput(QgsProcessingOutputVectorLayer(self.OUTPUT, self.tr('Selected (attribute)'))) diff --git a/python/plugins/processing/algs/qgis/ServiceAreaFromLayer.py b/python/plugins/processing/algs/qgis/ServiceAreaFromLayer.py index 4c765b1b53..3833ed9aca 100644 --- a/python/plugins/processing/algs/qgis/ServiceAreaFromLayer.py +++ b/python/plugins/processing/algs/qgis/ServiceAreaFromLayer.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from collections import OrderedDict diff --git a/python/plugins/processing/algs/qgis/ServiceAreaFromPoint.py b/python/plugins/processing/algs/qgis/ServiceAreaFromPoint.py index f9ded70a51..fa2c6a9284 100644 --- a/python/plugins/processing/algs/qgis/ServiceAreaFromPoint.py +++ b/python/plugins/processing/algs/qgis/ServiceAreaFromPoint.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from collections import OrderedDict diff --git a/python/plugins/processing/algs/qgis/SetMValue.py b/python/plugins/processing/algs/qgis/SetMValue.py index 3a3b0e4007..2bb6ee40b0 100644 --- a/python/plugins/processing/algs/qgis/SetMValue.py +++ b/python/plugins/processing/algs/qgis/SetMValue.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/SetRasterStyle.py b/python/plugins/processing/algs/qgis/SetRasterStyle.py index aff067fa47..8a15256bba 100644 --- a/python/plugins/processing/algs/qgis/SetRasterStyle.py +++ b/python/plugins/processing/algs/qgis/SetRasterStyle.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/SetVectorStyle.py b/python/plugins/processing/algs/qgis/SetVectorStyle.py index f5ffe94862..cbf5963614 100644 --- a/python/plugins/processing/algs/qgis/SetVectorStyle.py +++ b/python/plugins/processing/algs/qgis/SetVectorStyle.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingAlgorithm, QgsProcessingParameterFile, diff --git a/python/plugins/processing/algs/qgis/SetZValue.py b/python/plugins/processing/algs/qgis/SetZValue.py index f9b7b42271..8cc4271a8b 100644 --- a/python/plugins/processing/algs/qgis/SetZValue.py +++ b/python/plugins/processing/algs/qgis/SetZValue.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/SingleSidedBuffer.py b/python/plugins/processing/algs/qgis/SingleSidedBuffer.py index 26ff46932c..0dcfe8fa8e 100644 --- a/python/plugins/processing/algs/qgis/SingleSidedBuffer.py +++ b/python/plugins/processing/algs/qgis/SingleSidedBuffer.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsGeometry, QgsWkbTypes, diff --git a/python/plugins/processing/algs/qgis/Slope.py b/python/plugins/processing/algs/qgis/Slope.py index e14d62eb05..809c5f420d 100644 --- a/python/plugins/processing/algs/qgis/Slope.py +++ b/python/plugins/processing/algs/qgis/Slope.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/SnapGeometries.py b/python/plugins/processing/algs/qgis/SnapGeometries.py index 6f395b002a..5c87c60b0e 100644 --- a/python/plugins/processing/algs/qgis/SnapGeometries.py +++ b/python/plugins/processing/algs/qgis/SnapGeometries.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.analysis import (QgsGeometrySnapper, QgsGeometrySnapperSingleSource, diff --git a/python/plugins/processing/algs/qgis/SpatialIndex.py b/python/plugins/processing/algs/qgis/SpatialIndex.py index 97ac2e33a1..8e0cf5cc73 100644 --- a/python/plugins/processing/algs/qgis/SpatialIndex.py +++ b/python/plugins/processing/algs/qgis/SpatialIndex.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/SpatialJoin.py b/python/plugins/processing/algs/qgis/SpatialJoin.py index 091a1befad..e995873c3c 100644 --- a/python/plugins/processing/algs/qgis/SpatialJoin.py +++ b/python/plugins/processing/algs/qgis/SpatialJoin.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Joshua Arnott' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/SpatialJoinSummary.py b/python/plugins/processing/algs/qgis/SpatialJoinSummary.py index df42bd27e2..6edaffcdec 100644 --- a/python/plugins/processing/algs/qgis/SpatialJoinSummary.py +++ b/python/plugins/processing/algs/qgis/SpatialJoinSummary.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/algs/qgis/SpatialiteExecuteSQL.py b/python/plugins/processing/algs/qgis/SpatialiteExecuteSQL.py index 5db2537fc3..21dc6aaa18 100644 --- a/python/plugins/processing/algs/qgis/SpatialiteExecuteSQL.py +++ b/python/plugins/processing/algs/qgis/SpatialiteExecuteSQL.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Mathieu Pellerin' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsDataSourceUri, QgsProcessing, diff --git a/python/plugins/processing/algs/qgis/StatisticsByCategories.py b/python/plugins/processing/algs/qgis/StatisticsByCategories.py index ed7a83df7a..e3b1a28f93 100644 --- a/python/plugins/processing/algs/qgis/StatisticsByCategories.py +++ b/python/plugins/processing/algs/qgis/StatisticsByCategories.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingParameterFeatureSource, QgsStatisticalSummary, diff --git a/python/plugins/processing/algs/qgis/SumLines.py b/python/plugins/processing/algs/qgis/SumLines.py index 1c46cbf628..feedfbc8f5 100644 --- a/python/plugins/processing/algs/qgis/SumLines.py +++ b/python/plugins/processing/algs/qgis/SumLines.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/TextToFloat.py b/python/plugins/processing/algs/qgis/TextToFloat.py index 177e99900d..ab385802f7 100644 --- a/python/plugins/processing/algs/qgis/TextToFloat.py +++ b/python/plugins/processing/algs/qgis/TextToFloat.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2010, Michael Minn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QVariant from qgis.core import (QgsField, diff --git a/python/plugins/processing/algs/qgis/TinInterpolation.py b/python/plugins/processing/algs/qgis/TinInterpolation.py index f7f7bc265b..a992cc2d38 100644 --- a/python/plugins/processing/algs/qgis/TinInterpolation.py +++ b/python/plugins/processing/algs/qgis/TinInterpolation.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/TopoColors.py b/python/plugins/processing/algs/qgis/TopoColors.py index e5bbe514dc..804e3b9f67 100644 --- a/python/plugins/processing/algs/qgis/TopoColors.py +++ b/python/plugins/processing/algs/qgis/TopoColors.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive323 -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import operator diff --git a/python/plugins/processing/algs/qgis/TruncateTable.py b/python/plugins/processing/algs/qgis/TruncateTable.py index fff8e7d5fd..2bbcd44b06 100644 --- a/python/plugins/processing/algs/qgis/TruncateTable.py +++ b/python/plugins/processing/algs/qgis/TruncateTable.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessingAlgorithm, QgsProcessingParameterVectorLayer, diff --git a/python/plugins/processing/algs/qgis/UniqueValues.py b/python/plugins/processing/algs/qgis/UniqueValues.py index 03557f3bce..0561ca1425 100644 --- a/python/plugins/processing/algs/qgis/UniqueValues.py +++ b/python/plugins/processing/algs/qgis/UniqueValues.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import codecs diff --git a/python/plugins/processing/algs/qgis/VariableDistanceBuffer.py b/python/plugins/processing/algs/qgis/VariableDistanceBuffer.py index 23385ef96e..0d5da09155 100644 --- a/python/plugins/processing/algs/qgis/VariableDistanceBuffer.py +++ b/python/plugins/processing/algs/qgis/VariableDistanceBuffer.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/VectorLayerHistogram.py b/python/plugins/processing/algs/qgis/VectorLayerHistogram.py index 1b4e66e68c..54bb105d20 100644 --- a/python/plugins/processing/algs/qgis/VectorLayerHistogram.py +++ b/python/plugins/processing/algs/qgis/VectorLayerHistogram.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import plotly as plt import plotly.graph_objs as go diff --git a/python/plugins/processing/algs/qgis/VectorLayerScatterplot.py b/python/plugins/processing/algs/qgis/VectorLayerScatterplot.py index 8737a6756a..41425b2622 100644 --- a/python/plugins/processing/algs/qgis/VectorLayerScatterplot.py +++ b/python/plugins/processing/algs/qgis/VectorLayerScatterplot.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import plotly as plt import plotly.graph_objs as go diff --git a/python/plugins/processing/algs/qgis/VectorLayerScatterplot3D.py b/python/plugins/processing/algs/qgis/VectorLayerScatterplot3D.py index 61c188707a..a11b92968c 100644 --- a/python/plugins/processing/algs/qgis/VectorLayerScatterplot3D.py +++ b/python/plugins/processing/algs/qgis/VectorLayerScatterplot3D.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import plotly as plt import plotly.graph_objs as go diff --git a/python/plugins/processing/algs/qgis/VectorSplit.py b/python/plugins/processing/algs/qgis/VectorSplit.py index bfcd3db182..343d29b5d3 100644 --- a/python/plugins/processing/algs/qgis/VectorSplit.py +++ b/python/plugins/processing/algs/qgis/VectorSplit.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/VoronoiPolygons.py b/python/plugins/processing/algs/qgis/VoronoiPolygons.py index 3cf82e8071..65bef047f4 100755 --- a/python/plugins/processing/algs/qgis/VoronoiPolygons.py +++ b/python/plugins/processing/algs/qgis/VoronoiPolygons.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/ZonalStatistics.py b/python/plugins/processing/algs/qgis/ZonalStatistics.py index 22042f7db7..7d05f2a875 100644 --- a/python/plugins/processing/algs/qgis/ZonalStatistics.py +++ b/python/plugins/processing/algs/qgis/ZonalStatistics.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from collections import OrderedDict diff --git a/python/plugins/processing/algs/qgis/ui/AggregatesPanel.py b/python/plugins/processing/algs/qgis/ui/AggregatesPanel.py index 6aec50c6c6..b37a158284 100644 --- a/python/plugins/processing/algs/qgis/ui/AggregatesPanel.py +++ b/python/plugins/processing/algs/qgis/ui/AggregatesPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Arnaud Morvan' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import ( QItemSelectionModel, diff --git a/python/plugins/processing/algs/qgis/ui/ExecuteSQLWidget.py b/python/plugins/processing/algs/qgis/ui/ExecuteSQLWidget.py index d481679e0d..7075a7d7be 100644 --- a/python/plugins/processing/algs/qgis/ui/ExecuteSQLWidget.py +++ b/python/plugins/processing/algs/qgis/ui/ExecuteSQLWidget.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Paul Blottiere' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/ui/FieldsCalculatorDialog.py b/python/plugins/processing/algs/qgis/ui/FieldsCalculatorDialog.py index 0a433f1aac..04d55c9340 100644 --- a/python/plugins/processing/algs/qgis/ui/FieldsCalculatorDialog.py +++ b/python/plugins/processing/algs/qgis/ui/FieldsCalculatorDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re diff --git a/python/plugins/processing/algs/qgis/ui/FieldsMappingPanel.py b/python/plugins/processing/algs/qgis/ui/FieldsMappingPanel.py index 9395976eea..502993bbce 100644 --- a/python/plugins/processing/algs/qgis/ui/FieldsMappingPanel.py +++ b/python/plugins/processing/algs/qgis/ui/FieldsMappingPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Arnaud Morvan' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from collections import OrderedDict diff --git a/python/plugins/processing/algs/qgis/ui/InterpolationWidgets.py b/python/plugins/processing/algs/qgis/ui/InterpolationWidgets.py index 509b4aa3b0..066abe3f0a 100644 --- a/python/plugins/processing/algs/qgis/ui/InterpolationWidgets.py +++ b/python/plugins/processing/algs/qgis/ui/InterpolationWidgets.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/qgis/ui/RasterCalculatorWidgets.py b/python/plugins/processing/algs/qgis/ui/RasterCalculatorWidgets.py index 65a6e78eb7..ee22e72d60 100644 --- a/python/plugins/processing/algs/qgis/ui/RasterCalculatorWidgets.py +++ b/python/plugins/processing/algs/qgis/ui/RasterCalculatorWidgets.py @@ -21,7 +21,7 @@ __author__ = 'Victor Olaya' __date__ = 'November 2016' __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from functools import partial @@ -120,7 +120,7 @@ WIDGET, BASE = uic.loadUiType( class ExpressionWidget(BASE, WIDGET): - _expressions = {"NDVI": "([NIR] - [Red]) % ([NIR] + [Red])"} + _expressions = {"NDVI": "([NIR] - [Red]) / ([NIR] + [Red])"} def __init__(self, options): super(ExpressionWidget, self).__init__(None) diff --git a/python/plugins/processing/algs/qgis/ui/ReliefColorsWidget.py b/python/plugins/processing/algs/qgis/ui/ReliefColorsWidget.py index 7cf29796f3..56f0ab628c 100644 --- a/python/plugins/processing/algs/qgis/ui/ReliefColorsWidget.py +++ b/python/plugins/processing/algs/qgis/ui/ReliefColorsWidget.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import codecs diff --git a/python/plugins/processing/algs/qgis/voronoi.py b/python/plugins/processing/algs/qgis/voronoi.py index cabd8bfb1d..e3038e559f 100755 --- a/python/plugins/processing/algs/qgis/voronoi.py +++ b/python/plugins/processing/algs/qgis/voronoi.py @@ -21,7 +21,7 @@ __author__ = 'Victor Olaya' __date__ = 'August 2012' __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' ############################################################################# # diff --git a/python/plugins/processing/algs/saga/SagaAlgorithm.py b/python/plugins/processing/algs/saga/SagaAlgorithm.py index 78e23f68ad..f1f852110a 100644 --- a/python/plugins/processing/algs/saga/SagaAlgorithm.py +++ b/python/plugins/processing/algs/saga/SagaAlgorithm.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import shutil @@ -225,7 +225,7 @@ class SagaAlgorithm(SagaAlgorithmBase): for i, layer in enumerate(layers): if layer.source().lower().endswith('sdat'): files.append(layer.source()[:-4] + 'sgrd') - if layer.source().lower().endswith('sgrd'): + elif layer.source().lower().endswith('sgrd'): files.append(layer.source()) else: exportCommand = self.exportRasterLayer(param.name(), layer) diff --git a/python/plugins/processing/algs/saga/SagaAlgorithmBase.py b/python/plugins/processing/algs/saga/SagaAlgorithmBase.py index 183d04721e..f62fede877 100644 --- a/python/plugins/processing/algs/saga/SagaAlgorithmBase.py +++ b/python/plugins/processing/algs/saga/SagaAlgorithmBase.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py b/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py index e8f10c69af..4c105c657e 100755 --- a/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py +++ b/python/plugins/processing/algs/saga/SagaAlgorithmProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.PyQt.QtGui import QIcon diff --git a/python/plugins/processing/algs/saga/SagaDescriptionCreator.py b/python/plugins/processing/algs/saga/SagaDescriptionCreator.py index cf5dcc745a..7ef9b823c5 100644 --- a/python/plugins/processing/algs/saga/SagaDescriptionCreator.py +++ b/python/plugins/processing/algs/saga/SagaDescriptionCreator.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import subprocess import os diff --git a/python/plugins/processing/algs/saga/SagaNameDecorator.py b/python/plugins/processing/algs/saga/SagaNameDecorator.py index b169f42b62..5056fd5fa6 100644 --- a/python/plugins/processing/algs/saga/SagaNameDecorator.py +++ b/python/plugins/processing/algs/saga/SagaNameDecorator.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' groups = {'grid_analysis': 'Raster analysis', 'grid_calculus': 'Raster calculus', diff --git a/python/plugins/processing/algs/saga/SagaParameters.py b/python/plugins/processing/algs/saga/SagaParameters.py index 8f374df44d..0473a11d22 100644 --- a/python/plugins/processing/algs/saga/SagaParameters.py +++ b/python/plugins/processing/algs/saga/SagaParameters.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import importlib diff --git a/python/plugins/processing/algs/saga/SagaUtils.py b/python/plugins/processing/algs/saga/SagaUtils.py index 569a8ba628..9e21de2f99 100644 --- a/python/plugins/processing/algs/saga/SagaUtils.py +++ b/python/plugins/processing/algs/saga/SagaUtils.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import platform diff --git a/python/plugins/processing/algs/saga/SplitRGBBands.py b/python/plugins/processing/algs/saga/SplitRGBBands.py index 2344a1f2d2..84e7fbefd9 100644 --- a/python/plugins/processing/algs/saga/SplitRGBBands.py +++ b/python/plugins/processing/algs/saga/SplitRGBBands.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.core import (QgsProcessingParameterRasterLayer, @@ -60,7 +60,10 @@ class SplitRGBBands(SagaAlgorithmBase): return self.tr('Split RGB bands') def group(self): - return self.tr('Image tools') + return self.tr('Raster tools') + + def groupId(self): + return 'rastertools' def processAlgorithm(self, parameters, context, feedback): # TODO: check correct num of bands diff --git a/python/plugins/processing/algs/saga/description/UserDefinedFilter.txt b/python/plugins/processing/algs/saga/description/UserDefinedFilter.txt index b382bdb0ac..5dbaf76a86 100644 --- a/python/plugins/processing/algs/saga/description/UserDefinedFilter.txt +++ b/python/plugins/processing/algs/saga/description/UserDefinedFilter.txt @@ -2,5 +2,5 @@ User Defined Filter grid_filter QgsProcessingParameterRasterLayer|INPUT|Grid|None|False QgsProcessingParameterFeatureSource|FILTER|Filter Matrix|5|None|True -QgsProcessingParameterMatrix|FILTER_3X3|Default Filter Matrix (3x3)|3|True|1;2;3 +QgsProcessingParameterMatrix|FILTER_3X3|Default Filter Matrix (3x3)|3|True|1;2;3|,,,,,,,, QgsProcessingParameterRasterDestination|RESULT|Filtered Grid diff --git a/python/plugins/processing/algs/saga/ext/supervisedclassification.py b/python/plugins/processing/algs/saga/ext/supervisedclassification.py index af5a00f6eb..149058c3d4 100644 --- a/python/plugins/processing/algs/saga/ext/supervisedclassification.py +++ b/python/plugins/processing/algs/saga/ext/supervisedclassification.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from processing.tests.TestData import table diff --git a/python/plugins/processing/algs/saga/versioncheck.py b/python/plugins/processing/algs/saga/versioncheck.py index bdbdd698ba..476298dcfc 100644 --- a/python/plugins/processing/algs/saga/versioncheck.py +++ b/python/plugins/processing/algs/saga/versioncheck.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/core/Processing.py b/python/plugins/processing/core/Processing.py index d0e5536211..24574b076c 100644 --- a/python/plugins/processing/core/Processing.py +++ b/python/plugins/processing/core/Processing.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import traceback diff --git a/python/plugins/processing/core/ProcessingConfig.py b/python/plugins/processing/core/ProcessingConfig.py index 17f3165909..aa69ca9e15 100644 --- a/python/plugins/processing/core/ProcessingConfig.py +++ b/python/plugins/processing/core/ProcessingConfig.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/core/ProcessingLog.py b/python/plugins/processing/core/ProcessingLog.py index 055f9c5a8d..0d764fab79 100644 --- a/python/plugins/processing/core/ProcessingLog.py +++ b/python/plugins/processing/core/ProcessingLog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import codecs diff --git a/python/plugins/processing/core/ProcessingResults.py b/python/plugins/processing/core/ProcessingResults.py index d5be07d7db..2ed94052e4 100644 --- a/python/plugins/processing/core/ProcessingResults.py +++ b/python/plugins/processing/core/ProcessingResults.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QObject, pyqtSignal diff --git a/python/plugins/processing/core/defaultproviders.py b/python/plugins/processing/core/defaultproviders.py index 1631a2582c..acc12d2a5c 100644 --- a/python/plugins/processing/core/defaultproviders.py +++ b/python/plugins/processing/core/defaultproviders.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def loadDefaultProviders(): diff --git a/python/plugins/processing/core/outputs.py b/python/plugins/processing/core/outputs.py index ffd2e26845..400bf7f1f2 100644 --- a/python/plugins/processing/core/outputs.py +++ b/python/plugins/processing/core/outputs.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import sys diff --git a/python/plugins/processing/core/parameters.py b/python/plugins/processing/core/parameters.py index 423bb94c0e..52bb1c64bd 100755 --- a/python/plugins/processing/core/parameters.py +++ b/python/plugins/processing/core/parameters.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import sys diff --git a/python/plugins/processing/gui/AlgorithmDialog.py b/python/plugins/processing/gui/AlgorithmDialog.py index d50fe5edfb..00352911ab 100644 --- a/python/plugins/processing/gui/AlgorithmDialog.py +++ b/python/plugins/processing/gui/AlgorithmDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from pprint import pformat diff --git a/python/plugins/processing/gui/AlgorithmDialogBase.py b/python/plugins/processing/gui/AlgorithmDialogBase.py index 15511b29ce..3f34dc8d50 100644 --- a/python/plugins/processing/gui/AlgorithmDialogBase.py +++ b/python/plugins/processing/gui/AlgorithmDialogBase.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' class AlgorithmDialogBase: diff --git a/python/plugins/processing/gui/AlgorithmExecutor.py b/python/plugins/processing/gui/AlgorithmExecutor.py index 37710651aa..d82c56a200 100644 --- a/python/plugins/processing/gui/AlgorithmExecutor.py +++ b/python/plugins/processing/gui/AlgorithmExecutor.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import sys from qgis.PyQt.QtCore import QCoreApplication diff --git a/python/plugins/processing/gui/AlgorithmLocatorFilter.py b/python/plugins/processing/gui/AlgorithmLocatorFilter.py index 9cb4042eca..ac0963c4bb 100644 --- a/python/plugins/processing/gui/AlgorithmLocatorFilter.py +++ b/python/plugins/processing/gui/AlgorithmLocatorFilter.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsApplication, diff --git a/python/plugins/processing/gui/AutofillDialog.py b/python/plugins/processing/gui/AutofillDialog.py index e282f2e9fa..a62601ca5e 100644 --- a/python/plugins/processing/gui/AutofillDialog.py +++ b/python/plugins/processing/gui/AutofillDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/BatchAlgorithmDialog.py b/python/plugins/processing/gui/BatchAlgorithmDialog.py index c73d309b93..eb499c606d 100644 --- a/python/plugins/processing/gui/BatchAlgorithmDialog.py +++ b/python/plugins/processing/gui/BatchAlgorithmDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from pprint import pformat import time diff --git a/python/plugins/processing/gui/BatchInputSelectionPanel.py b/python/plugins/processing/gui/BatchInputSelectionPanel.py index 9895b2e092..80f9ff55db 100644 --- a/python/plugins/processing/gui/BatchInputSelectionPanel.py +++ b/python/plugins/processing/gui/BatchInputSelectionPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/gui/BatchOutputSelectionPanel.py b/python/plugins/processing/gui/BatchOutputSelectionPanel.py index 877d851e57..81aefbdb08 100644 --- a/python/plugins/processing/gui/BatchOutputSelectionPanel.py +++ b/python/plugins/processing/gui/BatchOutputSelectionPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re diff --git a/python/plugins/processing/gui/BatchPanel.py b/python/plugins/processing/gui/BatchPanel.py index aa41676403..55b9be7fba 100644 --- a/python/plugins/processing/gui/BatchPanel.py +++ b/python/plugins/processing/gui/BatchPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import json diff --git a/python/plugins/processing/gui/CheckboxesPanel.py b/python/plugins/processing/gui/CheckboxesPanel.py index cf9c24fa32..2f1020117a 100644 --- a/python/plugins/processing/gui/CheckboxesPanel.py +++ b/python/plugins/processing/gui/CheckboxesPanel.py @@ -23,7 +23,7 @@ __date__ = 'January 2015' __copyright__ = '(C) 2015, Arnaud Morvan' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import Qt from qgis.PyQt.QtWidgets import ( diff --git a/python/plugins/processing/gui/ConfigDialog.py b/python/plugins/processing/gui/ConfigDialog.py index 3d26e361d2..3cf5873126 100644 --- a/python/plugins/processing/gui/ConfigDialog.py +++ b/python/plugins/processing/gui/ConfigDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/ContextAction.py b/python/plugins/processing/gui/ContextAction.py index 16009e520e..cd4513192b 100644 --- a/python/plugins/processing/gui/ContextAction.py +++ b/python/plugins/processing/gui/ContextAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication diff --git a/python/plugins/processing/gui/DestinationSelectionPanel.py b/python/plugins/processing/gui/DestinationSelectionPanel.py index ef7020dbbd..c24b22ddaa 100644 --- a/python/plugins/processing/gui/DestinationSelectionPanel.py +++ b/python/plugins/processing/gui/DestinationSelectionPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import re import os diff --git a/python/plugins/processing/gui/DirectorySelectorDialog.py b/python/plugins/processing/gui/DirectorySelectorDialog.py index 3fa5a576fc..e2c44c3951 100644 --- a/python/plugins/processing/gui/DirectorySelectorDialog.py +++ b/python/plugins/processing/gui/DirectorySelectorDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/EditRenderingStylesDialog.py b/python/plugins/processing/gui/EditRenderingStylesDialog.py index fac2d52b61..c2944d190f 100644 --- a/python/plugins/processing/gui/EditRenderingStylesDialog.py +++ b/python/plugins/processing/gui/EditRenderingStylesDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/ExtentSelectionPanel.py b/python/plugins/processing/gui/ExtentSelectionPanel.py index 19b0b4efe8..7dc6992d33 100644 --- a/python/plugins/processing/gui/ExtentSelectionPanel.py +++ b/python/plugins/processing/gui/ExtentSelectionPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/FileSelectionPanel.py b/python/plugins/processing/gui/FileSelectionPanel.py index d48e62030c..521c7d507b 100644 --- a/python/plugins/processing/gui/FileSelectionPanel.py +++ b/python/plugins/processing/gui/FileSelectionPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/FixedTableDialog.py b/python/plugins/processing/gui/FixedTableDialog.py index 69028e5d04..89c944be74 100644 --- a/python/plugins/processing/gui/FixedTableDialog.py +++ b/python/plugins/processing/gui/FixedTableDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/FixedTablePanel.py b/python/plugins/processing/gui/FixedTablePanel.py index c24b2a6324..88d1f6e758 100644 --- a/python/plugins/processing/gui/FixedTablePanel.py +++ b/python/plugins/processing/gui/FixedTablePanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/Help2Html.py b/python/plugins/processing/gui/Help2Html.py index 75df5b32de..b1f31fbaea 100644 --- a/python/plugins/processing/gui/Help2Html.py +++ b/python/plugins/processing/gui/Help2Html.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re diff --git a/python/plugins/processing/gui/HelpEditionDialog.py b/python/plugins/processing/gui/HelpEditionDialog.py index e57f50c2a2..ce9a95ef43 100644 --- a/python/plugins/processing/gui/HelpEditionDialog.py +++ b/python/plugins/processing/gui/HelpEditionDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import json diff --git a/python/plugins/processing/gui/HistoryDialog.py b/python/plugins/processing/gui/HistoryDialog.py index 7bec5d80f0..1eea45ceeb 100644 --- a/python/plugins/processing/gui/HistoryDialog.py +++ b/python/plugins/processing/gui/HistoryDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/ListMultiselectWidget.py b/python/plugins/processing/gui/ListMultiselectWidget.py index dda03fc5af..568a36c1e5 100644 --- a/python/plugins/processing/gui/ListMultiselectWidget.py +++ b/python/plugins/processing/gui/ListMultiselectWidget.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Marco Bernasocchi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtWidgets import (QGroupBox, diff --git a/python/plugins/processing/gui/MessageBarProgress.py b/python/plugins/processing/gui/MessageBarProgress.py index 2f039a3eef..db2aa8fa0d 100644 --- a/python/plugins/processing/gui/MessageBarProgress.py +++ b/python/plugins/processing/gui/MessageBarProgress.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import Qt, QCoreApplication from qgis.PyQt.QtWidgets import QProgressBar diff --git a/python/plugins/processing/gui/MessageDialog.py b/python/plugins/processing/gui/MessageDialog.py index 043a0d01d0..bfc42966af 100644 --- a/python/plugins/processing/gui/MessageDialog.py +++ b/python/plugins/processing/gui/MessageDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2014, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/MultipleFileInputDialog.py b/python/plugins/processing/gui/MultipleFileInputDialog.py index 41a869de27..c70a74ef35 100644 --- a/python/plugins/processing/gui/MultipleFileInputDialog.py +++ b/python/plugins/processing/gui/MultipleFileInputDialog.py @@ -25,7 +25,7 @@ __author__ = 'Victor Olaya' __date__ = 'August 2012' __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/MultipleInputDialog.py b/python/plugins/processing/gui/MultipleInputDialog.py index ed0730a7bc..c36c6938cc 100755 --- a/python/plugins/processing/gui/MultipleInputDialog.py +++ b/python/plugins/processing/gui/MultipleInputDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/MultipleInputPanel.py b/python/plugins/processing/gui/MultipleInputPanel.py index 41804998f3..01fb941893 100644 --- a/python/plugins/processing/gui/MultipleInputPanel.py +++ b/python/plugins/processing/gui/MultipleInputPanel.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/NumberInputPanel.py b/python/plugins/processing/gui/NumberInputPanel.py index d066da626b..96b8a6f341 100755 --- a/python/plugins/processing/gui/NumberInputPanel.py +++ b/python/plugins/processing/gui/NumberInputPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/gui/ParameterGuiUtils.py b/python/plugins/processing/gui/ParameterGuiUtils.py index 345df3fadb..25e5b5ba7b 100644 --- a/python/plugins/processing/gui/ParameterGuiUtils.py +++ b/python/plugins/processing/gui/ParameterGuiUtils.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProcessing, QgsProviderRegistry, diff --git a/python/plugins/processing/gui/ParametersPanel.py b/python/plugins/processing/gui/ParametersPanel.py index 267b8e136d..8e9524b744 100644 --- a/python/plugins/processing/gui/ParametersPanel.py +++ b/python/plugins/processing/gui/ParametersPanel.py @@ -27,7 +27,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/PointMapTool.py b/python/plugins/processing/gui/PointMapTool.py index 88875df5b5..c9325cc51b 100644 --- a/python/plugins/processing/gui/PointMapTool.py +++ b/python/plugins/processing/gui/PointMapTool.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import Qt, pyqtSignal diff --git a/python/plugins/processing/gui/PointSelectionPanel.py b/python/plugins/processing/gui/PointSelectionPanel.py index 70e07cd127..d9d760406f 100644 --- a/python/plugins/processing/gui/PointSelectionPanel.py +++ b/python/plugins/processing/gui/PointSelectionPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/PostgisTableSelector.py b/python/plugins/processing/gui/PostgisTableSelector.py index 252032f58b..3153f99af8 100644 --- a/python/plugins/processing/gui/PostgisTableSelector.py +++ b/python/plugins/processing/gui/PostgisTableSelector.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/gui/Postprocessing.py b/python/plugins/processing/gui/Postprocessing.py index 8ffbac024b..41a996b448 100644 --- a/python/plugins/processing/gui/Postprocessing.py +++ b/python/plugins/processing/gui/Postprocessing.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import traceback diff --git a/python/plugins/processing/gui/ProcessingToolbox.py b/python/plugins/processing/gui/ProcessingToolbox.py index bb9273999d..51b4d765f7 100644 --- a/python/plugins/processing/gui/ProcessingToolbox.py +++ b/python/plugins/processing/gui/ProcessingToolbox.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import operator import os diff --git a/python/plugins/processing/gui/RangePanel.py b/python/plugins/processing/gui/RangePanel.py index 47e0be3b28..d6345d7e0a 100644 --- a/python/plugins/processing/gui/RangePanel.py +++ b/python/plugins/processing/gui/RangePanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/RectangleMapTool.py b/python/plugins/processing/gui/RectangleMapTool.py index aee598fe87..6ca5e8a8ed 100644 --- a/python/plugins/processing/gui/RectangleMapTool.py +++ b/python/plugins/processing/gui/RectangleMapTool.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import pyqtSignal from qgis.PyQt.QtGui import QColor diff --git a/python/plugins/processing/gui/RenderingStyleFilePanel.py b/python/plugins/processing/gui/RenderingStyleFilePanel.py index 3b7cd2718d..7d233af620 100644 --- a/python/plugins/processing/gui/RenderingStyleFilePanel.py +++ b/python/plugins/processing/gui/RenderingStyleFilePanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/RenderingStyles.py b/python/plugins/processing/gui/RenderingStyles.py index aee896ae55..d4d2773915 100644 --- a/python/plugins/processing/gui/RenderingStyles.py +++ b/python/plugins/processing/gui/RenderingStyles.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from processing.tools.system import userFolder diff --git a/python/plugins/processing/gui/ResultsDock.py b/python/plugins/processing/gui/ResultsDock.py index bf4050bd5e..a6b0ffb412 100644 --- a/python/plugins/processing/gui/ResultsDock.py +++ b/python/plugins/processing/gui/ResultsDock.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import time diff --git a/python/plugins/processing/gui/TestTools.py b/python/plugins/processing/gui/TestTools.py index 4f8d69c855..fbb58ad415 100755 --- a/python/plugins/processing/gui/TestTools.py +++ b/python/plugins/processing/gui/TestTools.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import posixpath diff --git a/python/plugins/processing/gui/ToolboxAction.py b/python/plugins/processing/gui/ToolboxAction.py index bfd39739ed..6453b8ccd8 100644 --- a/python/plugins/processing/gui/ToolboxAction.py +++ b/python/plugins/processing/gui/ToolboxAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication diff --git a/python/plugins/processing/gui/__init__.py b/python/plugins/processing/gui/__init__.py index 9dc7831e03..931e5d0263 100644 --- a/python/plugins/processing/gui/__init__.py +++ b/python/plugins/processing/gui/__init__.py @@ -21,7 +21,7 @@ __author__ = 'Victor Olaya' __date__ = 'August 2013' __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt import uic import logging diff --git a/python/plugins/processing/gui/enummodelerwidget.py b/python/plugins/processing/gui/enummodelerwidget.py index fb71f70471..2c86cd8ee5 100644 --- a/python/plugins/processing/gui/enummodelerwidget.py +++ b/python/plugins/processing/gui/enummodelerwidget.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/matrixmodelerwidget.py b/python/plugins/processing/gui/matrixmodelerwidget.py index 9fc26676fa..63d0ae960a 100644 --- a/python/plugins/processing/gui/matrixmodelerwidget.py +++ b/python/plugins/processing/gui/matrixmodelerwidget.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import warnings diff --git a/python/plugins/processing/gui/menus.py b/python/plugins/processing/gui/menus.py index bd1be18bdc..4616a3e3ba 100644 --- a/python/plugins/processing/gui/menus.py +++ b/python/plugins/processing/gui/menus.py @@ -21,7 +21,7 @@ __author__ = 'Victor Olaya' __date__ = 'February 2016' __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.PyQt.QtCore import QCoreApplication diff --git a/python/plugins/processing/gui/wrappers.py b/python/plugins/processing/gui/wrappers.py index 82804a0d50..35cfc8fe9a 100755 --- a/python/plugins/processing/gui/wrappers.py +++ b/python/plugins/processing/gui/wrappers.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2016, Arnaud Morvan' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import locale import os diff --git a/python/plugins/processing/modeler/AddModelFromFileAction.py b/python/plugins/processing/modeler/AddModelFromFileAction.py index 0449063deb..4eb0f15843 100644 --- a/python/plugins/processing/modeler/AddModelFromFileAction.py +++ b/python/plugins/processing/modeler/AddModelFromFileAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 201, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import shutil diff --git a/python/plugins/processing/modeler/CreateNewModelAction.py b/python/plugins/processing/modeler/CreateNewModelAction.py index 635400b1ff..b13f2bad83 100644 --- a/python/plugins/processing/modeler/CreateNewModelAction.py +++ b/python/plugins/processing/modeler/CreateNewModelAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/modeler/DeleteModelAction.py b/python/plugins/processing/modeler/DeleteModelAction.py index 58ddc832f9..a2ad16b8e2 100644 --- a/python/plugins/processing/modeler/DeleteModelAction.py +++ b/python/plugins/processing/modeler/DeleteModelAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.core import (QgsApplication, diff --git a/python/plugins/processing/modeler/EditModelAction.py b/python/plugins/processing/modeler/EditModelAction.py index 0cad4c393f..e03338bb02 100644 --- a/python/plugins/processing/modeler/EditModelAction.py +++ b/python/plugins/processing/modeler/EditModelAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication from qgis.core import QgsApplication, QgsProcessingModelAlgorithm diff --git a/python/plugins/processing/modeler/ModelerAlgorithmProvider.py b/python/plugins/processing/modeler/ModelerAlgorithmProvider.py index 7088853810..6772db33f3 100644 --- a/python/plugins/processing/modeler/ModelerAlgorithmProvider.py +++ b/python/plugins/processing/modeler/ModelerAlgorithmProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/modeler/ModelerDialog.py b/python/plugins/processing/modeler/ModelerDialog.py index d07662f59b..7dde8b0fa2 100644 --- a/python/plugins/processing/modeler/ModelerDialog.py +++ b/python/plugins/processing/modeler/ModelerDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import codecs import sys diff --git a/python/plugins/processing/modeler/ModelerGraphicItem.py b/python/plugins/processing/modeler/ModelerGraphicItem.py index f538a939f3..9c257c7fc6 100644 --- a/python/plugins/processing/modeler/ModelerGraphicItem.py +++ b/python/plugins/processing/modeler/ModelerGraphicItem.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import math diff --git a/python/plugins/processing/modeler/ModelerParameterDefinitionDialog.py b/python/plugins/processing/modeler/ModelerParameterDefinitionDialog.py index 6d6eedad31..431deeaf01 100755 --- a/python/plugins/processing/modeler/ModelerParameterDefinitionDialog.py +++ b/python/plugins/processing/modeler/ModelerParameterDefinitionDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import math diff --git a/python/plugins/processing/modeler/ModelerParametersDialog.py b/python/plugins/processing/modeler/ModelerParametersDialog.py index 75abb8bd31..22ce203c8e 100644 --- a/python/plugins/processing/modeler/ModelerParametersDialog.py +++ b/python/plugins/processing/modeler/ModelerParametersDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import webbrowser diff --git a/python/plugins/processing/modeler/ModelerScene.py b/python/plugins/processing/modeler/ModelerScene.py index 7d7ce4468a..058477c413 100644 --- a/python/plugins/processing/modeler/ModelerScene.py +++ b/python/plugins/processing/modeler/ModelerScene.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QPointF, Qt from qgis.PyQt.QtWidgets import QGraphicsItem, QGraphicsScene diff --git a/python/plugins/processing/modeler/ModelerUtils.py b/python/plugins/processing/modeler/ModelerUtils.py index 7dc4d31255..4da2d481b4 100644 --- a/python/plugins/processing/modeler/ModelerUtils.py +++ b/python/plugins/processing/modeler/ModelerUtils.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from processing.tools.system import userFolder, mkdir diff --git a/python/plugins/processing/modeler/MultilineTextPanel.py b/python/plugins/processing/modeler/MultilineTextPanel.py index ae02dfdf64..19a28346c2 100644 --- a/python/plugins/processing/modeler/MultilineTextPanel.py +++ b/python/plugins/processing/modeler/MultilineTextPanel.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtWidgets import QComboBox, QPlainTextEdit, QSizePolicy, QVBoxLayout, QWidget diff --git a/python/plugins/processing/modeler/OpenModelFromFileAction.py b/python/plugins/processing/modeler/OpenModelFromFileAction.py index e92dee898f..05247de443 100644 --- a/python/plugins/processing/modeler/OpenModelFromFileAction.py +++ b/python/plugins/processing/modeler/OpenModelFromFileAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.PyQt.QtWidgets import QFileDialog diff --git a/python/plugins/processing/modeler/ProjectProvider.py b/python/plugins/processing/modeler/ProjectProvider.py index e25b5404b1..8904ba483f 100644 --- a/python/plugins/processing/modeler/ProjectProvider.py +++ b/python/plugins/processing/modeler/ProjectProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (Qgis, QgsApplication, diff --git a/python/plugins/processing/preconfigured/DeletePreconfiguredAlgorithmAction.py b/python/plugins/processing/preconfigured/DeletePreconfiguredAlgorithmAction.py index 3b036bfd87..bfa3075468 100644 --- a/python/plugins/processing/preconfigured/DeletePreconfiguredAlgorithmAction.py +++ b/python/plugins/processing/preconfigured/DeletePreconfiguredAlgorithmAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.PyQt.QtCore import QCoreApplication diff --git a/python/plugins/processing/preconfigured/NewPreconfiguredAlgorithmAction.py b/python/plugins/processing/preconfigured/NewPreconfiguredAlgorithmAction.py index 6b8857fa94..d4d67bf531 100644 --- a/python/plugins/processing/preconfigured/NewPreconfiguredAlgorithmAction.py +++ b/python/plugins/processing/preconfigured/NewPreconfiguredAlgorithmAction.py @@ -24,7 +24,7 @@ __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication from processing.core.GeoAlgorithm import GeoAlgorithm diff --git a/python/plugins/processing/preconfigured/PreconfiguredAlgorithm.py b/python/plugins/processing/preconfigured/PreconfiguredAlgorithm.py index 9144297fca..3a7899ca8e 100644 --- a/python/plugins/processing/preconfigured/PreconfiguredAlgorithm.py +++ b/python/plugins/processing/preconfigured/PreconfiguredAlgorithm.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/preconfigured/PreconfiguredAlgorithmDialog.py b/python/plugins/processing/preconfigured/PreconfiguredAlgorithmDialog.py index a7053c8492..ea65e3a04d 100644 --- a/python/plugins/processing/preconfigured/PreconfiguredAlgorithmDialog.py +++ b/python/plugins/processing/preconfigured/PreconfiguredAlgorithmDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/preconfigured/PreconfiguredAlgorithmProvider.py b/python/plugins/processing/preconfigured/PreconfiguredAlgorithmProvider.py index 4c3717798e..8aee1ec72e 100644 --- a/python/plugins/processing/preconfigured/PreconfiguredAlgorithmProvider.py +++ b/python/plugins/processing/preconfigured/PreconfiguredAlgorithmProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/script/AddScriptFromFileAction.py b/python/plugins/processing/script/AddScriptFromFileAction.py index 1e7eb0a505..576d66378e 100644 --- a/python/plugins/processing/script/AddScriptFromFileAction.py +++ b/python/plugins/processing/script/AddScriptFromFileAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 201, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import shutil diff --git a/python/plugins/processing/script/AddScriptFromTemplateAction.py b/python/plugins/processing/script/AddScriptFromTemplateAction.py index 3d99b23fd2..75bd986a2e 100644 --- a/python/plugins/processing/script/AddScriptFromTemplateAction.py +++ b/python/plugins/processing/script/AddScriptFromTemplateAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Matteo Ghetta' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import codecs diff --git a/python/plugins/processing/script/CreateNewScriptAction.py b/python/plugins/processing/script/CreateNewScriptAction.py index 0b3be37941..20b8e56d68 100644 --- a/python/plugins/processing/script/CreateNewScriptAction.py +++ b/python/plugins/processing/script/CreateNewScriptAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/script/DeleteScriptAction.py b/python/plugins/processing/script/DeleteScriptAction.py index 4c5bc255d3..0b4838dfc7 100644 --- a/python/plugins/processing/script/DeleteScriptAction.py +++ b/python/plugins/processing/script/DeleteScriptAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/script/EditScriptAction.py b/python/plugins/processing/script/EditScriptAction.py index 0ce599149a..f7792e918c 100644 --- a/python/plugins/processing/script/EditScriptAction.py +++ b/python/plugins/processing/script/EditScriptAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import inspect diff --git a/python/plugins/processing/script/OpenScriptFromFileAction.py b/python/plugins/processing/script/OpenScriptFromFileAction.py index d4a3a24967..4fce0bdeb2 100644 --- a/python/plugins/processing/script/OpenScriptFromFileAction.py +++ b/python/plugins/processing/script/OpenScriptFromFileAction.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.PyQt.QtWidgets import QFileDialog diff --git a/python/plugins/processing/script/ScriptAlgorithmProvider.py b/python/plugins/processing/script/ScriptAlgorithmProvider.py index 3d13d22565..c803c8f592 100644 --- a/python/plugins/processing/script/ScriptAlgorithmProvider.py +++ b/python/plugins/processing/script/ScriptAlgorithmProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/script/ScriptEdit.py b/python/plugins/processing/script/ScriptEdit.py index dcc5a5feda..b69d8df00e 100644 --- a/python/plugins/processing/script/ScriptEdit.py +++ b/python/plugins/processing/script/ScriptEdit.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/python/plugins/processing/script/ScriptEditorDialog.py b/python/plugins/processing/script/ScriptEditorDialog.py index a50485cd6f..a34c9013ce 100644 --- a/python/plugins/processing/script/ScriptEditorDialog.py +++ b/python/plugins/processing/script/ScriptEditorDialog.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import codecs diff --git a/python/plugins/processing/script/ScriptUtils.py b/python/plugins/processing/script/ScriptUtils.py index fc234e975a..a86d8555b9 100644 --- a/python/plugins/processing/script/ScriptUtils.py +++ b/python/plugins/processing/script/ScriptUtils.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import inspect diff --git a/python/plugins/processing/tests/CheckValidityAlgorithm.py b/python/plugins/processing/tests/CheckValidityAlgorithm.py index 86d82b6307..b616479719 100644 --- a/python/plugins/processing/tests/CheckValidityAlgorithm.py +++ b/python/plugins/processing/tests/CheckValidityAlgorithm.py @@ -10,7 +10,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '2018-09' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication, QVariant from qgis.core import ( diff --git a/python/plugins/processing/tests/GuiTest.py b/python/plugins/processing/tests/GuiTest.py index 8cdb9fee11..0a46ea86d1 100644 --- a/python/plugins/processing/tests/GuiTest.py +++ b/python/plugins/processing/tests/GuiTest.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2017, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.testing import start_app, unittest from qgis.core import (QgsApplication, diff --git a/python/plugins/processing/tests/ModelerTest.py b/python/plugins/processing/tests/ModelerTest.py index 118cb6025c..5a0221fbad 100755 --- a/python/plugins/processing/tests/ModelerTest.py +++ b/python/plugins/processing/tests/ModelerTest.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.testing import start_app, unittest diff --git a/python/plugins/processing/tests/ProjectProvider.py b/python/plugins/processing/tests/ProjectProvider.py index 2c93a8bc5a..77c5b7e440 100755 --- a/python/plugins/processing/tests/ProjectProvider.py +++ b/python/plugins/processing/tests/ProjectProvider.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.testing import start_app, unittest from qgis.PyQt.QtCore import QTemporaryFile diff --git a/python/plugins/processing/tests/TestData.py b/python/plugins/processing/tests/TestData.py index 38e323637c..12b45171cd 100644 --- a/python/plugins/processing/tests/TestData.py +++ b/python/plugins/processing/tests/TestData.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os.path diff --git a/python/plugins/processing/tests/ToolsTest.py b/python/plugins/processing/tests/ToolsTest.py index d613f2cbfc..43a8dd69b7 100644 --- a/python/plugins/processing/tests/ToolsTest.py +++ b/python/plugins/processing/tests/ToolsTest.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import shutil diff --git a/python/plugins/processing/tests/testdata/grass7_algorithms_raster_tests.yaml b/python/plugins/processing/tests/testdata/grass7_algorithms_raster_tests.yaml index b14a6e4ae3..66b12ef9d2 100644 --- a/python/plugins/processing/tests/testdata/grass7_algorithms_raster_tests.yaml +++ b/python/plugins/processing/tests/testdata/grass7_algorithms_raster_tests.yaml @@ -461,41 +461,87 @@ tests: hash: 95e064f05759606bc60f1dfa88931f545c066629c1f07919156ac03b type: rasterhash - - algorithm: grass7:r.sun - name: GRASS7 r.sun + - algorithm: grass7:r.sun.insoltime + name: GRASS7 r.sun (insoltime) params: -m: false -p: false + GRASS_RASTER_FORMAT_META: '' + GRASS_RASTER_FORMAT_OPT: '' GRASS_REGION_CELLSIZE_PARAMETER: 0.0 - GRASS_REGION_PARAMETER: 344500.0,358400.0,6682800.0,6693700.0 + albedo_value: 0.2 aspect: - name: custom/grass7/float_raster.tif + name: custom/grass7/raster_6class.tif type: raster + aspect_value: 270.0 day: 1 - declination: 0.0 distance_step: 1.0 elevation: - name: custom/grass7/raster_6class.tif + name: custom/grass7/float_raster.tif type: raster + npartitions: 1 slope: name: custom/grass7/float_raster.tif type: raster + slope_value: 0.0 step: 0.5 results: beam_rad: - hash: c43a64c35cd5999888b1dc7099249a54f37df8658cbe9c30b92627e5 + hash: 4428e6601576375c17cb0d37f74e3317db218b9660d3e9483f444279 type: rasterhash diff_rad: - hash: ecaa83578ab6eaf24a48f2fc265e8f1deff743c145af9c85cd39bceb + hash: a05bb9e71f3a539b74a07235b5873738d3049960c8b2b5fd37cc7826 type: rasterhash glob_rad: - hash: 3917bc5633ce2225c864055d4b3c952b87461cbe48093b8fd9738215 + hash: 511d713ab666e171167a9a137ea246eefc90042e149ded73281362fa type: rasterhash insol_time: - hash: 64851f59edafe67d007da78f33b7491b949d5be3eca83ef513e2b11f + hash: 45954c661088e55d7740f7b9b89e21217a34d25868f751e8d0a67d31 + type: rasterhash + refl_rad: + hash: 278011afa98bcdfd87a2c476bc4abac96266a2a13ac9d20696733941 + type: rasterhash + + - algorithm: grass7:r.sun.incidout + name: GRASS7 r.sun (incidout) + params: + -m: false + -p: false + GRASS_RASTER_FORMAT_META: '' + GRASS_RASTER_FORMAT_OPT: '' + GRASS_REGION_CELLSIZE_PARAMETER: 0.0 + albedo_value: 0.2 + aspect: + name: custom/grass7/raster_6class.tif + type: raster + aspect_value: 270.0 + day: 1 + distance_step: 1.0 + elevation: + name: custom/grass7/float_raster.tif + type: raster + npartitions: 1 + slope: + name: custom/grass7/float_raster.tif + type: raster + slope_value: 0.0 + step: 0.5 + time: 8.0 + results: + beam_rad: + hash: b2459789ef2f04adc13a02d016f314594eaaf6f89e42fdf35d06e46b + type: rasterhash + diff_rad: + hash: 7dbe38013812f372389f1ce1b60eae6755e005326e2373472ec65443 + type: rasterhash + glob_rad: + hash: 41e68104b039b794efb580a52c79e61af84261f9fad8b2aaedce0316 + type: rasterhash + incidout: + hash: 5cd5e5a410da7593d2e0d3ad3cb01818cebddfb73d0439fcf8b30d05 type: rasterhash refl_rad: - hash: cd2002486c5117db9c493e365ff6983faf1ea92b1bbea87569d3ebdd + hash: 5ac2d870ae11d726a16809cda2915b248f0180f3eedc0c7a4c8d8de5 type: rasterhash # - algorithm: grass7:r.stats.quantile.out diff --git a/python/plugins/processing/tools/__init__.py b/python/plugins/processing/tools/__init__.py index bfd2e56799..d398d56b00 100644 --- a/python/plugins/processing/tools/__init__.py +++ b/python/plugins/processing/tools/__init__.py @@ -23,4 +23,4 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' diff --git a/python/plugins/processing/tools/dataobjects.py b/python/plugins/processing/tools/dataobjects.py index ab60665c66..dd12c62f6d 100644 --- a/python/plugins/processing/tools/dataobjects.py +++ b/python/plugins/processing/tools/dataobjects.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re diff --git a/python/plugins/processing/tools/general.py b/python/plugins/processing/tools/general.py index 0347250b34..49df8f08ed 100644 --- a/python/plugins/processing/tools/general.py +++ b/python/plugins/processing/tools/general.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import configparser diff --git a/python/plugins/processing/tools/postgis.py b/python/plugins/processing/tools/postgis.py index 8dccc409a9..e5cda18019 100644 --- a/python/plugins/processing/tools/postgis.py +++ b/python/plugins/processing/tools/postgis.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Martin Dobias' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import psycopg2 import psycopg2.extensions # For isolation levels diff --git a/python/plugins/processing/tools/raster.py b/python/plugins/processing/tools/raster.py index 449697441d..34d853722d 100644 --- a/python/plugins/processing/tools/raster.py +++ b/python/plugins/processing/tools/raster.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya and Alexander Bruy' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import struct diff --git a/python/plugins/processing/tools/spatialite.py b/python/plugins/processing/tools/spatialite.py index e143c1c080..c0a40d1df4 100644 --- a/python/plugins/processing/tools/spatialite.py +++ b/python/plugins/processing/tools/spatialite.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2015, René-Luc Dhont' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.utils import spatialite_connect import sqlite3 as sqlite diff --git a/python/plugins/processing/tools/system.py b/python/plugins/processing/tools/system.py index ed0c76c724..70a80545d2 100644 --- a/python/plugins/processing/tools/system.py +++ b/python/plugins/processing/tools/system.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2012, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import time diff --git a/python/plugins/processing/tools/vector.py b/python/plugins/processing/tools/vector.py index 5dfb6b7afa..bdf18d1669 100644 --- a/python/plugins/processing/tools/vector.py +++ b/python/plugins/processing/tools/vector.py @@ -23,7 +23,7 @@ __copyright__ = '(C) 2013, Victor Olaya' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (NULL, QgsFeatureRequest) diff --git a/python/pyplugin_installer/__init__.py b/python/pyplugin_installer/__init__.py index d2c18e4b47..8805823ed4 100644 --- a/python/pyplugin_installer/__init__.py +++ b/python/pyplugin_installer/__init__.py @@ -26,7 +26,7 @@ __author__ = 'Borys Jurgiel' __date__ = 'May 2013' __copyright__ = '(C) 2013, Borys Jurgiel' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # import functions for easier access diff --git a/python/server/auto_generated/qgsstorebadlayerinfo.sip.in b/python/server/auto_generated/qgsstorebadlayerinfo.sip.in new file mode 100644 index 0000000000..84e9826dbb --- /dev/null +++ b/python/server/auto_generated/qgsstorebadlayerinfo.sip.in @@ -0,0 +1,51 @@ +/************************************************************************ + * This file has been generated automatically from * + * * + * src/server/qgsstorebadlayerinfo.h * + * * + * Do not edit manually ! Edit header and run scripts/sipify.pl again * + ************************************************************************/ + + + +class QgsStoreBadLayerInfo: QgsProjectBadLayerHandler +{ +%Docstring +Stores layer ids of bad layers + +.. versionadded:: 3.4.8 +%End + +%TypeHeaderCode +#include "qgsstorebadlayerinfo.h" +%End + public: + + QgsStoreBadLayerInfo(); +%Docstring +Default constructor +%End + + void handleBadLayers( const QList<QDomNode> &layers ); +%Docstring +handleBadLayers + +:param layers: layer nodes +%End + + QStringList badLayers() const; +%Docstring +badLayers + +:return: ids of bad layers +%End + +}; + +/************************************************************************ + * This file has been generated automatically from * + * * + * src/server/qgsstorebadlayerinfo.h * + * * + * Do not edit manually ! Edit header and run scripts/sipify.pl again * + ************************************************************************/ diff --git a/python/server/server_auto.sip b/python/server/server_auto.sip index 05c9c613b1..899c55b5be 100644 --- a/python/server/server_auto.sip +++ b/python/server/server_auto.sip @@ -22,6 +22,7 @@ %Include auto_generated/qgsserviceregistry.sip %Include auto_generated/qgsfeaturefilterprovidergroup.sip %Include auto_generated/qgsfeaturefilter.sip +%Include auto_generated/qgsstorebadlayerinfo.sip %If ( HAVE_SERVER_PYTHON_PLUGINS ) %Include auto_generated/qgsserverfilter.sip %End diff --git a/python/user.py b/python/user.py index dc7e332afa..1b5997afd5 100644 --- a/python/user.py +++ b/python/user.py @@ -21,7 +21,7 @@ __author__ = 'Nathan Woodrow' __date__ = 'January 2015' __copyright__ = '(C) 2015, Nathan Woodrow' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import sys diff --git a/python/utils.py b/python/utils.py index 2d32b79c93..9af3e9e885 100644 --- a/python/utils.py +++ b/python/utils.py @@ -21,7 +21,7 @@ __author__ = 'Martin Dobias' __date__ = 'November 2009' __copyright__ = '(C) 2009, Martin Dobias' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' """ QGIS utilities module diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index f1e755c598..00d0ff076d 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -5,6 +5,12 @@ INSTALL(FILES srs.db customization.xml 2to3migration.txt qgis_global_settings.ini + compdcs.csv + datum_shift.csv + gcs.csv + geoccs.csv + pcs.csv + vertcs.csv DESTINATION ${QGIS_DATA_DIR}/resources) INSTALL(DIRECTORY cpt-city-qgis-min DESTINATION ${QGIS_DATA_DIR}/resources) INSTALL(DIRECTORY themes DESTINATION ${QGIS_DATA_DIR}/resources) diff --git a/resources/compdcs.csv b/resources/compdcs.csv new file mode 100644 index 0000000000..7681578480 --- /dev/null +++ b/resources/compdcs.csv @@ -0,0 +1,159 @@ +"COORD_REF_SYS_CODE","COORD_REF_SYS_NAME","CMPD_HORIZCRS_CODE","CMPD_VERTCRS_CODE","SHOW_CRS","DEPRECATED" +3901,"KKJ / Finland Uniform Coordinate System + N60 height",2393,5717,1,0 +3902,"ETRS89 / TM35FIN(N,E) + N60 height",5048,5717,1,0 +3903,"ETRS89 / TM35FIN(N,E) + N2000 height",5048,3900,1,0 +4097,"ETRS89 / DKTM1 + DVR90 height",4093,5799,1,0 +4098,"ETRS89 / DKTM2 + DVR90 height",4094,5799,1,0 +4099,"ETRS89 / DKTM3 + DVR90 height",4095,5799,1,0 +4100,"ETRS89 / DKTM4 + DVR90 height",4096,5799,1,0 +5318,"ETRS89 / Faroe TM + FVR09 height",5316,5317,1,0 +5498,"NAD83 + NAVD88 height",4269,5703,1,0 +5499,"NAD83(HARN) + NAVD88 height",4152,5703,1,0 +5500,"NAD83(NSRS2007) + NAVD88 height",4759,5703,1,0 +5554,"ETRS89 / UTM zone 31N + DHHN92 height",25831,5783,1,0 +5555,"ETRS89 / UTM zone 32N + DHHN92 height",25832,5783,1,0 +5556,"ETRS89 / UTM zone 33N + DHHN92 height",25833,5783,1,0 +5598,"FEH2010 / Fehmarnbelt TM + FCSVR10 height",5596,5597,1,0 +5628,"SWEREF99 + RH2000 height",4619,5613,1,0 +5698,"RGF93 / Lambert-93 + NGF-IGN69 height",2154,5720,1,0 +5699,"RGF93 / Lambert-93 + NGF-IGN78 height",2154,5721,1,0 +5707,"NTF (Paris) / Lambert zone I + NGF-IGN69 height",27571,5720,1,0 +5708,"NTF (Paris) / Lambert zone IV + NGF-IGN78 height",27574,5721,1,0 +5832,"DB_REF / 3-degree Gauss-Kruger zone 2 (E-N) + DHHN92 height",5682,5783,1,0 +5833,"DB_REF / 3-degree Gauss-Kruger zone 3 (E-N) + DHHN92 height",5683,5783,1,0 +5834,"DB_REF / 3-degree Gauss-Kruger zone 4 (E-N) + DHHN92 height",5684,5783,1,0 +5835,"DB_REF / 3-degree Gauss-Kruger zone 5 (E-N) + DHHN92 height",5685,5783,1,0 +5845,"SWEREF99 TM + RH2000 height",3006,5613,1,0 +5846,"SWEREF99 12 00 + RH2000 height",3007,5613,1,0 +5847,"SWEREF99 13 30 + RH2000 height",3008,5613,1,0 +5848,"SWEREF99 15 00 + RH2000 height",3009,5613,1,0 +5849,"SWEREF99 16 30 + RH2000 height",3010,5613,1,0 +5850,"SWEREF99 18 00 + RH2000 height",3011,5613,1,0 +5851,"SWEREF99 14 15 + RH2000 height",3012,5613,1,0 +5852,"SWEREF99 15 45 + RH2000 height",3013,5613,1,0 +5853,"SWEREF99 17 15 + RH2000 height",3014,5613,1,0 +5854,"SWEREF99 18 45 + RH2000 height",3015,5613,1,0 +5855,"SWEREF99 20 15 + RH2000 height",3016,5613,1,0 +5856,"SWEREF99 21 45 + RH2000 height",3017,5613,1,0 +5857,"SWEREF99 23 15 + RH2000 height",3018,5613,1,0 +5942,"ETRS89 + NN2000 height",4258,5941,1,0 +5945,"ETRS89 / NTM zone 5 + NN2000 height",5105,5941,1,0 +5946,"ETRS89 / NTM zone 6 + NN2000 height",5106,5941,1,0 +5947,"ETRS89 / NTM zone 7 + NN2000 height",5107,5941,1,0 +5948,"ETRS89 / NTM zone 8 + NN2000 height",5108,5941,1,0 +5949,"ETRS89 / NTM zone 9 + NN2000 height",5109,5941,1,0 +5950,"ETRS89 / NTM zone 10 + NN2000 height",5110,5941,1,0 +5951,"ETRS89 / NTM zone 11 + NN2000 height",5111,5941,1,0 +5952,"ETRS89 / NTM zone 12 + NN2000 height",5112,5941,1,0 +5953,"ETRS89 / NTM zone 13 + NN2000 height",5113,5941,1,0 +5954,"ETRS89 / NTM zone 14 + NN2000 height",5114,5941,1,0 +5955,"ETRS89 / NTM zone 15 + NN2000 height",5115,5941,1,0 +5956,"ETRS89 / NTM zone 16 + NN2000 height",5116,5941,1,0 +5957,"ETRS89 / NTM zone 17 + NN2000 height",5117,5941,1,0 +5958,"ETRS89 / NTM zone 18 + NN2000 height",5118,5941,1,0 +5959,"ETRS89 / NTM zone 19 + NN2000 height",5119,5941,1,0 +5960,"ETRS89 / NTM zone 20 + NN2000 height",5120,5941,1,0 +5961,"ETRS89 / NTM zone 21 + NN2000 height",5121,5941,1,0 +5962,"ETRS89 / NTM zone 22 + NN2000 height",5122,5941,1,0 +5963,"ETRS89 / NTM zone 23 + NN2000 height",5123,5941,1,0 +5964,"ETRS89 / NTM zone 24 + NN2000 height",5124,5941,1,0 +5965,"ETRS89 / NTM zone 25 + NN2000 height",5125,5941,1,0 +5966,"ETRS89 / NTM zone 26 + NN2000 height",5126,5941,1,0 +5967,"ETRS89 / NTM zone 27 + NN2000 height",5127,5941,1,0 +5968,"ETRS89 / NTM zone 28 + NN2000 height",5128,5941,1,0 +5969,"ETRS89 / NTM zone 29 + NN2000 height",5129,5941,1,0 +5970,"ETRS89 / NTM zone 30 + NN2000 height",5130,5941,1,0 +5971,"ETRS89 / UTM zone 31 + NN2000 height",25831,5941,1,0 +5972,"ETRS89 / UTM zone 32 + NN2000 height",25832,5941,1,0 +5973,"ETRS89 / UTM zone 33 + NN2000 height",25833,5941,1,0 +5974,"ETRS89 / UTM zone 34 + NN2000 height",25834,5941,1,0 +5975,"ETRS89 / UTM zone 35 + NN2000 height",25835,5941,1,0 +5976,"ETRS89 / UTM zone 36 + NN2000 height",25836,5941,1,0 +6144,"ETRS89 + NN54 height",4258,5776,1,0 +6145,"ETRS89 / NTM zone 5 + NN54 height",5105,5776,1,0 +6146,"ETRS89 / NTM zone 6 + NN54 height",5106,5776,1,0 +6147,"ETRS89 / NTM zone 7 + NN54 height",5107,5776,1,0 +6148,"ETRS89 / NTM zone 8 + NN54 height",5108,5776,1,0 +6149,"ETRS89 / NTM zone 9 + NN54 height",5109,5776,1,0 +6150,"ETRS89 / NTM zone 10 + NN54 height",5110,5776,1,0 +6151,"ETRS89 / NTM zone 11 + NN54 height",5111,5776,1,0 +6152,"ETRS89 / NTM zone 12 + NN54 height",5112,5776,1,0 +6153,"ETRS89 / NTM zone 13 + NN54 height",5113,5776,1,0 +6154,"ETRS89 / NTM zone 14 + NN54 height",5114,5776,1,0 +6155,"ETRS89 / NTM zone 15 + NN54 height",5115,5776,1,0 +6156,"ETRS89 / NTM zone 16 + NN54 height",5116,5776,1,0 +6157,"ETRS89 / NTM zone 17 + NN54 height",5117,5776,1,0 +6158,"ETRS89 / NTM zone 18 + NN54 height",5118,5776,1,0 +6159,"ETRS89 / NTM zone 19 + NN54 height",5119,5776,1,0 +6160,"ETRS89 / NTM zone 20 + NN54 height",5120,5776,1,0 +6161,"ETRS89 / NTM zone 21 + NN54 height",5121,5776,1,0 +6162,"ETRS89 / NTM zone 22 + NN54 height",5122,5776,1,0 +6163,"ETRS89 / NTM zone 23 + NN54 height",5123,5776,1,0 +6164,"ETRS89 / NTM zone 24 + NN54 height",5124,5776,1,0 +6165,"ETRS89 / NTM zone 25 + NN54 height",5125,5776,1,0 +6166,"ETRS89 / NTM zone 26 + NN54 height",5126,5776,1,0 +6167,"ETRS89 / NTM zone 27 + NN54 height",5127,5776,1,0 +6168,"ETRS89 / NTM zone 28 + NN54 height",5128,5776,1,0 +6169,"ETRS89 / NTM zone 29 + NN54 height",5129,5776,1,0 +6170,"ETRS89 / NTM zone 30 + NN54 height",5130,5776,1,0 +6171,"ETRS89 / UTM zone 31 + NN54 height",25831,5776,1,0 +6172,"ETRS89 / UTM zone 32 + NN54 height",25832,5776,1,0 +6173,"ETRS89 / UTM zone 33 + NN54 height",25833,5776,1,0 +6174,"ETRS89 / UTM zone 34 + NN54 height",25834,5776,1,0 +6175,"ETRS89 / UTM zone 35 + NN54 height",25835,5776,1,0 +6176,"ETRS89 / UTM zone 36 + NN54 height",25836,5776,1,0 +6190,"Belge 1972 / Belgian Lambert 72 + Ostend height",31370,5710,1,0 +6349,"NAD83(2011) + NAVD88 height",6318,5703,1,0 +6649,"NAD83(CSRS) + CGVD2013 height",4617,6647,1,0 +6650,"NAD83(CSRS) / UTM zone 7N + CGVD2013 height",3154,6647,1,0 +6651,"NAD83(CSRS) / UTM zone 8N + CGVD2013 height",3155,6647,1,0 +6652,"NAD83(CSRS) / UTM zone 9N + CGVD2013 height",3156,6647,1,0 +6653,"NAD83(CSRS) / UTM zone 10N + CGVD2013 height",3157,6647,1,0 +6654,"NAD83(CSRS) / UTM zone 11N + CGVD2013 height",2955,6647,1,0 +6655,"NAD83(CSRS) / UTM zone 12N + CGVD2013 height",2956,6647,1,0 +6656,"NAD83(CSRS) / UTM zone 13N + CGVD2013 height",2957,6647,1,0 +6657,"NAD83(CSRS) / UTM zone 14N + CGVD2013 height",3158,6647,1,0 +6658,"NAD83(CSRS) / UTM zone 15N + CGVD2013 height",3159,6647,1,0 +6659,"NAD83(CSRS) / UTM zone 16N + CGVD2013 height",3160,6647,1,0 +6660,"NAD83(CSRS) / UTM zone 17N + CGVD2013 height",2958,6647,1,0 +6661,"NAD83(CSRS) / UTM zone 18N + CGVD2013 height",2959,6647,1,0 +6662,"NAD83(CSRS) / UTM zone 19N + CGVD2013 height",2960,6647,1,0 +6663,"NAD83(CSRS) / UTM zone 20N + CGVD2013 height",2961,6647,1,0 +6664,"NAD83(CSRS) / UTM zone 21N + CGVD2013 height",2962,6647,1,0 +6665,"NAD83(CSRS) / UTM zone 22N + CGVD2013 height",3761,6647,1,0 +6696,"JGD2000 + JGD2000 (vertical) height",4612,6694,1,0 +6697,"JGD2011 + JGD2011 (vertical) height",6668,6695,1,0 +6700,"Tokyo + JSLD72 height",4301,6693,1,0 +6871,"WGS 84 / Pseudo-Mercator + EGM2008 geoid height",3857,3855,1,1 +6893,"WGS 84 / World Mercator + EGM2008 height",3395,3855,1,0 +6917,"SVY21 + SHD height",4757,6916,1,0 +6927,"SVY21 / Singapore TM + SHD height",3414,6916,1,0 +7400,"NTF (Paris) + NGF IGN69 height",4807,5720,1,0 +7401,"NTF (Paris) / France II + NGF Lallemand",27582,5719,1,1 +7402,"NTF (Paris) / France II + NGF IGN69",27582,5720,1,1 +7403,"NTF (Paris) / France III + NGF IGN69",27583,5720,1,1 +7404,"RT90 + RH70 height",4124,5718,1,0 +7405,"OSGB 1936 / British National Grid + ODN height",27700,5701,1,0 +7406,"NAD27 + NGVD29 height",4267,5702,1,0 +7407,"NAD27 / Texas North + NGVD29 height",32037,5702,1,0 +7408,"RD/NAP",4289,5709,1,1 +7409,"ETRS89 + EVRF2000 height",4258,5730,1,0 +7410,PSHD93,4134,5724,1,0 +7411,"NTF (Paris) / Lambert zone II + NGF Lallemand height",27572,5719,1,0 +7412,"NTF (Paris) / Lambert zone II + NGF IGN69",27572,5719,1,1 +7413,"NTF (Paris) / Lambert zone III + NGF IGN69",27573,5719,1,1 +7414,"Tokyo + JSLD69 height",4301,5723,1,0 +7415,"Amersfoort / RD New + NAP height",28992,5709,1,0 +7416,"ETRS89 / UTM zone 32N + DVR90 height",25832,5799,1,0 +7417,"ETRS89 / UTM zone 33N + DVR90 height",25833,5799,1,0 +7418,"ETRS89 / Kp2000 Jutland + DVR90 height",2196,5799,1,0 +7419,"ETRS89 / Kp2000 Zealand + DVR90 height",2197,5799,1,0 +7420,"ETRS89 / Kp2000 Bornholm + DVR90 height",2198,5799,1,0 +7421,"NTF (Paris) / Lambert zone II + NGF-IGN69 height",27572,5720,1,0 +7422,"NTF (Paris) / Lambert zone III + NGF-IGN69 height",27573,5720,1,0 +7423,"ETRS89 + EVRF2007 height",4258,5621,1,0 +7954,"Astro DOS 71 / UTM zone 30S + Jamestown 1971 height",7878,7888,1,0 +7955,"St. Helena Tritan / UTM zone 30S + Tritan 2011 height",7883,7889,1,0 +7956,"SHMG2015 + SHVD2015 height",7887,7890,1,0 +8349,"GR96 + GVR2000 height",4747,8266,1,0 +8350,"GR96 + GVR2016 height",4747,8267,1,0 diff --git a/resources/datum_shift.csv b/resources/datum_shift.csv new file mode 100644 index 0000000000..95486fee14 --- /dev/null +++ b/resources/datum_shift.csv @@ -0,0 +1,837 @@ +"SEQ_KEY","COORD_OP_CODE","SOURCE_CRS_CODE","TARGET_CRS_CODE","REMARKS","COORD_OP_SCOPE","AREA_OF_USE_CODE","AREA_SOUTH_BOUND_LAT","AREA_NORTH_BOUND_LAT","AREA_WEST_BOUND_LON","AREA_EAST_BOUND_LON","SHOW_OPERATION","DEPRECATED","COORD_OP_METHOD_CODE","DX","DY","DZ","RX","RY","RZ","DS","PREFERRED" +1,1825,4611,4326,Published 1st March 2002.,Accuracy to 1m level.,1118,22.13,22.58,113.76,114.51,1,0,9606,-162.619,-276.959,-161.764,0.067753,-2.243649,-1.158827,-1.094246,1 +2,1826,4612,4326,,"Approximation at the +/- 1m level.",1129,17.09,46.05,122.38,157.65,1,0,9603,0,0,0,,,,,1 +3,1838,4613,4326,Datum shift derived through ITRF93.,Oil exploration.,1328,-1.24,0,116.72,117.99,1,0,9603,-404.78,685.68,45.47,,,,,0 +4,1897,4613,4326,Accuracy estimate not available.,For military purposes.,1360,-4.24,4.29,114.55,119.06,1,0,9603,-403,684,41,,,,,1 +5,1898,4613,4326,,Oil exploration.,1359,-4.24,0,114.55,117.99,1,0,9603,-387.06,636.53,46.29,,,,,0 +6,1899,4613,4326,,Oil exploration.,2770,-0.07,4.29,116.96,119.06,1,0,9603,-403.4,681.12,46.56,,,,,0 +7,1840,4614,4326,"Transformation defines QND95. May be approximated to 1m throughout Qatar by geocentric translation transformation with dX=-127.78098m, dY=-283.37477m, dZ=+21.24081m.",Parameter values are defined and therefore exact.,1346,24.55,26.2,50.69,51.68,1,0,9606,-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065,1 +8,1888,4615,4326,Derived at 2 stations.,For military purposes only. Accuracy 25m in each axis.,1314,32.35,33.15,-17.31,-16.23,1,0,9603,-499,-249,314,,,,,1 +9,1889,4616,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,2779,29.98,30.21,-16.11,-15.79,1,1,9603,-289,-124,60,,,,,0 +10,1965,4616,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,2779,29.98,30.21,-16.11,-15.79,1,0,9603,-289,-124,60,,,,,1 +11,1842,4617,4326,"For many purposes NAD83(CSRS) can be considered to be coincident with WGS 84.","Approximation at the +/- 1m level assuming that NAD83(CSRS) is equivalent to WGS 84.",1061,40.04,86.46,-141.01,-47.74,1,0,9603,0,0,0,,,,,1 +12,1946,4617,4326,"Approximation derived from tfm code 6864 ignoring time-dependent parameters and assuming ITRF96(1997.0) and WGS 84 can be considered the same within the accuracy of the transformation.",Geodesy.,1061,40.04,86.46,-141.01,-47.74,1,0,9607,-0.991,1.9072,0.5129,-0.02578991,-0.00965010,-0.0116599,0,0 +13,1864,4618,4326,Derived at 84 stations.,"For military purposes only. Accuracy 15m, 6m and 9m in X, Y and Z axes.",4016,-45,12.52,-81.41,-34.74,1,0,9603,-57,1,-41,,,,,0 +14,1865,4618,4326,"Derived at 10 stations. Note: SAD69 not adopted in Argentina: see Campo Inchauspe (CRS code 4221).",For military purposes only. Accuracy 5m in each axis.,3215,-52.43,-21.78,-73.59,-53.65,1,0,9603,-62,-1,-37,,,,,0 +15,1866,4618,4326,"Derived at 4 stations. Note: SAD69 not adopted in Bolivia: see PSAD56 (CRS code 4248).",For military purposes. Accuracy 15m in each axis.,1049,-22.91,-9.67,-69.66,-57.52,1,0,9603,-61,2,-48,,,,,0 +16,1867,4618,4326,Derived at 22 stations.,"For military purposes only. Accuracy 3m, 5m and 5m in X, Y and Z axes.",3887,-33.78,4.43,-60.58,-34.74,1,0,9603,-60,-2,-41,,,,,0 +17,1868,4618,4326,"Derived at 9 stations. Note: SAD69 not adopted in Chile north of 43°30'S. Replaced by SAD69 to WGS 84 (17) to (19) (codes 6974, 6975 and 6976).","For military purposes only. Accuracy 15m, 8m and 11m in X, Y and Z axes.",3227,-45,-17.5,-75.22,-67,1,0,9603,-75,-1,-44,,,,,0 +18,1869,4618,4326,"Derived at 7 stations. Note: SAD69 not adopted in Colombia: see Bogota 1975 (CRS code 4218).","For military purposes only. Accuracy 6m, 6m and 5m in X, Y and Z axes.",3229,-4.23,12.52,-79.1,-66.87,1,0,9603,-44,6,-36,,,,,0 +19,1870,4618,4326,"Derived at 11 stations. Note: SAD69 not adopted in Ecuador: see PSAD56 (CRS code 4248).",For military purposes. Accuracy 3m in each axis.,3241,-5.01,1.45,-81.03,-75.21,1,0,9603,-48,3,-44,,,,,0 +20,1871,4618,4326,"Derived at 1 station. Note: SAD69 not adopted in Ecuador.",For military purposes. Accuracy 25m in each axis.,2356,-1.41,0.18,-91.72,-89.19,1,0,9603,-47,26,-42,,,,,0 +21,1872,4618,4326,"Derived at 5 stations. Note: SAD69 not adopted in Guyana.","For military purposes only. Accuracy 9m, 5m and 5m in X, Y and Z axes.",3259,1.18,8.58,-61.39,-56.47,1,0,9603,-53,3,-47,,,,,0 +22,1873,4618,4326,"Derived at 4 stations. Note: SAD69 not adopted in Paraguay.",For military purposes. Accuracy 15m in each axis.,1188,-27.59,-19.29,-62.65,-54.24,1,0,9603,-61,2,-33,,,,,0 +23,1874,4618,4326,"Derived at 6 stations. Note: SAD69 not adopted in Peru: see PSAD56 (CRS code 4248).",For military purposes. Accuracy 5m in each axis.,3292,-18.35,-0.03,-81.41,-68.67,1,0,9603,-58,0,-44,,,,,0 +24,1875,4618,4326,"Derived at 1 station. Note: SAD69 not adopted in Trinidad and Tobago.",For military purposes only. Accuracy 25m in each axis.,3143,9.99,10.9,-61.98,-60.85,1,0,9603,-45,12,-33,,,,,0 +25,1876,4618,4326,"Derived at 5 stations. Note: SAD69 not adopted in Venezuela: see PSAD56 (CRS code 4248).","For military purposes only. Accuracy 3m, 6m and 3m in X, Y and Z axes.",3327,0.64,12.25,-73.38,-59.8,1,0,9603,-45,8,-33,,,,,0 +26,1877,4618,4326,"Derived by Brazilian Institute of Geography and Statistics (IBGE) in 1989 at Chua origin point. In use by Shell throughout Brazil. For use by Petrobras and ANP, replaced by tfm code 5882 from 1994.",Medium and small scale mapping. Valid for transforming GPS observations conducted in the period 1987 to 1993 inclusive.,1053,-35.71,7.04,-74.01,-25.28,1,0,9603,-66.87,4.37,-38.52,,,,,1 +27,5882,4618,4326,"Parameter values from SAD69 to SIRGAS 2000 (1) (tfm code 15485) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Used by ANP and Petrobras throughout Brazil from 1994, replacing use of tfm code 1877.","Accuracy generally better than 1m except in Amazon basin where it degenerates to 5m. Should be used only to transform data obtained independently of the classical geodetic network (GPS observations conducted after 1994).",1053,-35.71,7.04,-74.01,-25.28,1,0,9603,-67.35,3.88,-38.22,,,,,0 +28,6967,4618,4326,"Also used as a transformation from SAD69 to WGS 84 - see code 6974. Note: SAD69 adopted in Chile only south of 43°30'S.",Small and medium scale cartographic mapping.,4232,-32,-17.5,-71.77,-67,1,1,9603,-59,-11,-52,,,,,0 +29,6969,4618,4326,"Also used as a transformation from SAD69 to WGS 84 - see code 6976. Note: SAD69 adopted in Chile only south of 43°30'S.",Small and medium scale cartographic mapping.,4221,-43.5,-35.99,-74.48,-70.39,1,1,9603,-72,10,-32,,,,,0 +30,6974,4618,4326,"Derived at 8 stations. Along with transformations 6975 and 6976, replaces SAD69 to WGS 84 (5) (code 1868). Also used as a transformation from SAD69 to SIRGAS-Chile - see code 7448. Note: SAD69 adopted by Chile authorities only south of 43°30'S.",For military purposes only. Accuracy 2m in each axis.,4232,-32,-17.5,-71.77,-67,1,0,9603,-59,-11,-52,,,,,0 +31,6975,4618,4326,"Derived at 6 stations. Along with transformations 6974 and 6976, replaces SAD69 to WGS 84 (5) (code 1868). Also used as a transformation from SAD69 to SIRGAS-Chile - see code 6968. Note: SAD69 adopted by Chile authorities only south of 43°30'S.",For military purposes only. Accuracy 2m in each axis.,4224,-36,-31.99,-72.87,-69.77,1,0,9603,-64,0,-32,,,,,0 +32,6976,4618,4326,"Derived at 4 stations. Along with transformations 6974 and 6975, replaces SAD69 to WGS 84 (5) (code 1868). Also used as a transformation from SAD69 to SIRGAS-Chile - see code 7449. Note: SAD69 adopted by Chile authorities only south of 43°30'S.",For military purposes only. Accuracy 4m in each axis.,4221,-43.5,-35.99,-74.48,-70.39,1,0,9603,-72,10,-32,,,,,0 +33,6977,4618,4326,"Derived at 6 stations. Also used as a transformation from SAD69 to SIRGAS-Chile - see code 6970. Unlike IGM Chile, NGA extends use of this tfm to all Chile south of 44°S.","For military purposes only. Accuracy 3m, 3m and 4m in X, Y and Z axes.",2805,-55.96,-51.99,-74.83,-66.33,1,0,9603,-79,13,-14,,,,,0 +34,1879,4619,4326,"Parameter values taken from SWEREF to ETRS89 (1) (code 1878) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.",Geographic Information Systems.,1225,54.96,69.07,10.03,24.17,1,0,9603,0,0,0,,,,,1 +35,1880,4620,4326,Derived at one point in each of Burkina Faso and Niger.,For military purposes. Accuracy 25m in each axis.,2791,11.83,14.23,-4.64,4,1,0,9603,-106,-129,165,,,,,1 +36,1903,4621,4326,,"Accuracy +/- 10 metres.",2828,17.82,18.17,-63.21,-62.73,1,0,9603,137,248,-430,,,,,1 +37,1904,4622,4326,,"Accuracy +/- 10 metres.",2829,15.8,16.55,-61.85,-60.97,1,0,9603,-467,-16,-300,,,,,1 +38,1905,4622,4326,,"Accuracy +/- 0.1 metre.",2829,15.8,16.55,-61.85,-60.97,1,0,9606,-472.29,-5.63,-304.12,0.4362,-0.8374,0.2563,1.8984,0 +39,1906,4623,4326,,"Accuracy +/- 10 metres.",3105,3.43,5.81,-54.45,-51.61,1,0,9603,-186,230,110,,,,,1 +40,1907,4624,4326,,"Accuracy +/- 2 metres.",1097,2.11,8.88,-54.6,-49.46,1,1,9603,2,2,-2,,,,,0 +41,4840,4624,4326,"Replaces RGFG95 to WGS 84 (1) (code 1907) which was not put into official use but issued in error.","Accuracy +/- 2 metres.",1097,2.11,8.88,-54.6,-49.46,1,0,9603,0,0,0,,,,,1 +42,1909,4625,4326,,"Accuracy +/- 10 metres.",3276,14.35,14.93,-61.29,-60.76,1,0,9603,186,482,151,,,,,1 +43,1910,4625,4326,,"Accuracy +/- 0.1 metre.",3276,14.35,14.93,-61.29,-60.76,1,0,9606,126.93,547.94,130.41,-2.7867,5.1612,-0.8584,13.8227,0 +44,1911,4626,4326,Derived at 1 station.,"Accuracy +/- 30 metres.",1196,-25.92,-10.6,37.58,58.27,1,1,9603,94,-948,-1292,,,,,0 +45,15751,4626,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,3337,-21.42,-20.81,55.16,55.91,1,0,9603,94,-948,-1262,,,,,1 +46,1912,4627,4326,,"Accuracy +/- 1 metre.",3902,-24.72,-18.28,51.83,58.24,1,0,9603,0,0,0,,,,,1 +47,1924,4628,4326,,"Accuracy +/- 10 metres.",2811,-17.93,-17.41,-150,-149.11,1,0,9603,162,117,154,,,,,1 +48,1913,4629,4326,,"Accuracy +/- 10 metres.",2812,-16.96,-16.17,-151.91,-150.89,1,0,9603,65,342,77,,,,,0 +49,15770,4629,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from Tahaa 54 to RGPF (1) (tfm code 15758).","Accuracy +/- 1 metre.",2812,-16.96,-16.17,-151.91,-150.89,1,0,9607,72.438,345.918,79.486,-1.6045,-0.8823,-0.5565,1.3746,1 +50,1914,4630,4326,,"Accuracy +/- 10 metres.",3129,-9.57,-8.72,-140.31,-139.44,1,0,9603,84,274,65,,,,,1 +51,15775,4630,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from IGN72 Nuku Hiva to RGPF (1) (tfm code 15763).","Accuracy +/- 1 metre.",2810,-9.01,-8.72,-140.31,-139.96,1,0,9607,165.732,216.72,180.505,-0.6434,-0.4512,-0.0791,7.4204,0 +52,15776,4630,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from IGN72 Nuku Hiva to RGPF (2) (tfm code 15764).","Accuracy +/- 2 metres.",3127,-9,-8.81,-139.66,-139.44,1,0,9607,1363.785,1362.687,398.811,-4.5322,-6.7579,-1.0574,268.361,0 +53,15777,4630,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from IGN72 Nuku Hiva to RGPF (2) (tfm code 15765).","Accuracy +/- 1 metre.",3128,-9.57,-9.27,-140.21,-139.95,1,0,9607,259.551,297.612,197.833,1.4866,2.1224,0.4612,27.0249,0 +54,1915,4631,4326,"Also published in US NIMA/NGA TR8350.2 which gives accuracy of +/-25m in each axis and states that derived at one station.","Accuracy +/- 10 metres.",2816,-49.78,-48.6,68.69,70.62,1,1,9603,145,-187,103,,,,,0 +55,1916,4632,4326,,"Accuracy +/- 10 metres.",3340,-13.05,-12.61,44.98,45.35,1,0,9603,-382,-59,-262,,,,,1 +56,1272,4121,4326,,For applications requiring 1m or better accuracy.,3254,34.88,41.75,19.57,28.3,1,0,9603,-199.87,74.79,246.62,,,,,1 +57,1918,4634,4326,,"Accuracy +/- 10 metres.",1174,-26.45,-14.83,156.25,174.28,1,1,9603,-13,-348,292,,,,,0 +58,1929,4634,4326,,"Accuracy better than +/- 1 metre.",2822,-22.45,-20.03,163.92,167.09,1,1,9606,97.295,-263.247,310.882,-1.5999,0.8386,3.1409,13.3259,0 +59,1639,4123,4326,"Parameter values from KKJ to ETRS89 (1) (code 1638). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation. Replaced by KKJ to WGS 84 (2) (code 10099).",For applications to an accuracy of 1 to 2 metres.,3333,59.75,70.09,19.24,31.59,1,0,9606,-90.7,-106.1,-119.2,4.09,0.218,-1.05,1.37,0 +60,10099,4123,4326,"Parameter values from KKJ to ETRS89 (2) (code 10098). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation. Replaces KKJ to WGS 84 (1) (code 1639).",For applications to an accuracy of 1 to 2 metres.,3333,59.75,70.09,19.24,31.59,1,0,9607,-96.062,-82.428,-121.753,-4.801,-0.345,1.376,1.496,1 +61,1680,4124,4326,"Parameter values from RT90 to ETRS89 (1) (code 1437) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Replaced by RT90 to WGS 84 (2) (code 1896) from 2001.","Approximation at the +/- 1m level.",1225,54.96,69.07,10.03,24.17,1,0,9607,419.3836,99.3335,591.3451,-0.850389,-1.817277,7.862238,-0.99496,0 +62,1788,4124,4326,"Parameter values from RT90 to ETRS89 (1) (code 1787) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Supersedes RT90 to WGS 84 (1) (code 1680).","Approximation at the +/- 1m level.",1225,54.96,69.07,10.03,24.17,1,1,9607,414.1,41.3,603.1,-0.855,2.141,-7.023,0,0 +63,1896,4124,4326,"Parameter values from RT90 to SWEREF99 (1) (code 1895) assuming that SWEREF99 is equivalent to WGS 84 within the accuracy of the transformation. Replaces RT90 to WGS 84 (1) (code 1680).","Approximation at the +/- 1m level.",1225,54.96,69.07,10.03,24.17,1,0,9607,414.1,41.3,603.1,0.855,-2.141,7.023,0,1 +64,1282,4125,4326,Datum shift derived through ITRF93.,Oil exploration.,1328,-1.24,0,116.72,117.99,1,1,9603,-404.78,685.68,45.47,,,,,0 +65,8270,4638,4326,"Replaces Saint Pierre et Miquelon 1950 to WGS 84 (1) (code 1923) from March 2006.","Accuracy +/- 0.5 to 1 metre.",3299,46.69,47.19,-56.48,-56.07,1,0,9603,11.363,424.148,373.13,,,,,1 +66,1923,4638,4326,,"Accuracy +/- 10 metres.",3299,46.69,47.19,-56.48,-56.07,1,0,9603,30,430,368,,,,,0 +67,1683,4127,4326,"Parameter values taken from Tete to Moznet (1) (code 1297) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.",Residuals as high as 30 metres.,3281,-26.87,-10.42,30.21,40.9,1,0,9607,-115.064,-87.39,-101.716,0.058,-4.001,2.062,9.366,0 +68,1684,4127,4326,"Parameter values taken from Tete to Moznet (2) (code 1298) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.",Residuals are generally under 1 metre.,2350,-26.87,-23.91,31.91,34.5,1,0,9607,-82.875,-57.097,-156.768,2.158,-1.524,0.982,-0.359,0 +69,1685,4127,4326,"Parameter values taken from Tete to Moznet (3) (code 1299) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.",Residuals are generally under 4 metres.,2351,-24.91,-19.74,31.29,35.65,1,0,9607,-138.527,-91.999,-114.591,0.14,-3.363,2.217,11.748,0 +70,1686,4127,4326,"Parameter values taken from Tete to Moznet (4) (code 1300) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.",Residuals are generally under 3 metres.,2352,-19.91,-14.01,30.21,39.18,1,0,9607,-73.472,-51.66,-112.482,-0.953,-4.6,2.368,0.586,0 +71,1687,4127,4326,"Parameter values taken from Tete to Moznet (5) (code 1301) assuming that Moznet is equivalent to WGS 84 within the accuracy of the transformation.",Residuals are 5-10 metres.,2353,-16.94,-10.42,34.36,40.9,1,0,9607,219.315,168.975,-166.145,-0.198,-5.926,2.356,-57.104,0 +72,6901,4127,4326,Derived at 4 stations.,For military purposes. Accuracy 10m in each axis.,3281,-26.87,-10.42,30.21,40.9,1,0,9603,-80,-100,-228,,,,,1 +73,1934,4640,4326,RRAF 1991 was defined to be WGS84 at a single point in Martinique during the 1988 Tango mission.,"Accuracy +/- 1 metre.",2824,14.08,18.54,-63.66,-57.52,1,1,9603,0,0,0,,,,,0 +74,1928,4641,4326,Withdrawn by information source and replaced by improved information - see tfm code 15901.,"Accuracy better than +/- 1 metre.",2819,-21.71,-21.32,167.75,168.19,1,0,9606,-408.809,366.856,-412.987,1.8842,-0.5308,2.1655,-121.0993,0 +75,15901,4641,4326,"Parameter values taken from IGN53 Mare to RGNC91-93 (1) ( code 15884) assuming that RGNC91-93 is equivalent to WGS 84 to within the accuracy of the transformation.",Accuracy 2 metres.,2819,-21.71,-21.32,167.75,168.19,1,0,9603,287.58,177.78,-135.41,,,,,1 +76,15783,4641,4326,Withdrawn by information source and replaced by improved information from local authority - see tfm code 15901.,Accuracy 5 metres.,2819,-21.71,-21.32,167.75,168.19,1,0,9603,287,178,-136,,,,,0 +77,1302,4130,4326,,For many purposes Moznet can be considered to be coincident with WGS 84. Accuracy better than 1 metre.,1167,-27.71,-10.09,30.21,43.03,1,0,9607,0,0,0,0,0,0,0,1 +78,1542,4131,4326,Derived at 2 stations.,For military purposes. Accuracy 25m in each axis.,2359,14,18,105.61,109.32,1,0,9603,198,881,317,,,,,1 +79,1543,4131,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,2360,8.58,8.83,106.49,106.79,1,0,9603,182,915,344,,,,,0 +80,1513,4132,4326,Derived in 1998 in Kangan district by Geoid for Total. Used for South Pars phases 2 and 3.,Oil exploration.,2362,27.3,28.2,51.8,53.01,1,0,9603,-241.54,-163.64,396.06,,,,,1 +81,1854,4132,4326,Derived by Geoid for Elf in 1999. EGM96 geoid used.,Oil Exploration,2782,26.21,26.87,52.49,53.43,1,0,9603,-239.1,-170.02,397.5,,,,,0 +82,1855,4132,4326,Derived by Geoid for Elf in 1999. EGM96 geoid used.,Oil Exploration,2781,29.16,29.39,50.22,50.42,1,0,9603,-244.72,-162.773,400.75,,,,,0 +83,1333,4133,4326,,"?",3246,57.52,59.75,21.74,28.2,1,0,9607,0.055,-0.541,-0.185,-0.0183,0.0003,0.007,-0.014,1 +84,1439,4134,4326,"Replaced PSD93 to WGS 84 (2) (code 8581) in 1997.","Oil exploration. Residuals 0.5m at 67% probability level.",3288,16.59,26.58,51.99,59.91,1,0,9606,-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006,1 +85,1617,4134,4326,Accuracy better than 0.5m in block 4.,Oil exploration.,2404,19.58,21.17,56.5,59.02,1,0,9606,-191.808,-250.512,167.861,-0.792,-1.653,8.558,20.703,0 +86,15824,4135,4326,Derived at 15 satellite stations.,"Military mapping. Accuracy +/- 25m in X axis, +/- 20m in Y and Z axes.",1334,18.87,22.29,-160.3,-154.74,1,0,9603,61,-285,-181,,,,,1 +87,15825,4135,4326,Derived at 2 satellite stations.,"Military mapping. Accuracy +/- 25m in each axis.",1546,18.87,20.33,-156.1,-154.74,1,0,9603,89,-279,-183,,,,,0 +88,15826,4135,4326,Derived at 3 satellite stations.,"Military mapping. Accuracy +/- 20m in each axis.",1549,21.81,22.29,-159.85,-159.23,1,0,9603,45,-290,-172,,,,,0 +89,15827,4135,4326,Derived at 2 satellite stations.,"Military mapping. Accuracy +/- 25m in each axis.",1547,20.45,21.26,-157.36,-155.93,1,0,9603,65,-290,-190,,,,,0 +90,15828,4135,4326,Derived at 8 satellite stations.,"Military mapping only. Accuracy +/- 10m in X axis, +/- 6m in Y and Z axes.",1548,21.2,21.75,-158.33,-157.61,1,0,9603,58,-283,-182,,,,,0 +91,6208,6207,4326,Derived at 11 points.,"Topographic mapping. Accuracy 0.26m (1-sigma).",1171,26.34,30.43,80.06,88.21,1,0,9603,293.17,726.18,245.36,,,,,1 +92,1893,4139,4326,Derived at 11 stations.,For military purposes only. Accuracy 3m in each axis.,1335,17.62,18.78,-67.97,-64.25,1,0,9603,11,72,-101,,,,,1 +93,1473,4140,4326,"For many purposes NAD83(CSRS98) can be considered to be coincident with WGS 84.","Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.",1336,44.61,62.56,-120,-57.1,1,1,9603,0,0,0,,,,,0 +94,1073,4141,4326,For more accurate transformation contact Survey of Israel.,"Accuracy: 2m",2603,29.45,33.28,34.17,35.69,1,0,9603,-48,55,52,,,,,1 +95,1469,4142,4326,,"?",2282,5.15,5.54,-4.22,-3.85,1,0,9603,-125,53,467,,,,,1 +96,1470,4143,4326,"Derived in Abidjan for use in the immediate area, but used by E&P industry more widely onshore and offshore. A similar transformation (tfm code 6872) was used by Western Geophysical for offshore surveys in the 1990s.",Accuracy is submetre in the area around Abidjan but unknown farther afield. There is some evidence of unknown reliability that suggests accuracy of better than 2m throughout offshore.,1075,1.02,10.74,-8.61,-2.48,1,0,9603,-124.76,53,466.79,,,,,1 +97,6872,4143,4326,"Derived and used by Western Geophysical for offshore surveys in the 1990s, but exact provenance uncertain. Used by OMV.",Accuracy uncertain but there is some evidence of unknown reliability that suggests accuracy of better than 2m throughout offshore.,2296,1.02,5.19,-7.55,-3.11,1,0,9603,-123.1,53.2,465.4,,,,,0 +98,1155,4144,4326,Derived at 6 stations.,"For military purposes. Accuracy 10m, 8m and 12m in X, Y and Z axes.",3217,20.52,26.64,88.01,92.67,1,0,9603,282,726,254,,,,,0 +99,1533,4144,4326,,Oil exploration.,2361,9.48,17.87,93.94,99.66,1,0,9603,214,804,268,,,,,1 +100,1247,4145,4326,"Care! DMA ellipsoid is inconsistent with EPSG ellipsoid - transformation parameter values may not be appropriate. No accuracy estimate available.",For military purposes.,3289,23.64,37.07,60.86,77.83,1,0,9603,283,682,231,,,,,1 +101,15701,4145,4326,Derived at Geodetic Survey office in Karachi in 1997.,Oil exploration.,2985,21.05,25.39,64,68.24,1,0,9603,275.57,676.78,229.6,,,,,0 +102,15702,4145,4326,"Derived at station S0001, an approximate offset to Survey of India primary station Kat Baman, in 1992 from 180 single point Transit passes observed in 1991 by Fugro-Geodetic for UTP.",Oil exploration.,2984,24,25.64,67.74,69.87,1,0,9603,278.9,684.39,226.05,,,,,0 +103,15703,4145,4326,Derived at Chitrawala triangulation station by Fugro-Geodetic for UTP.,Oil exploration.,2982,24.69,25.76,66.83,68,1,0,9603,271.905,669.593,231.495,,,,,0 +104,15704,4145,4326,Derived by Western Geophysical for UTP 1996 East Sind 2D survey.,Oil exploration.,2983,24.16,28.61,68.27,71.14,1,0,9606,230.25,632.76,161.03,-1.114,1.115,1.212,12.584,0 +105,15494,4145,4326,Derived by Fugro-Geodetic in 2004 at 6 closely-spaced stations. Used by OMV in all blocks in Pakistan where operator.,Oil exploration.,3589,25.88,27.67,68.24,69.3,1,0,9603,274.164,677.282,226.704,,,,,0 +106,1156,4146,4326,"Care! DMA ellipsoid is inconsistent with EPSG ellipsoid - transformation parameter values may not be appropriate. Also source CRS may not apply to Nepal. Derived at 7 stations.","For military purposes. Accuracy 12m, 10m and 15m in X, Y and Z axes.",2411,8.02,35.51,68.13,97.42,1,0,9603,295,736,257,,,,,1 +107,1544,4147,4326,Derived in Vung Tau area.,Oil exploration.,1494,9.02,11.03,105.49,107.59,1,0,9603,-17.51,-108.32,-62.39,,,,,1 +108,1505,4148,4326,,For many purposes Hartebeesthoek94 datum can be considered to be coincident with WGS 84.,1215,-50.32,-22.13,13.33,42.85,1,0,9603,0,0,0,,,,,1 +109,1508,4149,4326,"Implemented in Bundesamt für Landestopographie programme GRANIT.","?",1286,45.82,47.81,5.96,10.49,1,1,9607,660.077,13.551,369.344,0.80482,0.57769,0.95224,5.66,0 +110,1510,4149,4326,"These parameters are strictly between CH1903+ and CHTRF95 but are used from CH1903 as an approximation which is within the accuracy of the distortions in the CH1903 network.",Accuracy 1.5 metres.,1286,45.82,47.81,5.96,10.49,1,1,9603,674.374,15.056,405.346,,,,,1 +111,1753,4149,4326,"Implemented in Bundesamt für Landestopografie programme GRANIT. Used from 1987 to 1997. Not recommended for current usage - replaced by CH1903 to WGS 84 (2) (code 1766).",Used in programme GRANIT between 1987 and 1997.,1286,45.82,47.81,5.96,10.49,1,0,9607,660.077,13.551,369.344,0.80482,0.57769,0.95224,5.66,0 +112,1766,4149,4326,"Parameters values from CH1903 to ETRS89 (1) (tfm code 1646) assuming ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation. Replaces CH1903 to WGS 84 (1) (code 1753). Replaced by CH1903 to WGS 84 (3) (code 7788).","Parameter values originally from CH1903+ to ETRS89 (tfm code 1647) and are used in tfm code 1646 as an approximation from CH1903 to ETRS89 with a lesser accuracy of 1.5m which equates to the magnitude of distortions in the CH1903 network.",1286,45.82,47.81,5.96,10.49,1,0,9603,674.374,15.056,405.346,,,,,0 +113,1676,4150,4326,"Parameter values are from CH1903+ to CHTRF95 (1) (code 1509) assuming that CHTRF95 is equivalent to WGS 84. That transformation is also given as CH1903+ to ETRS89 (1) (code 1647). CHTRF95 is a realisation of ETRS89.","Approximation at the +/- 1m level.",1286,45.82,47.81,5.96,10.49,1,0,9603,674.374,15.056,405.346,,,,,1 +114,1511,4151,4326,,For many purposes CHTRF95 can be considered to be coincident with WGS 84.,1286,45.82,47.81,5.96,10.49,1,0,9603,0,0,0,,,,,1 +115,1580,4152,4326,"For many purposes NAD83(HARN) can be considered to be coincident with WGS 84.","Approximation at the +/- 1m level assuming that NAD83(HARN) is equivalent to WGS 84.",1337,-14.59,49.38,144.58,-64.51,1,0,9603,0,0,0,,,,,1 +116,1900,4152,4326,"Approximation derived ignoring time-dependent parameters and assuming ITRF94(1996.0) and WGS 84, plus NAD83(CORS94) and NAD83(HARN), can be considered the same within the accuracy of the transformation. Replaced by NAD83(HARN) to WGS 84 (3) (code 1901).",Historical record only - superseded - see remarks.,1323,24.41,49.38,-124.79,-66.91,1,0,9607,-0.9738,1.9453,0.5486,-0.0275508,-0.010049,-0.011359,0,0 +117,1901,4152,4326,"Approximation derived from tfm code 6864 ignoring time-dependent parameters and assuming ITRF96(1997.0) and WGS 84, plus NAD83(CORS96) and NAD83(HARN), can be considered the same within the accuracy of the tfm. In USA only replaces tfm code 1900.","Geodesy. Accuracy with respect to CORS at stations adjusted to HARN network is better than 0.05-0.07m. For locations outside a HARN network (i.e. NAD83), accuracy may be only 1m but will usually be better than 0.5m.",1323,24.41,49.38,-124.79,-66.91,1,0,9607,-0.991,1.9072,0.5129,-0.02578991,-0.00965010,-0.0116599,0,0 +118,15930,4152,4326,"Accuracy 0.1 to 0.2m in California, 0.05-0.11 in Oregon, elsewhere better than 0.05m.",For applications to an accuracy of 0.2 metre.,1323,24.41,49.38,-124.79,-66.91,1,1,9603,0,0,0,,,,,0 +119,1512,4153,4326,"Derived in 1998 at Assaluyeh (Taheri refinery) by Geoid for Total. Used for South Pars phases 2 and 3.",Oil industry engineering survey. Used only for terminal site.,1338,27.39,27.61,52.5,52.71,1,0,9603,-133.63,-157.5,-158.62,,,,,1 +120,1141,4154,4326,"Given by DMA as from ED50. OGP interpret that as ED50(ED77) in Iran. Derived at 27 stations.","For military purposes. Accuracy 9m, 12m and 11m in X, Y and Z axes.",1123,23.34,39.78,44.03,63.34,1,0,9603,-117,-132,-164,,,,,1 +121,1514,4154,4326,"Used for South Pars phases 6, 7 and 8.","Transformation for whole country: accuracy about 1m.",1123,23.34,39.78,44.03,63.34,1,0,9606,-110.33,-97.73,-119.85,0.3423,1.1634,0.2715,0.063,0 +122,1856,4154,4326,Derived in Kangan district by Geoid for Total in 1998. Used for South Pars phases 2 and 3.,Petroleum Exploration and Production.,2783,26.58,26.71,52.07,52.28,1,0,9603,-122.89,-159.08,-168.74,,,,,0 +123,1857,4154,4326,Derived in 1999 on Lavan island by Geoid for Elf.,Petroleum Exploration and Production.,2782,26.21,26.87,52.49,53.43,1,0,9603,-84.78,-107.55,-137.25,,,,,0 +124,1858,4154,4326,Derived by Geoid for Elf in 1999. EGM96 geoid used.,Petroleum Exploration and Production.,2781,29.16,29.39,50.22,50.42,1,0,9603,-123.92,-155.515,-157.721,,,,,0 +125,15745,4154,4326,Derived in Tombak district in March 2005. Used for South Pars phase 11.,Petroleum Exploration and Production.,3140,26.46,26.64,52.22,52.41,1,0,9603,-123.02,-158.95,-168.47,,,,,0 +126,1518,4155,4326,,Accuracy 25m in each axis.,3257,7.19,12.68,-15.13,-7.65,1,0,9603,-83,37,124,,,,,1 +127,1623,4156,4326,"Parameter values from S-JTSK to ETRS89 (1) (code 1622). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation. Replaced by S-JTSK to WGS 84 (5) (code 5239).",For applications to an accuracy of 1 metre.,1079,48.58,51.06,12.09,18.86,1,0,9606,570.8,85.7,462.8,4.998,1.587,5.261,3.56,0 +128,1625,4156,4326,"Parameter values from S-JTSK to ETRS89 (2) (code 1624). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1211,47.73,49.61,16.84,22.56,1,1,9606,559,68.7,451.5,7.92,4.073,4.251,5.71,0 +129,4828,4156,4326,"Parameter values from S-JTSK to ETRS89 (4) (code 4827). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1211,47.73,49.61,16.84,22.56,1,1,9606,485,169.5,483.5,7.786,4.398,4.103,0,0 +130,4836,4156,4326,"Parameter values from S-JTSK to ETRS89 (4) (code 4827). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1211,47.73,49.61,16.84,22.56,1,0,9606,485,169.5,483.8,7.786,4.398,4.103,0,0 +131,5239,4156,4326,"Parameter values from S-JTSK/05 to WGS 84 (1) (code 5227). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation. Replaces tfm code 1622.",For applications to an accuracy of 1 metre.,1079,48.58,51.06,12.09,18.86,1,0,9607,572.213,85.334,461.94,-4.9732,-1.529,-5.2484,3.5378,0 +132,15965,4156,4326,Derived at 6 stations.,"For military purposes. Accuracy 4m, 2m and 3m in X, Y and Z axes.",1306,47.73,51.06,12.09,22.56,1,0,9603,589,76,480,,,,,1 +133,1283,4669,4326,,LKS94 is a realization of ETRS89 and coincident to WGS 84 within 1 metre. This transformation has an accuracy equal to the coincidence figure.,1145,53.89,56.45,19.02,26.82,1,0,9603,0,0,0,,,,,1 +134,1099,4670,4326,"Parameter values taken from IGM95 to ETRS89 (1) (code 1098) assuming that ETRS89 is coincident with WGS 84 within the accuracy of the transformation.",Approximation at the 1m level.,3343,34.76,47.1,5.93,18.99,1,0,9603,0,0,0,,,,,1 +135,1859,4159,4326,"Used by Repsol in Murzuq field, and PetroCanada and previous licence holders in NC177 and 72 (En Naga field). Reliability of connection to ELD79 questionned.",Oil Exploration,2785,27.32,27.67,18.37,18.72,1,0,9603,-69.06,-90.71,-142.56,,,,,0 +136,1860,4159,4326,Derived December 2001 by NAGECO. Connected to ITRF via Remsa 2000 data. Used by TotalFinaElf.,Oil Exploration. 3-dimensional SD at 11 points is 0.5m.,2785,27.32,27.67,18.37,18.72,1,0,9603,-113.997,-97.076,-152.312,,,,,0 +137,1861,4159,4326,Derived by GEOID in 1994 from Transit satellite data. Used by TotalFinaElf.,Oil Exploration,2786,29.61,30.07,17.13,17.51,1,0,9603,-114.5,-96.1,-151.9,,,,,0 +138,1862,4159,4326,"Derived by Geoid in 2000 from ITRF connection by NAGECO for TotalFinaElf. For historic compatibility TFE use the 1994 tfm ELD79 to WGS 84 (3) (code 1861) rather than this transformation.",Oil Exploration,2786,29.61,30.07,17.13,17.51,1,0,9606,-194.513,-63.978,-25.759,-3.4027,3.756,-3.352,-0.9175,0 +139,1863,4159,4326,"Derived for the Great Man-made River Authority (GMRA).",Engineering survey and oil exploration,2786,29.61,30.07,17.13,17.51,1,0,9607,-389.691,64.502,210.209,-0.086,-14.314,6.39,0.9264,0 +140,15923,4159,4326,"Derived by SDL for Total in Cyrenaica blocks 2 & 4.",Oil and gas exploration.,3477,32,32.8,22.49,23,1,0,9603,-117.7,-100.3,-152.4,,,,,0 +141,15707,4159,4326,"Used by Petrocanada and previous licence holders in Amal field, concession 12.",Oil exploration and production,2987,29.1,29.8,20.8,21.4,1,0,9603,-118.996,-111.177,-198.687,,,,,0 +142,15909,4159,4326,Derived at 29 stations throughout Libya in May 2006.,For applications to an accuracy of 5 metres.,3271,19.49,33.23,9.31,25.21,1,0,9603,-115.8543,-99.0583,-152.4616,,,,,1 +143,15778,4159,4326,"Derived by Total at stations SDL 130-03, 04 and 05 in May 2005.",Oil exploration and production.,3142,27.5,28.07,21.25,21.59,1,0,9603,-114.7,-98.5,-150.7,,,,,0 +144,1080,4672,4326,Derived at 4 stations.,For military purposes. Accuracy 15m in each axis.,2889,-44.64,-43.3,-177.25,-175.54,1,0,9603,175,-38,113,,,,,1 +145,1081,4673,4326,Derived at 4 stations using concatenation through WGS72. Parameter vales are also used to transform CI1979 to NZGD2000 - see tfm code 1082.,For applications requiring 2m accuracy.,2889,-44.64,-43.3,-177.25,-175.54,1,0,9607,174.05,-25.49,112.57,0,0,-0.554,0.2263,1 +146,15894,4674,4326,,Accuracy 1m.,3418,-59.87,32.72,-122.19,-25.28,1,0,9603,0,0,0,,,,,1 +147,1070,4675,4326,Derived at 5 stations.,For military purposes only. Accuracy 3m in each axis.,3255,13.18,13.7,144.58,145.01,1,0,9603,-100,-248,259,,,,,1 +148,1682,4164,4326,"Parameter values taken from South Yemen to Yemen NGN96 (1) (code 1539) assuming that NGN96 is equivalent to WGS 84 within the accuracy of the transformation.","Approximation at the +/- 5m level.",1340,12.54,19,43.37,53.14,1,0,9603,-76,-138,67,,,,,1 +149,1547,4165,4326,Derived at 2 stations.,For military purposes only. Accuracy 25m in each axis.,3258,10.87,12.69,-16.77,-13.64,1,0,9603,-173,253,27,,,,,1 +150,1065,4678,4326,Derived at 25 stations.,Accuracy 5m.,1138,13.92,22.5,100.09,107.7,1,0,9603,44.585,-131.212,-39.544,,,,,1 +151,1565,4167,4326,,Assumes NZGD2000 is coincident to WGS 84 to the 1m accuracy level.,1175,-55.95,-25.88,160.6,-171.2,1,0,9603,0,0,0,,,,,1 +152,1569,4168,4326,Derived at 3 common points.,Military survey,1104,1.4,11.16,-3.79,2.1,1,0,9603,-199,32,322,,,,,1 +153,6896,4168,4326,Derived at 4 stations.,"For military purposes. Accuracy 3m, 4m and 3m in X, Y and Z axes.",3252,4.67,11.16,-3.25,1.23,1,0,9603,-170,33,326,,,,,0 +154,15495,4168,4326,Derived via WGS 72BE. Found in use within oil industry erroneously concatenated via WGS 72. See tfm code 8571.,Oil industry.,1505,1.4,6.06,-3.79,2.1,1,0,9606,-171.16,17.29,325.21,0,0,0.814,-0.38,0 +155,1577,4169,4326,Transformation based on observations at 2 stations in 1993.,For military purposes. One sigma uncertainty is 25m in each axis.,3109,-14.43,-14.11,-170.88,-169.38,1,0,9603,-115,118,426,,,,,1 +156,1581,4170,4326,,For military purposes. Accuracy 1m in each axis.,3448,-59.87,16.75,-113.21,-26,1,0,9603,0,0,0,,,,,1 +157,1671,4171,4326,"Parameter values from RGF93 to ETRS89 (1) (code 1591) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.","Approximation at the +/- 1m level.",1096,41.15,51.56,-9.86,10.38,1,0,9603,0,0,0,,,,,1 +158,1598,4172,4326,,"?",1033,-58.41,-21.78,-73.59,-52.63,1,1,9603,0,0,0,,,,,0 +159,1678,4173,4326,Assumes that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. IRENET95 is a regional realisation of ETRS89.,"Approximation at the +/- 1m level.",1305,51.39,55.43,-10.56,-5.34,1,0,9603,0,0,0,,,,,1 +160,15738,4686,4326,,MAGNA-SIRGAS is a national realization of SIRGAS and coincident with WGS 84 to within 1 metre. This transformation has an accuracy equal to the coincidence figure.,1070,-4.23,15.51,-84.77,-66.87,1,0,9603,0,0,0,,,,,1 +161,1614,4175,4326,"Determined at 8 stations. Info. source has the source CRS as Sierra Leone 1960. Sierra Leone 1968 is a readjustment of the 1960 network: coordinates changed by less than 3 metres.","Accuracy +/- 15m in each axis.",3306,6.88,10,-13.35,-10.26,1,0,9603,-88,4,101,,,,,1 +162,1890,4176,4326,For many purposes Australian Antarctic can be considered to be coincident with WGS 84.,"Approximation at the +/- 1m level assuming that Australian Antarctic is equivalent to WGS 84.",1278,-90,-60,45,160,1,0,9603,0,0,0,,,,,1 +163,15773,4689,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from IGN63 Hiva Oa to RGPF (1) (tfm code 15761).","Accuracy +/- 1 metre.",3131,-9.89,-9.64,-139.23,-138.75,1,0,9607,410.721,55.049,80.746,-2.5779,-2.3514,-0.6664,17.3311,1 +164,15774,4689,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from IGN63 Hiva Oa to RGPF (2) (tfm code 15762).","Accuracy +/- 2 metres.",3132,-10.08,-9.86,-139.19,-138.98,1,0,9607,374.716,-58.407,-0.957,-16.2111,-11.4626,-5.5357,-0.5409,0 +165,1675,4178,4326,"Parameter values from Pulkovo 1942(83) to ETRS89 (1) (code 1674) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.",Residuals under 2 m.,1343,50.2,54.74,9.92,15.04,1,0,9607,24,-123,-94,-0.02,0.25,0.13,1.1,0 +166,15998,4178,4326,Derived at 6 stations.,"For military purposes only. Accuracy 3m, 3m and 2m in X, Y and Z axes.",1306,47.73,51.06,12.09,22.56,1,0,9603,26,-121,-78,,,,,1 +167,15996,4178,4326,Derived at 5 stations.,For military purposes. Accuracy 2m in each axis.,1119,45.74,48.58,16.11,22.9,1,0,9603,28,-121,-77,,,,,0 +168,1645,4179,4326,"Parameter values from Pulkovo 1942(58) to ETRS89 (1) (code 1644). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,3293,49,54.89,14.14,24.15,1,0,9606,33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84,1 +169,15999,4179,4326,Derived at 7 stations.,For military purposes. Accuracy 3m in each axis.,3212,39.64,42.67,19.22,21.06,1,0,9603,24,-130,-92,,,,,0 +170,15496,4179,4326,,Oil exploration,1197,43.44,48.27,20.26,31.41,1,0,9603,44.107,-116.147,-54.648,,,,,0 +171,15497,4179,4326,Derived at 4 stations.,"For military purposes. Accuracy 3m, 5m and 3m in X, Y and Z axes.",1197,43.44,48.27,20.26,31.41,1,0,9603,28,-121,-77,,,,,0 +172,15995,4179,4326,"Parameter values taken from Pulkovo 1942(58) to ETRS89 (4) (code 15994) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.","Accuracy of 1.5 to 3 metres horizontal, 3 to 5m vertical.",1197,43.44,48.27,20.26,31.41,1,0,9607,2.329,-147.042,-92.08,0.309,-0.325,-0.497,5.69,0 +173,15997,4179,4326,Derived at 11 stations.,"For military purposes only. Accuracy 4m, 2m and 4m in X, Y and Z axes.",3293,49,54.89,14.14,24.15,1,0,9603,23,-124,-82,,,,,0 +174,1649,4180,4326,"Parameter values taken from EST97 to ETRS89 (1) (code 1648). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1090,57.52,60,20.37,28.2,1,0,9603,0,0,0,,,,,1 +175,1643,4181,4326,"Parameter values from Luxembourg 1930 to ETRS89 (1) (code 1642). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1146,49.44,50.19,5.73,6.53,1,0,9606,-193,13.7,-39.3,-0.41,-2.933,2.688,0.43,0 +176,5486,4181,4326,"Parameter values from Luxembourg 1930 to ETRS89 (3) (code 5485) assuming ETRS89 and WGS 84 are coincident within the one metre level. Replaces tfm code 1643. For an equivalent transformation using the Molodensky-Badekas method see code 5484.",For applications to an accuracy of 1 metre.,1146,49.44,50.19,5.73,6.53,1,0,9607,-189.6806,18.3463,-42.7695,0.33746,3.09264,-2.53861,0.4598,1 +177,1210,4694,4326,,Transformation with 1-metre accuracy.,1033,-58.41,-21.78,-73.59,-52.63,1,0,9603,0,0,0,,,,,1 +178,1886,4183,4326,Derived at 5 stations.,For military purposes only. Accuracy 3m in each axis.,1301,38.32,39.14,-28.9,-26.97,1,0,9603,-104,167,-38,,,,,1 +179,1885,4184,4326,Derived at 2 stations.,For military purposes only. Accuracy 25m in each axis.,1345,36.87,37.96,-25.92,-24.62,1,0,9603,-203,141,53,,,,,1 +180,15794,4708,4326,Derived at 1 satellite station.,For military purposes only. Accuracy 25m in each axis.,1069,-12.27,-11.76,96.76,96.99,1,0,9603,-491,-22,435,,,,,1 +181,15850,4698,4326,"Also published in US NIMA/NGA TR8350.2 which gives accuracy of +/-25m in each axis and states that derived at one station.","Accuracy +/- 10 metres.",2816,-49.78,-48.6,68.69,70.62,1,0,9603,145,-187,103,,,,,1 +182,15784,4699,4326,Derived at 17 stations in 1994 by University of East London. Residuals less than 2m.,Accuracy 2m.,3209,-20.57,-19.94,57.25,57.85,1,0,9603,-770.1,158.4,-498.2,,,,,1 +183,1955,4188,4326,"Parameter values from TM75 to ETRS89 (2) (code 1953). Assumes each pair of (i) OSNI 1952 and TM75, and (ii) ETRS89 and WGS 84, can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,2530,53.96,55.36,-8.18,-5.34,1,0,9606,482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15,1 +184,1768,4189,4326,,"Approximation at the +/- 1m level.",1251,0.64,16.75,-73.38,-58.95,1,0,9603,0,0,0,,,,,1 +185,1773,4190,4326,,"Approximation at the +/- 1m level.",1033,-58.41,-21.78,-73.59,-52.63,1,0,9603,0,0,0,,,,,1 +186,15780,4190,4326,,"Approximation at the +/- 1m level.",1033,-58.41,-21.78,-73.59,-52.63,1,1,9603,0,0,0,,,,,0 +187,6964,4191,4326,"Parameter values from Albanian 1987 to ETRS89 (1) (code 6963). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.","Use only for horizontal coordinates; geoid heights must be calculated with ALBGEO3 software.",3212,39.64,42.67,19.22,21.06,1,1,9607,-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703,0 +188,7834,4191,4326,"Parameter values from Albanian 1987 to ETRS89 (1) (code 7833). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.","Use only for horizontal coordinates; geoid heights must be calculated with ALBGEO3 software.",3212,39.64,42.67,19.22,21.06,1,0,9607,-44.183,-0.58,-38.489,-2.3867,-2.7072,3.5196,-8.2703,1 +189,15873,4192,4326,Derived at Manoca tower assuming the pyramid on the tower and the centre of the tower reservoir are co-located. This assumption carries a few metres uncertainty.,Oil exploration.,2555,2.16,4.99,8.45,10.4,1,0,9603,-206.1,-174.7,-87.7,,,,,1 +190,1796,4193,4326,"Derived at two points, checked at a third by Stolt Comex Seaway and Geoid for Elf.",Oil industry,2555,2.16,4.99,8.45,10.4,1,0,9603,-70.9,-151.8,-41.4,,,,,1 +191,1797,4194,4326,Derived at 2 stations.,"For military purposes. Accuracy 25m, 25m and 32m in X, Y and Z axes.",3362,59.74,79,-73.29,-42.52,1,0,9603,164,138,-189,,,,,1 +192,1798,4194,4326,,Topographic mapping.,3362,59.74,79,-73.29,-42.52,1,0,9606,163.511,127.533,-159.789,0,0,0.814,-0.6,0 +193,1799,4195,4326,,Topographic mapping.,2570,68.66,74.58,-29.69,-19.89,1,0,9606,105,326,-102.5,0,0,0.814,-0.6,1 +194,1800,4196,4326,,Topographic mapping.,2571,65.52,65.91,-38.86,-36.81,1,0,9606,-45,417,-3.5,0,0,0.814,-0.6,1 +195,15796,4709,4326,Derived at 1 satellite station.,For military purposes only. Accuracy 25m in each axis.,3200,24.67,24.89,141.2,141.42,1,0,9603,145,75,-272,,,,,1 +196,15798,4710,4326,Derived at 1 satellite station.,For military purposes only. Accuracy 25m in each axis.,3183,-16.08,-15.85,-5.85,-5.58,1,0,9603,-320,550,-494,,,,,1 +197,7894,4710,4326,"Parameter values from Astro DOS 71 to SHGD2015 (1) (tfm code 7893). Assumes SHGD2015 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications requiring an accuracy of better than 1 metre.,3183,-16.08,-15.85,-5.85,-5.58,1,0,9603,-323.65,551.39,-491.22,,,,,0 +198,15799,4711,4326,Derived at 1 satellite station.,For military purposes only. Accuracy 25m in each axis.,1872,24.22,24.35,153.91,154.05,1,0,9603,124,-234,-25,,,,,1 +199,1281,4200,4326,"Derived through concatenation of Pulkovo 1995 to PZ-90 (1) (tfm code 1257) and PZ-90 to WGS 84 (2) (tfm code 1244). Mandated for use in Russia by GOST R 51794-2001, but this has been superseded by GOST R 51794-2008. Replaced by tfm code 5043.",Accuracy 1 metre.,1198,39.87,85.2,18.92,-168.97,1,0,9607,24.82,-131.21,-82.66,0,0,-0.16,-0.12,0 +200,5043,4200,4326,"Derived through concatenation of Pulkovo 1995 to PZ-90.02 to WGS 84. Replaces Pulkovo 1995 to WGS 84 (1), tfm code 1281.",Accuracy 1 metre.,1198,39.87,85.2,18.92,-168.97,1,0,9607,24.47,-130.89,-81.56,0,0,-0.13,-0.22,1 +201,1100,4201,4326,Derived at 22 stations.,For military purposes only. Accuracy 5m in each axis.,1271,3.4,22.24,21.82,47.99,1,0,9603,-166,-15,204,,,,,1 +202,1101,4201,4326,"Derived at 1 station connected to the Adindan (Blue Nile 1958) network through the 1968-69 12th parallel traverse. Note: the Adindan (Blue Nile 1958) CRS is used in Ethiopia and Sudan, not Burkino Faso.",For military purposes. Accuracy 25m in each axis.,1057,9.39,15.09,-5.53,2.4,1,0,9603,-118,-14,218,,,,,0 +203,1102,4201,4326,"Derived at 1 station connected to the Adindan (Blue Nile 1958) network through the 1968-69 12th parallel traverse. Note: the Adindan (Blue Nile 1958) CRS is used in Ethiopia and Sudan, not Cameroon.",For military purposes. Accuracy 25m in each axis.,3226,1.65,13.09,8.45,16.21,1,0,9603,-134,-2,210,,,,,0 +204,1103,4201,4326,Derived at 8 stations.,For military purposes. Accuracy 3m in each axis.,1091,3.4,14.89,32.99,47.99,1,0,9603,-165,-11,206,,,,,0 +205,1104,4201,4326,"Derived at 1 station connected to the Adindan (Blue Nile 1958) network through the 1968-69 12th parallel traverse. Note: the Adindan (Blue Nile 1958) CRS is used in Ethiopia and Sudan, not Mali.",For military purposes. Accuracy 25m in each axis.,1153,10.14,25.01,-12.25,4.26,1,0,9603,-123,-20,220,,,,,0 +206,1105,4201,4326,"Derived at 2 stations connected to the Adindan (Blue Nile 1958) network through the 1968-69 12th parallel traverse. Note: The Adindan (Blue Nile 1958) CRS is used in Ethiopia and Sudan, not Senegal.",For military purposes. Accuracy 25m in each axis.,3304,12.29,16.7,-17.59,-11.36,1,0,9603,-128,-18,224,,,,,0 +207,1106,4201,4326,Derived at 14 stations.,"For military purposes. Accuracy 3m, 5m and 3m in X, Y and Z axes.",3311,3.49,22.24,21.82,38.66,1,0,9603,-161,-14,205,,,,,0 +208,1108,4202,4326,"Derived at 105 stations. Replaced by AGD66 to WGS 84 (20) (code 6905).",For military purposes only. Accuracy 3m in each axis.,2575,-43.7,-9.86,112.85,153.69,1,0,9603,-133,-48,148,,,,,0 +209,1665,4202,4326,"Parameter values from AGD66 to GDA94 (2) (code 1458). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation.",Recommended for mid-accuracy use in A.C.T. 1m accuracy.,2283,-35.93,-35.12,148.76,149.4,1,0,9607,-129.193,-41.212,130.73,-0.246,-0.374,-0.329,-2.955,0 +210,1666,4202,4326,"Parameter values from AGD66 to GDA94 (4) (code 1460). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation.",Recommended for mid-accuracy use in NSW and Victoria. 1m accuracy.,2286,-39.2,-28.15,140.96,153.69,1,0,9607,-119.353,-48.301,139.484,-0.415,-0.26,-0.437,-0.613,0 +211,1667,4202,4326,"Parameter values from AGD66 to GDA94 (8) (code 1594). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation.",Recommended for mid-accuracy use in Tasmania. 1m accuracy.,1282,-43.7,-39.52,143.77,148.55,1,0,9607,-120.271,-64.543,161.632,-0.217,0.067,0.129,2.499,0 +212,1668,4202,4326,"Parameter values from AGD66 to GDA94 (9) (code 1595). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation.",Recommended for mid-accuracy use in Northern Territory. 1m accuracy.,2284,-26.01,-10.86,128.99,138,1,0,9607,-124.133,-42.003,137.4,0.008,-0.557,-0.178,-1.854,0 +213,15980,4202,4326,"Parameter values from AGD66 to GDA94 (12) (code 15979). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation. Use only offshore: onshore tfms 1665-68 for ACT, NSW/Vic, Tas and NT respectively are more accurate.",3m accuracy.,3559,-47.2,-8.88,109.23,163.2,1,0,9607,-117.808,-51.536,137.784,-0.303,-0.446,-0.234,-0.29,1 +214,5841,4202,4326,Derived at 25 stations in 2007.,"Accuracy 2m in 2007. Due to significant tectonic activity in PNG, AGD66 and WGS 84 are separating by approximately 7cm per year.",4013,-8.28,-5.59,142.24,144.75,1,0,9603,-124,-60,154,,,,,0 +215,6905,4202,4326,"Derived at 161 stations. Replaces AGD66 to WGS 84 (1) (code 1108).",For military purposes only. Accuracy 5m in each axis.,2575,-43.7,-9.86,112.85,153.69,1,0,9603,-128,-52,153,,,,,0 +216,6943,4202,4326,"Parameter values taken from AGD66 to PNG94 (3) (code 6938). Approximation at the +/- 5m level assuming that PNG94 is equivalent to WGS 84 within the accuracy of the transformation.",Low accuracy transformation suitable for mapping and navigation purposes only.,4214,-10.76,-2.53,140.85,150.96,1,0,9603,-129,-58,152,,,,,0 +217,6944,4202,4326,"Parameter values taken from AGD66 to PNG94 (5) (code 6940). Approximation at the +/- 4m level assuming that PNG94 is equivalent to WGS 84 within the accuracy of the transformation.",Low accuracy transformation suitable for mapping and navigation purposes only.,4013,-8.28,-5.59,142.24,144.75,1,0,9603,-131.3,-55.3,151.8,,,,,0 +218,6945,4202,4326,"Parameter values taken from AGD66 to PNG94 (7) (code 6942). Approximation at the +/- 4m level assuming that PNG94 is equivalent to WGS 84 within the accuracy of the transformation.",Low accuracy transformation suitable for mapping and navigation purposes only.,4216,-6.6,-5.05,140.89,141.54,1,0,9603,-137.4,-58.9,150.4,,,,,0 +219,15788,4202,4326,"Parameter values from AGD66 to GDA94 (1) (code 1278). Derived at 162 stations. Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation.",5m accuracy.,2575,-43.7,-9.86,112.85,153.69,1,0,9603,-127.8,-52.3,152.9,,,,,0 +220,1109,4203,4326,"Derived at 90 stations. Note: AGD84 officially adopted only in Queensland, South Australia and Western Australia.",For military purposes only. Accuracy 2m in each axis.,2575,-43.7,-9.86,112.85,153.69,1,0,9603,-134,-48,149,,,,,1 +221,1236,4203,4326,"""Higgins parameters"". Replaced by AGD84 to GDA94 (2) (code 1280) and AGD84 to WGS 84 (7) (code 1669). Note: AGD84 officially adopted only in Queensland, South Australia and Western Australia.",Preliminary estimate.,2575,-43.7,-9.86,112.85,153.69,1,0,9607,-116,-50.47,141.69,-0.23,-0.39,-0.344,0.0983,0 +222,1669,4203,4326,"Parameter values from AGD84 to GDA94 (2) (code 1280). Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the transformation. Replaces AGD84 to WGS 84 (2) (code 1236). Note: AGD84 officially adopted only in Qld, SA and WA.",1m accuracy.,2575,-43.7,-9.86,112.85,153.69,1,0,9607,-117.763,-51.51,139.061,-0.292,-0.443,-0.277,-0.191,0 +223,15789,4203,4326,"Parameter values from AGD84 to GDA94 (1) (code 1279). Derived at 327 stations. Assumes GDA94 and WGS 84 can be considered the same to within the accuracy of the tfm. AGD84 officially adopted only in Queensland, South Australia and Western Australia.",5m accuracy.,2575,-43.7,-9.86,112.85,153.69,1,0,9603,-128.5,-53,153.4,,,,,0 +224,1055,4204,4326,Derived at station K1.,1 metre accuracy.,3267,28.53,30.09,46.54,48.48,1,0,9603,-145.7,-249.1,1.5,,,,,0 +225,1056,4204,4326,"Derivation is more precise, but no evidence that accuracy is better than Ain el Abd to WGS 84 (3). OGP recommends using Ain el Abd to WGS 84 (3).",1 metre accuracy.,3267,28.53,30.09,46.54,48.48,1,0,9607,-85.645,-273.077,-79.708,-2.289,1.421,-2.532,3.194,0 +226,1057,4204,4326,.,1 metre accuracy.,2956,29.1,30.09,46.54,48.42,1,0,9607,-202.234,-168.351,-63.51,-3.545,-0.659,1.945,2.1,0 +227,1058,4204,4326,,1 metre accuracy.,2957,28.53,29.45,46.54,48.48,1,0,9607,-18.944,-379.364,-24.063,-0.04,0.764,-6.431,3.657,0 +228,1110,4204,4326,Derived at 2 stations.,For military purposes. Accuracy 25m in each axis.,3943,25.53,26.34,50.39,50.85,1,0,9603,-150,-250,-1,,,,,0 +229,1111,4204,4326,Derived at 9 stations.,For military purposes. Accuracy 10m in each axis.,3303,15.61,32.16,34.51,55.67,1,0,9603,-143,-236,7,,,,,1 +230,1107,4205,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,3308,-1.71,12.03,40.99,51.47,1,0,9603,-43,-163,45,,,,,1 +231,15846,4706,4326,"Sometime referred to as ""Egypt 1907 to WGS 84"". However, application to WGS 84 coordinates of the reverse of this tfm results in Gulf of Suez S-650 TL, not Egypt 1907, position. Gulf of Suez S-650 TL and Egypt 1907 CRSs differ by some 20 metres.",Used for oil exploration by GUPCO.,2341,27.19,30.01,32.34,34.27,1,0,9603,-146.21,112.63,4.05,,,,,1 +232,1656,4207,4326,"Parameter values from Lisbon to ETRS89 (1) (code 1655). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation. Replaced by Lisbon to WGS 84 (4) (code 1988).",For applications to an accuracy of 3 metres.,1294,36.95,42.16,-9.56,-6.19,1,0,9606,-280.9,-89.8,130.2,-1.721,0.355,-0.371,-5.92,0 +233,1944,4207,4326,"Parameter values from Lisbon to ETRS89 (2) (code 1790). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 2 metres.,1294,36.95,42.16,-9.56,-6.19,1,1,9606,-282.1,-72.2,120,-1.592,0.145,-0.89,-4.46,0 +234,1984,4207,4326,,For low resolution applications.,1294,36.95,42.16,-9.56,-6.19,1,0,9603,-304.046,-60.576,103.64,,,,,1 +235,1988,4207,4326,,For medium resolution applications.,1294,36.95,42.16,-9.56,-6.19,1,0,9607,-288.885,-91.744,126.244,1.691,-0.41,0.211,-4.598,0 +236,6898,4207,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,1294,36.95,42.16,-9.56,-6.19,1,0,9603,-306,-62,105,,,,,0 +237,15877,4720,4326,"Suitable for GIS mapping purposes but not rigorous surveying. Very similar results may be obtained through Fiji 1986 to WGS 84 (1) (tfm code 15876).","Horizontal accuracy 2m, vertical accuracy approximately 40 metres..",3398,-19.22,-16.1,176.81,-179.77,1,0,9607,-35.173,136.571,-36.964,1.37,-0.842,-4.718,-1.537,0 +238,15876,4720,4326,"Approximation at the +/- 2m level assuming that Fiji 1986 is equivalent to WGS 72. Parameter values taken from WGS 72 to WGS 84 (1) (tfm code 1237).",tbc,1094,-20.81,-12.42,176.81,-178.15,1,0,9606,0,0,4.5,0,0,0.554,0.2263,1 +239,1113,4209,4326,Derived at 41 stations.,"For military purposes only. Accuracy 20m, 33m and 20m in X, Y and Z axes.",2312,-30.66,-8.19,19.99,35.93,1,0,9603,-143,-90,-294,,,,,1 +240,1114,4209,4326,Derived at 9 stations.,"For military purposes. Accuracy 3m, 5m and 3m in X, Y and Z axes.",1051,-26.88,-17.78,19.99,29.38,1,0,9603,-138,-105,-289,,,,,0 +241,1115,4209,4326,Derived at 3 stations.,For military purposes. Accuracy 20m in each axis.,1058,-4.45,-2.3,28.98,30.86,1,1,9603,-153,-5,-292,,,,,0 +242,1116,4209,4326,Derived at 5 stations.,"For military purposes. Accuracy 3m, 3m and 8m in X, Y and Z axes.",1141,-30.66,-28.57,27.01,29.46,1,0,9603,-125,-108,-295,,,,,0 +243,1117,4209,4326,Derived at 6 stations.,"For military purposes. Accuracy 9m, 24m and 8m in X, Y and Z axes.",1150,-17.14,-9.37,32.68,35.93,1,0,9603,-161,-73,-317,,,,,0 +244,1118,4209,4326,Derived at 4 stations.,For military purposes. Accuracy 15m in each axis.,1224,-27.32,-25.72,30.79,32.14,1,0,9603,-134,-105,-295,,,,,0 +245,1119,4209,4326,Derived at 2 stations.,For military purposes. Accuracy 25m in each axis.,1259,-13.46,5.39,11.79,31.31,1,1,9603,-169,-19,-278,,,,,0 +246,1120,4209,4326,Derived at 5 stations.,"For military purposes. Accuracy 21m, 21m and 27m in X, Y and Z axes.",1260,-18.08,-8.19,21.99,33.71,1,0,9603,-147,-74,-283,,,,,0 +247,1121,4209,4326,"Derived at 10 stations. Replaced by Arc 1950 to WGS 84 (10), tfm code 6906.","For military purposes. Accuracy 5m, 8m and 11m in X, Y and Z axes.",1261,-22.42,-15.61,25.23,33.08,1,0,9603,-142,-96,-293,,,,,0 +248,6904,4209,4326,"Derived at 7 stations. Info source gives source CRS as Arc 1960. From inspection of parameter values, comparison of those from DMA TR8350.2 transformations and geographic applicability of CRS, OGP believes that this should be Arc 1950.","For military purposes only. Accuracy 13m, 25m and 7m in X, Y and Z axes.",1150,-17.14,-9.37,32.68,35.93,1,0,9603,-179,-81,-314,,,,,0 +249,6906,4209,4326,"Derived at 38 stations. Replaces Arc 1950 to WGS 84 (9), tfm code 1121.","For military purposes. Accuracy 10m in each of X, Y and Z axes.",1261,-22.42,-15.61,25.23,33.08,1,0,9603,-145,-97,-292,,,,,0 +250,1122,4210,4326,Derived at 25 stations.,For military purposes only. Accuracy 20m in each axis.,2311,-11.75,4.63,29.34,41.91,1,0,9603,-160,-6,-302,,,,,1 +251,1284,4210,4326,Derived at 24 stations.,"For military purposes. Accuracy 4m, 3m and 3m in X, Y and Z axes.",3264,-4.72,4.63,33.9,41.91,1,0,9603,-157,-2,-299,,,,,0 +252,1285,4210,4326,Derived at 12 stations.,"For military purposes. Accuracy 6m, 9m and 10m in X, Y and Z axes.",3316,-11.75,-0.99,29.34,40.48,1,0,9603,-175,-23,-303,,,,,0 +253,3998,4210,4326,"Derived at 3 stations. From inspection of parameter values and geographic applicability of CRS, OGP believes that the published source CRS (Arc 1950) has been misidentified by information source. Analysis of TR8350.2 contour charts suggest Arc 1960.",For military purposes. Accuracy 20m in each axis.,1058,-4.45,-2.3,28.98,30.86,1,0,9603,-153,-5,-292,,,,,0 +254,1123,4211,4326,"Note: The area of use cited for this transformation (Sumatra) is not consistent with the area of use (Java) for the Batavia (Genuk) coordinate reference system. Derived at 5 stations.",For military purposes. Accuracy 3m in each axis.,1355,-5.99,5.97,95.16,106.13,1,0,9603,-377,681,-50,,,,,1 +255,1813,4211,4326,Used by ARCO offshore NW Java area.,Oil industry operations.,2577,-6.89,-4.07,105.77,110.01,1,0,9603,-378.873,676.002,-46.255,,,,,0 +256,1814,4211,4326,Used by PT Komaritim for Nippon Steel during East Java Gas Pipeline construction.,Oil industry operations.,2588,-8.46,-6.8,112.8,117.01,1,0,9603,-377.7,675.1,-52.2,,,,,0 +257,15793,4212,4326,"Derived at 2 stations (S40 and M1, St Annes Tower) in 2004.",Accuracy 2.5m.,3218,13,13.39,-59.71,-59.37,1,0,9603,31.95,300.99,419.19,,,,,1 +258,15809,4725,4326,"Derived at 2 satellite stations. Note: NGA online html files carry a different dZ value - OGP believe this is an erroneous transcription from the TR8350.2 line above.","Military and topographic mapping. Accuracy +/- 25m in each axis.",3201,16.67,16.79,-169.59,-169.47,1,0,9603,189,-79,-202,,,,,1 +259,15919,4214,4326,Derived via WGS 72BE. Original transformation derived in 1979 at 4 stations on Yellow Sea coast.,Geophysical exploration in Yellow Sea.,3469,31.23,37.4,119.23,125.06,1,0,9606,15.53,-113.82,-41.38,0,0,0.814,-0.38,0 +260,15918,4214,4326,Provided by BGP to TOTAL in June 2006.,Geophysical exploration in Ordos basin. Accuracy stated as 1m within basin.,3466,35,39,107,110.01,1,0,9603,12.646,-155.176,-80.863,,,,,0 +261,15920,4214,4326,"Derived via WGS 72BE. Original transformation derived by GSI in 1980-81. The GSI memo incorrectly gave the parameters as from WGS 72 to Beijing 1954, but it has been determined by the OGP that the memo should have stated from Beijing 1954 to WGS 72BE.",Geophysical exploration in South China Sea.,3470,18.31,22.89,110.13,116.76,1,0,9606,31.4,-144.3,-74.8,0,0,0.814,-0.38,0 +262,15921,4214,4326,Provided by BGP to ELF in 1994.,Geophysical exploration in Tarim basin. Accuracy stated as 1m within basin.,3507,37,41.99,77.45,88,1,0,9603,15.8,-154.4,-82.3,,,,,1 +263,15936,4214,4326,Provided by Sinopec to TOTAL in January 2007.,Geophysical exploration in Ordos basin. Accuracy stated as 1m within basin.,3466,35,39,107,110.01,1,0,9603,11.911,-154.833,-80.079,,,,,0 +264,15935,4214,4326,Concatenated via WGS 72BE. Recomputation by Shelltech in 1981 of SSB 1980 observation.,Geophysical exploration in Bei Bu basin. Accuracy stated as 1m within basin.,3561,17.81,21.69,107.15,110.17,1,0,9606,18,-136.8,-73.7,0,0,0.814,-0.38,0 +265,6907,4713,4326,"Derived at 2 stations. Replaces Ayabelle Lighthouse to WGS 84 (1) (code 15800).",For military purposes only. Accuracy 10m in each axis.,3238,10.94,12.72,41.75,43.48,1,0,9603,-77,-128,142,,,,,1 +266,15800,4713,4326,"Derived at 1 satellite station. Replaced by Ayabelle Lighthouse to WGS 84 (2) (code 6907).",For military purposes only. Accuracy 25m in each axis.,1081,10.94,12.72,41.75,44.15,1,0,9603,-79,-129,145,,,,,0 +267,1124,4216,4326,Derived at 3 stations.,For military purposes. Accuracy 20m in each axis.,3221,32.21,32.43,-64.89,-64.61,1,0,9603,-73,213,296,,,,,1 +268,15970,4216,4326,"Parameter values from Bermuda 1957 to BDA2000 (1) (code 15969). Assumes BDA2000 and WGS 84 can be considered the same to within the accuracy of the transformation.","Accuracy +/- 1 metre.",3221,32.21,32.43,-64.89,-64.61,1,0,9607,-292.295,248.758,429.447,-4.9971,-2.99,-6.6906,1.0289,0 +269,15819,4729,4326,Derived at 1 satellite station.,"Military and topographic mapping. Accuracy +/- 25 m in each axis.",3208,-25.14,-25,-130.16,-130.01,1,0,9603,185,165,42,,,,,1 +270,1125,4218,4326,Derived in 1987 at 7 stations.,"For military purposes. Accuracy 6m, 5m and 6m in X, Y and Z axes.",3686,-4.23,13.68,-79.1,-66.87,1,0,9603,307,304,-318,,,,,1 +271,1597,4218,4326,Derived in 1995 by WGC at first order stations Recreo and Mena via multi-day ties to 4 IGS stations. Residuals under 20cm.,Oil exploration.,2315,4.75,5.68,-73,-72.25,1,0,9603,304.5,306.5,-318.1,,,,,0 +272,15715,4218,4326,"Approximation at the +/- 1m level assuming that MAGNA-SIRGAS is equivalent to WGS 84. Parameter values taken from Bogota 1975 to MAGNA-SIRGAS (1) (tfm code 15714).","Accuracy about 1 part in 10^5 of distance between points, depending on relative tectonic motion.",3082,9.8,12.52,-73,-71.06,1,0,9607,-806.413,-263.5,-622.671,12.414219,-2.9908418,-39.034686,-20.81616,0 +273,15717,4218,4326,"Approximation at the +/- 1m level assuming that MAGNA-SIRGAS is equivalent to WGS 84. Parameter values taken from Bogota 1975 to MAGNA-SIRGAS (2) (tfm code 15716).","Accuracy about 1 part in 10^5 of distance between points, depending on relative tectonic motion.",3083,9.39,11.59,-76.08,-73,1,0,9607,100.783,187.382,-47,-9.2238300,2.4238033,-8.3082783,-13.56561,0 +274,15719,4218,4326,"Approximation at the +/- 1m level assuming that MAGNA-SIRGAS is equivalent to WGS 84. Parameter values taken from Bogota 1975 to MAGNA-SIRGAS (3) (tfm code 15718).","Accuracy about 1 part in 10^5 of distance between points, depending on relative tectonic motion.",3084,8,9.4,-77.48,-74.39,1,0,9607,336.026,348.565,252.978,-17.241289,-6.3064928,1.5620498,-5.771909,0 +275,15721,4218,4326,"Approximation at the +/- 1m level assuming that MAGNA-SIRGAS is equivalent to WGS 84. Parameter values taken from Bogota 1975 to MAGNA-SIRGAS (4) (tfm code 15720).","Accuracy about 1 part in 10^5 of distance between points, depending on relative tectonic motion.",3085,5,9.4,-74.4,-71.99,1,0,9607,963.273,486.386,190.997,-16.485036,-1.6688258,21.692849,-13.89914,0 +276,15723,4218,4326,"Approximation at the +/- 1m level assuming that MAGNA-SIRGAS is equivalent to WGS 84. Parameter values taken from Bogota 1975 to MAGNA-SIRGAS (5) (tfm code 15722).","Accuracy about 1 part in 10^5 of distance between points, depending on relative tectonic motion.",3086,5,8.01,-77.92,-74.39,1,0,9607,-90.29,247.559,-21.989,-8.6968853,-4.1880336,-12.808267,2.181658,0 +277,15725,4218,4326,"Approximation at the +/- 1m level assuming that MAGNA-SIRGAS is equivalent to WGS 84. Parameter values taken from Bogota 1975 to MAGNA-SIRGAS (6) (tfm code 15724).","Accuracy about 1 part in 10^5 of distance between points, depending on relative tectonic motion.",3087,3,5.01,-77.68,-74.39,1,0,9607,-0.562,244.299,-456.938,6.8668710,-8.2526735,-9.2967797,3.74656,0 +278,15727,4218,4326,"Approximation at the +/- 1m level assuming that MAGNA-SIRGAS is equivalent to WGS 84. Parameter values taken from Bogota 1975 to MAGNA-SIRGAS (7) (tfm code 15726).","Accuracy about 1 part in 10^5 of distance between points, depending on relative tectonic motion.",3088,-1.13,3.01,-79.1,-74,1,0,9607,-305.356,222.004,-30.023,-9.6904939,1.0319682,-19.757394,6.325747,0 +279,15729,4218,4326,"Approximation at the +/- 1m level assuming that MAGNA-SIRGAS is equivalent to WGS 84. Parameter values taken from Bogota 1975 to MAGNA-SIRGAS (8) (tfm code 15728).","Accuracy about 1 part in 10^5 of distance between points, depending on relative tectonic motion.",3089,-4.23,7.1,-74.4,-66.87,1,0,9607,221.899,274.136,-397.554,2.8084459,-0.44850859,-2.810172,-2.199943,0 +280,1126,4219,4326,Accuracy estimate not available.,For military purposes.,1287,-3.3,-1.44,105.07,108.35,1,0,9603,-384,664,-48,,,,,1 +281,1318,4220,4326,,Used for oil exploration by Conoco.,2316,-8.59,-7.75,12.58,13.4,1,0,9603,-42.01,-332.21,-229.75,,,,,0 +282,1319,4220,4326,,Used for oil exploration by Texaco.,2317,-7.01,-6.01,12.08,12.84,1,0,9603,-40,-354,-224,,,,,0 +283,1320,4220,4326,"Replaced by Camacupa to WGS 84 (9). Used by Shell prior to 1994.",Oil exploration prior to 1994.,2321,-7.26,-6.03,11.08,12.09,1,0,9606,-37.2,-370.6,-224,0,0,0.554,0.219,0 +284,1321,4220,4326,"Derived as mean of 123 Transit passes at station Cabo Ledo NE base in November 1990. Used by Elf for block 7 up to December 1992 then replaced by Camacupa to WGS 84 (7). Used by Total in block 8, ExxonMobil block 24, Western Geophysical for spec. data.",Oil exploration.,2320,-17.26,-6.01,8.2,13.86,1,0,9603,-41.8,-342.2,-228.2,,,,,0 +285,1322,4220,4326,"Derived at station Djeno during coordination of platform PAL F2 in February 1992. Used by Elf for block 3 up to December 1992 then replaced by Camacupa to WGS 84 (7).",Oil exploration.,2318,-7.34,-6.66,11.74,12.5,1,0,9603,-55.5,-348,-229.2,,,,,0 +286,1323,4220,4326,Derived at Luanda observatory December 1992.,Used for oil exploration by Elf for 1993 block 7 shallow water survey.,2319,-10.09,-9.41,12.66,13.39,1,0,9603,-43,-337,-233,,,,,0 +287,1324,4220,4326,"Derived at platform PAL F2 in December 1992. For use in blocks 3, 7 and 17, replaced by Camacupa to WGS 84 (10) (code 1327).","Used for oil exploration by Elf for blocks 3, 7 and 17 between December 1992 and 1994 then superseded by Camacupa to WGS 84 (10). Used by Exxon for block 15 since 1993.",2322,-10.09,-6.03,10.83,13.39,1,0,9603,-48,-345,-231,,,,,0 +288,1325,4220,4326,"Derived at platform PAL F2 in December 1992. Used by Total for block 2 between December 1992 and 1994 then replaced by Camacupa to WGS 84 (10).",Oil exploration between December 1992 and 1994.,2317,-7.01,-6.01,12.08,12.84,1,0,9603,-48.6,-345.1,-230.8,,,,,0 +289,1326,4220,4326,"Derived by GPS on two Topnav DGPS reference stations at Djeno and Luanda. Replaces Camacupa to WGS 84 (3). In block 18 replaced by BP from 1999 by Camacupa to WGS 84 (10).",Used by Shell since 1994.,2323,-8.34,-6.03,11.08,12.75,1,0,9606,-41.057,-374.564,-226.287,0,0,0.554,0.219,0 +290,1327,4220,4326,Derived at platform PAL F2 in 1994 by Topnav using Doris.,Used for oil exploration by Elf in blocks 3 and 17 since 1994. Used by Total in block 2 since 1994. Adopted by BP-Amoco Elf and Exxon for blocks 18 and 31-33 in 1999.,2324,-8.59,-6.01,10.41,12.84,1,0,9603,-50.9,-347.6,-231,,,,,1 +291,1127,4221,4326,Derived at 20 stations.,For military purposes. Accuracy 5m in each axis.,3843,-54.93,-21.78,-73.59,-53.65,1,0,9603,-148,136,90,,,,,1 +292,1527,4221,4326,"Derived through ties at 2 stations (Cerro Colorado and Chihuido Sur) to 4 IGS stations in February 1995",Oil exploration.,2325,-37.5,-36.14,-70.5,-70.03,1,0,9603,-154.5,150.7,100.4,,,,,0 +293,1128,4222,4326,Derived at 5 stations.,"For military purposes. Accuracy 3m, 6m and 6m in X, Y and Z axes.",3309,-34.88,-22.13,16.45,32.95,1,0,9603,-136,-108,-292,,,,,1 +294,1129,4222,4326,"Parameter values are from Cape to Hartebeesthoek94 (1) (code 1504) assuming that Hartebeesthoek94 and WGS 84 are equivalent within the accuracy of the transformation. Residuals should not exceed 15 metres.",Accuracy 15m.,3309,-34.88,-22.13,16.45,32.95,1,0,9603,-134.73,-110.92,-292.66,,,,,0 +295,1130,4223,4326,Derived at 5 stations.,"For military purposes. Accuracy 6m, 9m and 8m in X, Y and Z axes.",1236,30.23,38.41,7.49,13.67,1,0,9603,-263,6,431,,,,,1 +296,1538,4223,4326,Derived at station Chaffar January 1995.,Oil exploration.,1489,33.22,38.41,7.81,13.67,1,0,9603,-260.1,5.5,432.2,,,,,0 +297,1131,4224,4326,Derived at 6 stations.,"For military purposes. Accuracy 6m, 9m and 5m in X, Y and Z axes.",3675,-22,-19.29,-62.57,-57.81,1,0,9603,-134,229,-29,,,,,0 +298,3972,4224,4326,"Mandatory for SICAD use until 2005. Replaced by Chua to SIRGAS 2000 (tfm code 4069).","Used by governmental agencies in Distrito Federal until adoption of SIRGAS 2000 by Brazil in 2005. Legally mandated for Cartography System of Distrito Federal (SICAD) until 2005.",3619,-15.94,-15.37,-48.1,-47.1,1,0,9603,-143.87,243.37,-33.52,,,,,1 +299,4834,4224,4326,"Parameter values from Chua to SIRGAS 2000 (1) (tfm code 4069) assuming that within the tfm accuracy SIRGAS 2000 is equivalent to WGS 84.","Cartography System of Distrito Federal (SICAD)",3619,-15.94,-15.37,-48.1,-47.1,1,0,9603,-144.35,242.88,-33.2,,,,,0 +300,1132,4225,4326,Derived at 17 stations.,"For military purposes. Accuracy 5m, 3m and 5m in X, Y and Z axes.",1293,-33.78,-2.68,-58.16,-34.74,1,0,9603,-206,172,-6,,,,,0 +301,6192,4225,4326,"Formed by concatenation of tfms codes 6191 and 1877. Used by Petrobras and ANP until February 2005 when replaced by Corrego Alegre 1970-72 to WGS 84 (4) (tfm code 6194).",Medium and small scale mapping.,1293,-33.78,-2.68,-58.16,-34.74,1,0,9603,-205.57,168.77,-4.12,,,,,1 +302,6194,4225,4326,"Parameter values from Corrego Alegre to SIRGAS 2000 (2) (tfm code 6193) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Used by ANP and Petrobras from February 2005, replacing use of tfm code 6192.",Medium and small scale mapping.,1293,-33.78,-2.68,-58.16,-34.74,1,0,9603,-206.05,168.28,-3.82,,,,,0 +303,1585,4227,4326,,"?",1227,32.31,37.3,34.96,42.38,1,1,9603,-177.5,14.1,237.6,,,,,0 +304,1586,4227,4326,"Derived in 1995 by CGG for Al Furat Petroleum Company. Can be approximated using geocentric translations of dX=-174.3m, dY=+14.1m, dZ=+237.6m.",Oil exploration.,2327,35.33,35.9,39.15,40.41,1,0,9606,-175.09,1.218,238.831,-0.047,0.019,0.808,0.1698,0 +305,1587,4227,4326,Derived at four stations by Topnav in 1997.,Oil exploration.,2328,35.79,36.5,40.5,41.39,1,0,9603,-191.77,15.01,235.07,,,,,0 +306,15741,4227,4326,Derived by Elf in 1991 from tfm code 1584 concatenated with a tfm from WGS72BE to WGS84.,Oil exploration. Accuracy 5m.,2329,34.49,35.9,39.3,40.81,1,0,9603,-187.5,14.1,237.6,,,,,0 +307,15742,4227,4326,Derived for 1998 Omar seismic survey and used in 2000 for El Isba seismic survey.,Oil exploration. Accuracy 5m.,3314,32.31,37.3,35.61,42.38,1,0,9603,-190.421,8.532,238.69,,,,,1 +308,15743,4227,4326,"Derived 2005 at 5 triangulation stations and using (EGM96 geoid model +1.15m). Used by Total/DEZPC for Jafra and Mazraa seismic surveys. Can be approximated using geocentric translations of dX=-190.6m, dY=+8.8m, dZ=+239.6m.",Oil exploration. Accuracy 0.5m.,2329,34.49,35.9,39.3,40.81,1,0,9606,-83.58,-397.54,458.78,-17.595,-2.847,4.256,3.225,0 +309,1244,4740,4326,"Mandated for use in Russia by GosStandard of Russia Decree #327 of August 9, 2001. Republished but with one significant figure less precision to parameter values in GOST R 51794-2008 of December 18 2008.",Geodetic applications. Accuracy better than 0.5 metre.,1198,39.87,85.2,18.92,-168.97,1,0,9607,-1.08,-0.27,-0.9,0,0,-0.16,-0.12,0 +310,15843,4740,4326,"Derived through Glonass and GPS at 30 stations throughout USSR - Former Soviet Union (FSU).",Geodetic applications. Accuracy better than 1.5 metres.,1262,-90,90,-180,180,1,0,9607,0,0,1.5,0,0,-0.076,0,1 +311,1148,4229,4326,Derived at 14 stations.,"For military purposes. Accuracy 3m, 6m and 8m in X, Y and Z axes.",1086,21.89,33.82,24.7,37.91,1,0,9603,-130,110,-13,,,,,1 +312,1546,4229,4326,,Used for oil exploration by GUPCO.,2341,27.19,30.01,32.34,34.27,1,1,9603,-146.21,112.63,4.05,,,,,0 +313,1075,4230,4326,"Derived in 1987 by Geodetic for TPAO. Used on BP 1991/92 2D seismic surveys in central and eastern Turkish sector of Black Sea. In Turkey, replaced by tfm code 1784. Also adopted for use offshore Israel.",Oil Exploration,2896,31.35,43.45,28.03,41.47,1,0,9603,-89.05,-87.03,-124.56,,,,,0 +314,1087,4230,4326,,Topographic mapping.,1130,29.18,33.38,34.88,39.31,1,0,9603,-112,-110.3,-140.2,,,,,0 +315,1133,4230,4326,Derived at 85 stations. In Germany will be accepted by LBA for minerals management purposes as alternative to tfm 1052 or 1998.,"For military purposes. Accepted for minerals management in Germany. Accuracy 3m, 8m and 5m in X, Y and Z axes.",2420,34.88,71.21,-9.56,31.59,1,0,9603,-87,-98,-121,,,,,1 +316,1134,4230,4326,Derived at 52 stations.,For military purposes only. Accuracy 3m each axis.,2421,42.33,57.8,-4.87,17.17,1,0,9603,-87,-96,-120,,,,,0 +317,1135,4230,4326,Accuracy estimate not available.,For military purposes only.,2345,15.61,37.39,34.17,55.67,1,0,9603,-103,-106,-141,,,,,0 +318,1136,4230,4326,Derived at 4 stations.,For military purposes only. Accuracy 15m in each axis.,1078,32.88,36.21,29.95,35.2,1,0,9603,-104,-101,-140,,,,,0 +319,1137,4230,4326,Derived at 14 stations.,"For military purposes. Accuracy 6m, 8m and 8m in X, Y and Z axes.",2595,25.71,31.68,24.7,30,1,0,9603,-130,-117,-151,,,,,0 +320,1138,4230,4326,Derived at 40 stations.,For military purposes only. Accuracy 3m in each axis.,2343,49.11,60.9,-10.56,1.84,1,0,9603,-86,-96,-120,,,,,0 +321,1139,4230,4326,Derived at 20 stations.,"For military purposes. Accuracy 3m, 5m and 3m in X, Y and Z axes.",2344,57.93,71.21,4.68,31.59,1,0,9603,-87,-95,-120,,,,,0 +322,1140,4230,4326,Derived at 2 stations.,For military purposes only. Accuracy 25m in each axis.,3254,34.88,41.75,19.57,28.3,1,0,9603,-84,-95,-130,,,,,0 +323,1142,4230,4326,Derived at 2 stations.,For military purposes only. Accuracy 25m in each axis.,2339,38.82,41.31,8.08,9.89,1,0,9603,-97,-103,-120,,,,,0 +324,1143,4230,4326,Derived at 3 stations.,For military purposes only. Accuracy 20m in each axis.,2340,36.59,38.35,12.36,15.71,1,0,9603,-97,-88,-135,,,,,0 +325,1144,4230,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,3275,35.74,36.05,14.27,14.63,1,0,9603,-107,-88,-149,,,,,0 +326,1145,4230,4326,Derived at 18 stations.,"For military purposes only. Accuracy 5m, 6m and 3m in X, Y and Z axes.",2338,35.26,43.82,-9.56,3.39,1,0,9603,-84,-107,-120,,,,,0 +327,1245,4230,4326,Derived at 4 stations.,For military purposes only. Accuracy 25m in each axis.,1236,30.23,38.41,7.49,13.67,1,0,9603,-112,-77,-145,,,,,0 +328,1275,4230,4326,"These same parameter values are used to transform to ETRS89. See ED50 to ETRS89 (10) (code 1650).",For applications to an accuracy of 2 metres.,1096,41.15,51.56,-9.86,10.38,1,0,9603,-84,-97,-117,,,,,0 +329,1311,4230,4326,"Based on ED50 to WGS72 (precise ephemeris) 6-nations agreement of 1981 to which precise to broadcast and broadcast to WGS 84 transformations have been concatenated.",Recommended transformation for UKCS and IrishCS petroleum purposes.,2342,47.42,63.89,-16.1,10.86,1,0,9606,-89.5,-93.8,-123.1,0,0,-0.156,1.2,0 +330,1440,4230,4326,,Used in oil industry.,3254,34.88,41.75,19.57,28.3,1,0,9603,-86,-92.2,-127.5,,,,,0 +331,1612,4230,4326,"Parameter values are taken from ED50 to ETRS89 (1), code 1588. Adopted for ED50 to WGS84 transformations offshore Norway north of 62N from April 2001 when it replaced code 1590. Included in Statens Kartverk programme wsktrans from v4.0.",Oil industry offshore.,2601,62,84.17,-3.7,39.65,1,0,9606,-116.641,-56.931,-110.559,0.893,0.921,-0.917,-3.52,0 +332,1613,4230,4326,"Approximation to 1 metre of concatenated transformation ED50 to WGS 84 (14), code 8653. 8653 remains the transformation promulgated by Statens Kartverk but 1613 recommended by EPSG for practical oil industry usage.",Approximation to 1 metre for oil industry use.,2334,56.08,62,1.37,11.14,1,0,9606,-90.365,-101.13,-123.384,0.333,0.077,0.894,1.994,0 +333,1627,4230,4326,"Parameter values from ED50 to ETRS89 (4) (code 1626). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,3237,54.51,57.8,8,15.24,1,0,9606,-81.1,-89.4,-115.8,0.485,0.024,0.413,-0.54,0 +334,1629,4230,4326,"Parameter values from ED50 to ETRS89 (5) (code 1628). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1105,36,36.16,-5.42,-4.89,1,0,9603,-116.8,-106.4,-154.4,,,,,0 +335,1631,4230,4326,"Parameter values from ED50 to ETRS89 (6) (code 1630). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1.5 metres.,2335,38.59,40.11,1.14,4.39,1,0,9606,-181.5,-90.3,-187.2,0.144,0.492,-0.394,17.57,0 +336,1633,4230,4326,"Parameter values from ED50 to ETRS89 (7) (code 1632). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1.5 metres.,2336,35.26,43.56,-7.54,3.39,1,0,9606,-131,-100.3,-163.4,-1.244,-0.02,-1.144,9.39,0 +337,1635,4230,4326,"Parameter values from ED50 to ETRS89 (8) (code 1634). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1.5 metres.,2337,41.5,43.82,-9.37,-4.5,1,0,9606,-178.4,-83.2,-221.3,0.54,-0.532,-0.126,21.2,0 +338,1784,4230,4326,"Parameter values from ED50 to ETRS89 (9) (code 1783). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 2 metres.,1237,34.42,43.45,25.62,44.83,1,0,9606,-84.1,-101.8,-129.7,0,0,0.468,1.05,0 +339,1810,4230,4326,Derived via concatenation through WGS72. The ED50 to WGS72 step is the Sepplin 1974 value for all Europe.,Oil industry exploration and production operations.,2595,25.71,31.68,24.7,30,1,0,9606,-84,-103,-122.5,0,0,0.554,0.2263,0 +340,1853,4230,4326,Derived at a single point in Galway docks.,Used by Enterprise for Corrib.,2961,53.75,55.76,-12.5,-9.49,1,0,9603,-82.31,-95.23,-114.96,,,,,0 +341,1961,4230,4326,"Parameter values taken from ED87 to WGS 84 (2) (tfm code 1960) assuming that ED87 is identical to ED50. Errors caused by this assumption can reach 3m.",Used by NAM for offshore operations.,1630,51.45,55.77,2.53,6.41,1,1,9606,-83.11,-97.38,-117.22,0.005693,-0.04469,0.4428,1.218,0 +342,1985,4230,4326,May be taken as a transformation from ED50 to ETRS89 - see tfm code 5040.,For low resolution applications.,1294,36.95,42.16,-9.56,-6.19,1,0,9603,-87.987,-108.639,-121.593,,,,,0 +343,1989,4230,4326,,For medium resolution applications.,1294,36.95,42.16,-9.56,-6.19,1,0,9607,-74.292,-135.889,-104.967,0.524,0.136,-0.61,-3.761,0 +344,1998,4230,4326,"Approximation to better than 0.5m of transformation adopted in June 2003 (see ED50 to WGS 84 (35), code 1052). Acceptable to Landesbergamt for Lower Saxony and Bundesanstalt für Seeschifffahrt und Hydrographie.",Recommended transformation for Germany North Sea petroleum purposes.,2879,53.6,55.92,3.34,8.88,1,0,9606,-157.89,-17.16,-78.41,2.118,2.697,-1.434,-5.38,0 +345,1999,4230,4326,"Parameter values taken from ED87 to WGS 84 (2) (tfm code 1960) assuming that ED87 is identical to ED50. Errors caused by this assumption can reach 3m.",Used by NAM for offshore operations.,1630,51.45,55.77,2.53,6.41,1,1,9606,-83.11,-97.38,-117.22,0.005693,-0.04469,0.04428,1.218,0 +346,3904,4230,4326,"Parameter values from ED87 to WGS 84 (32) (tfm code 3905), assuming that ED87 is identical to ED50. Errors caused by this assumption can reach 3-5m. Used by NAM for offshore operations until mid 2004, then replaced by tfm code 1311.","E&P operations in the Dutch sector of the North Sea.",1630,51.45,55.77,2.53,6.41,1,0,9606,-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218,0 +347,15964,4230,4326,Developed by the Portuguese Hydrographic Institute and used by the Directorate of Energy and Geology.,Hydrography and minerals management offshore Portugal.,3537,34.91,41.88,-13.87,-7.24,1,0,9603,-86.277,-108.879,-120.181,,,,,0 +348,1146,4231,4326,,"?",2330,51.03,62.01,-5.05,11.14,1,0,9606,-82.981,-99.719,-110.709,-0.10470,0.031002,0.080402,-0.3143,0 +349,1960,4231,4326,,Scientific research.,1297,34.88,71.21,-10.56,31.59,1,1,9606,-83.11,-97.38,-117.22,0.005693,-0.04469,0.04428,1.218,0 +350,3905,4231,4326,"Parameter values taken from ED87 to ETRS89 (1) (tfm code 4078) assuming that ETRS89 is coincident with WGS 84 within the accuracy of the transformation. Used as a tfm between ED50 and WGS 84 - see code 3904.",Scientific research.,1297,34.88,71.21,-10.56,31.59,1,0,9606,-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218,1 +351,1256,4232,4326,"Derived at 7 stations. Replaced by Fahud to WGS 84 (3) (code 6908).","For military purposes. Accuracy 3m, 3m and 9m in X, Y and Z axes.",4009,16.59,26.42,51.99,59.91,1,0,9603,-346,-1,224,,,,,0 +352,1438,4232,4326,,Oil exploration.,4009,16.59,26.42,51.99,59.91,1,0,9606,-333.102,-11.02,230.69,0,0,0.554,0.219,1 +353,6908,4232,4326,"Derived at 11 stations. Replaces Fahud to WGS 84 (1) (code 1256).","For military purposes. Accuracy 3m, 3m and 6m in X, Y and Z axes.",4009,16.59,26.42,51.99,59.91,1,0,9603,-345,3,223,,,,,0 +354,1894,4233,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,1152,-3.47,8.1,69.29,77.08,1,1,9603,-133,-321,50,,,,,0 +355,7033,4744,4326,Derived by concatenation of parameter values published by IGN Paris from Nahrwan 1934 to WGS 72 at the Nahrwan SE Base station near Baghdad with DMA WGS 72 to WGS 84 parameter values. For more accurate transformation away from origin see codes 7008-7032.,Oil exploration.,3625,29.06,37.39,38.79,48.61,1,0,9603,-242.2,-144.9,370.3,,,,,1 +356,15879,4747,4326,"Approximation at the +/- 1m level assuming that GR96 is equivalent to WGS 84 within the accuracy of the transformation.","For applications with an accuracy of +/- 1m.",1107,56.38,87.03,-75,8.12,1,0,9603,0,0,0,,,,,1 +357,1152,4236,4326,Derived at 4 stations.,For military purposes. Accuracy 15m in each axis.,3315,21.87,25.34,119.25,122.06,1,0,9603,-637,-549,-203,,,,,1 +358,1242,4237,4326,"Parameter value error in info source Hungarian text but correct in English summary. Replaces HD72 to WGS 84 (2) (code 1831).",Accuracy at metre level throughout Hungary.,1119,45.74,48.58,16.11,22.9,1,0,9603,52.17,-71.82,-14.9,,,,,1 +359,1448,4237,4326,"Parameter values taken from HD72 to ETRS89 (2) (code 1449) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Replaces HD72 to WGS 84 (1) (code 1830).","Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.",1119,45.74,48.58,16.11,22.9,1,0,9607,52.684,-71.194,-13.975,0.312,0.1063,0.3729,1.0191,0 +360,1677,4237,4326,"Parameter values taken from HD72 to ETRS89 (1) (code 1273) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation.","Approximation at the +/- 1m level.",1119,45.74,48.58,16.11,22.9,1,1,9607,56,75.77,15.31,-0.37,-0.2,-0.21,-1.01,0 +361,1830,4237,4326,"Parameter values taken from HD72 to ETRS89 (1) (code 1829) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. OGP recommends use of newer MSZ 7222 equivalent (tfm code 1448) in preference to this transformation.","Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.",1119,45.74,48.58,16.11,22.9,1,0,9607,56,-75.77,-15.31,0.37,0.2,0.21,1.01,0 +362,1831,4237,4326,"Derived at fundamental point Szolohegy and tested at 99 stations throughout Hungary. OGP recommends use of newer transformation (tfm code 1242) in preference to this transformation.",Accuracy better than 1m in all three dimensions throughout Hungary.,1119,45.74,48.58,16.11,22.9,1,0,9603,57.01,-69.97,-9.29,,,,,0 +363,1248,4238,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,4020,-10.98,5.97,95.16,141.01,1,0,9603,-24,-15,5,,,,,1 +364,1832,4238,4326,"Derived via coordinates of 2 Pulse8 stations. Use of ID74 to WGS 84 (3) (code 1833) is recommended.",For oil industry purposes.,4020,-10.98,5.97,95.16,141.01,1,0,9606,2.691,-14.757,4.724,0,0,0.774,-0.6,0 +365,1833,4238,4326,"Parameter values from ID74 to DGN95 (1) (code 15911) assuming that DGN95 is equivalent to WGS 84 within the accuracy of the transformation.","Standard deviations of translations are 1.3, 1.1 and 3.6m, of rotations 0.11, 0.06 and 0.04 sec and ppm 0.18.",4020,-10.98,5.97,95.16,141.01,1,0,9607,-1.977,-13.06,-9.993,-0.364,-0.254,-0.689,-1.037,0 +366,1153,4239,4326,Derived at 11 stations.,"For military purposes. Accuracy 15m, 6m and 12m in X, Y and Z axes.",3317,5.63,20.46,97.34,105.64,1,0,9603,217,823,299,,,,,1 +367,1154,4240,4326,"Derived at 62 stations. Replaced by Indian 1975 to WGS 84 (2) (code 1304).","For military purposes. Accuracy 3m, 2m and 3m in X, Y and Z axes.",3741,5.63,20.46,97.34,105.64,1,0,9603,209,818,290,,,,,0 +368,1304,4240,4326,"Derived at 62 stations. Replaces Indian 1975 to WGS 84 (1) (code 1154).","For military purposes. Accuracy 3m, 2m and 3m in X, Y and Z axes.",3741,5.63,20.46,97.34,105.64,1,0,9603,210,814,289,,,,,1 +369,1537,4240,4326,Derived in 1995 at point RTSD181.,Oil exploration.,2358,6.74,8.16,102.16,103.05,1,0,9603,204.64,834.74,293.8,,,,,0 +370,1812,4240,4326,,Cadastral survey.,3317,5.63,20.46,97.34,105.64,1,0,9606,293,836,318,0.5,1.6,-2.8,2.1,0 +371,1084,4242,4326,Derived via NAD27 and WGS 72. Preliminary values derived by Survey Department but not officially promulgated.,For applications requiring 5m accuracy.,3342,17.64,18.58,-78.43,-76.17,1,0,9603,70,207,389.5,,,,,1 +372,1085,4242,4326,"Derived at 4 stations, tested at a further 9.",For applications requiring 2m accuracy.,3342,17.64,18.58,-78.43,-76.17,1,0,9603,65.334,212.46,387.63,,,,,0 +373,1086,4242,4326,"Derived at 4 stations, tested at a further 9.",For applications requiring 1m accuracy.,3342,17.64,18.58,-78.43,-76.17,1,1,9607,-33.722,153.789,94.959,8.581,4.478,-4.54,-8.95,0 +374,15927,4242,4326,"Derived at 4 stations, tested at a further 9. Also used as tfm to JAD69 to JAD2001 (see code 15926). +Note: Info source paper contains an error in sign of dS, subsequently confirmed by primary author and NLA of Jamaica, and corrected in this record.",For applications requiring 1m accuracy.,3342,17.64,18.58,-78.43,-76.17,1,0,9607,-33.722,153.789,94.959,8.581,4.478,-4.54,8.95,0 +375,1930,4642,4326,,"Accuracy better than +/- 1 metre.",2820,-22.73,-22.49,167.36,167.61,1,1,9606,244.416,85.339,168.114,-8.9353,7.7523,12.5953,14.268,0 +376,15848,4642,4326,,"Accuracy +/- 10 metres.",2820,-22.73,-22.49,167.36,167.61,1,0,9603,-13,-348,292,,,,,1 +377,1157,4244,4326,Derived at 3 stations.,For military purposes. Accuracy 20m in each axis.,3310,5.86,9.88,79.64,81.95,1,0,9603,-97,787,86,,,,,1 +378,1158,4245,4326,Derived at 6 stations.,"For military purposes. Accuracy 10m, 8m and 6m in X, Y and Z axes.",4223,1.13,7.81,99.59,105.82,1,0,9603,-11,851,5,,,,,1 +379,1059,4246,4326,,1 metre accuracy.,3267,28.53,30.09,46.54,48.48,1,0,9603,-294.7,-200.1,525.5,,,,,1 +380,1516,4247,4326,Also used for PSAD56 to WGS 84 transformations.,"Parameter values estimated accuracy: ± 2.0m; ± 2.7m; ± 1.3m respectively.",2363,3.56,10.8,-67.49,-59.8,1,0,9603,-273.5,110.6,-357.9,,,,,1 +381,1201,4248,4326,Derived at 63 stations. DMA also lists Colombia as area of applicability but PSAD56 is not used in that country.,"For military purposes only. Accuracy 17m, 27m and 27m in X, Y and Z axes.",2399,-45,12.52,-81.41,-56.47,1,0,9603,-288,175,-376,,,,,1 +382,1202,4248,4326,Derived at 5 stations.,"For military purposes only. Accuracy 5m, 11m and 14m in X, Y and Z axes.",1049,-22.91,-9.67,-69.66,-57.52,1,0,9603,-270,188,-388,,,,,0 +383,1203,4248,4326,"Derived at 1 station. Replaced by PSAD56 to WGS 84 (15) (code 6971).",For military purposes. Accuracy 25m in each axis.,2402,-21.51,-17.5,-70.49,-68.18,1,0,9603,-270,183,-390,,,,,0 +384,1204,4248,4326,"Derived at 3 stations. Replaced by PSAD56 to WGS 84 (17) (code 6973).",For military purposes. Accuracy 20m in each axis.,2403,-45,-38.99,-75.22,-71.1,1,0,9603,-305,243,-442,,,,,0 +385,1205,4248,4326,"Derived at 4 stations. Note that although the PSAD56 network included Colombia the CRS is not used there: see Bogota 1975 (CRS code 4218).",For military purposes. Accuracy 15m in each axis.,3229,-4.23,12.52,-79.1,-66.87,1,0,9603,-282,169,-371,,,,,0 +386,1206,4248,4326,Derived at 11 stations.,"For military purposes. Accuracy 3m, 5m and 3m in X, Y and Z axes.",3241,-5.01,1.45,-81.03,-75.21,1,0,9603,-278,171,-367,,,,,0 +387,1207,4248,4326,Derived at 9 stations.,"For military purposes. Accuracy 6m, 14m and 5m in X, Y and Z axes.",1114,1.18,10.7,-61.39,-55.77,1,0,9603,-298,159,-369,,,,,0 +388,1208,4248,4326,Derived at 6 stations.,"For military purposes only. Accuracy 6m, 8m and 12m in X, Y and Z axes.",1189,-21.05,-0.03,-84.68,-68.67,1,0,9603,-279,175,-379,,,,,0 +389,1209,4248,4326,Derived at 24 stations.,"For military purposes only. Accuracy 9m, 14m and 15m in X, Y and Z axes.",1251,0.64,16.75,-73.38,-58.95,1,0,9603,-295,173,-371,,,,,0 +390,1582,4248,4326,Derived May 1995 by Geoid for Total. OSU91A geoid model used.,Oil exploration.,2400,-14.43,-13.56,-68.96,-67.79,1,0,9603,-259.73,173.12,-398.27,,,,,0 +391,1583,4248,4326,Derived July 1997 by Geoid from data recorded by UGA for Total. OSU91A geoid model used.,Oil exploration.,2401,-21.71,-21.09,-63.44,-62.95,1,0,9603,-307.7,265.3,-363.5,,,,,0 +392,1811,4248,4326,Used by Petrobras for shelf operations.,Oil industry exploration.,1754,-1.05,5.6,-51.64,-48,1,0,9603,-291.87,106.37,-364.52,,,,,0 +393,3990,4248,4326,"Parameter values from PSAD56 to SIRGAS 1995 (1) (code 3971). Assumes SIRGAS 1995 and WGS 84 can be considered the same to within the accuracy of the transformation.","Suitable for mapping at 1:25,000 scale and smaller.",3241,-5.01,1.45,-81.03,-75.21,1,0,9607,-60.31,245.935,31.008,-12.324,-3.755,7.37,0.447,0 +394,6971,4248,4326,"Derived at 5 stations. Replaces PSAD56 to WGS 84 (3) (code 1203). Also used as a transformation from PSAD56 to SIRGAS-Chile - see code 6949.",For military purposes. Accuracy 10m in each axis.,4231,-26,-17.5,-70.79,-67,1,0,9603,-302,272,-360,,,,,0 +395,6972,4248,4326,Derived at 7 stations. Also used as a transformation from PSAD56 to SIRGAS-Chile - see code 6950.,For military purposes. Accuracy 10m in each axis.,4222,-36,-26,-72.87,-68.28,1,0,9603,-328,340,-329,,,,,0 +396,6973,4248,4326,"Derived at 6 stations. Replaces PSAD56 to WGS 84 (4) (code 1204). Info source gives S limit as 44°S but Chilean IGM states that PSAD56 limit is 43°30'S. Also used as a transformation from PSAD56 to SIRGAS-Chile - see code 6951.",For military purposes. Accuracy 10m in each axis.,4221,-43.5,-35.99,-74.48,-70.39,1,0,9603,-352,403,-287,,,,,0 +397,15967,4761,4326,"Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84. HTRS96 is a regional realisation of ETRS89.","Accuracy +/- 1 metre.",1076,41.62,46.54,13,19.43,1,0,9603,0,0,0,,,,,1 +398,1159,4250,4326,Derived at 8 stations.,"For military purposes. Accuracy 2m, 3m and 2m in X, Y and Z axes.",1104,1.4,11.16,-3.79,2.1,1,0,9603,-130,29,364,,,,,1 +399,1160,4251,4326,Derived at 4 stations.,For military purposes only. Accuracy 15m in each axis.,3270,4.29,8.52,-11.52,-7.36,1,0,9603,-90,40,88,,,,,1 +400,1887,4182,4326,Derived at 3 stations.,For military purposes only. Accuracy 20m in each axis.,1344,39.3,39.77,-31.34,-31.02,1,0,9603,-425,-169,81,,,,,1 +401,1982,4182,4326,Derived at 2 stations in 1999.,For low resolution applications.,1344,39.3,39.77,-31.34,-31.02,1,0,9603,-422.651,-172.995,84.02,,,,,0 +402,1161,4253,4326,Derived at 6 stations.,"For military purposes. Accuracy 8m, 11m and 9m in X, Y and Z axes.",2364,7.75,19.45,116.89,125.88,1,0,9603,-133,-77,-51,,,,,1 +403,1162,4253,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,2365,4.99,10.52,119.76,126.65,1,0,9603,-133,-79,-72,,,,,0 +404,1529,4254,4326,"Derived through ties at 3 stations (RC03, TOTAL11 and MP12) to 3 IGS stations in November 1995",Oil exploration.,2357,-55.11,-52.59,-68.64,-63.73,1,0,9606,18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013,0 +405,1892,4254,4326,Derived at 2 stations. As the source CRS was used for the border survey this transformation is probably also applicable to adjacent areas of Argentina.,Accuracy 25m in each axis.,2805,-55.96,-51.99,-74.83,-66.33,1,0,9603,16,196,93,,,,,1 +406,1246,4255,4326,Accuracy estimate not available.,For military purposes only.,1024,29.4,38.48,60.5,74.92,1,0,9603,-333,-222,114,,,,,1 +407,1164,4256,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,2369,-4.86,-4.5,55.3,55.59,1,0,9603,41,-220,-134,,,,,1 +408,1549,4208,4326,,Oil exploration.,2307,-28.41,-17.59,-48.8,-35.18,1,1,9603,-158,315,-148,,,,,0 +409,1550,4208,4326,"Replaced by Aratu to WGS 84 (18) (tfm code 5061) which Petrobras now recommends for the area.",Oil exploration.,2308,-9.8,-8.39,-39.04,-37.09,1,0,9603,-139.62,290.53,-150.29,,,,,0 +410,1551,4208,4326,"Replaced by Aratu to WGS 84 (18) (tfm code 5061) which Petrobras now recommends for the area.",Oil exploration.,2309,-10.61,-9.79,-39.14,-37.99,1,0,9603,-141.15,293.44,-150.56,,,,,0 +411,1552,4208,4326,"Replaced by Aratu to WGS 84 (18) (tfm code 5061) which Petrobras now recommends for the area.",Oil exploration.,2310,-12.27,-10.6,-39.07,-37.98,1,0,9603,-142.48,296.03,-149.74,,,,,0 +412,10089,4208,4326,"Used by ExxonMobil for block BMS1. See WGS 84 (13) (tfm code 5051) which Petrobras now recommends for the area.",Oil exploration.,2962,-28.41,-22.66,-48.8,-40.2,1,0,9603,-163.466,317.396,-147.538,,,,,0 +413,10090,4208,4326,"Used by ExxonMobil for block BC10. Derived from earlier Shell position vector tfm of dX = -181m, dY = +294m, dZ = -144.5m, rX = rY = 0, rZ = +0.554s, dS = +0.219 ppm. See Aratu to WGS 84 (14) (tfm code 5053) which Petrobras now recommends for the area.",Oil exploration.,2963,-25.91,-20.45,-42.04,-37.11,1,0,9603,-170,305,-145,,,,,0 +414,10091,4208,4326,"Used by ExxonMobil for block BMES1. See Aratu to WGS 84 (15) (tfm code 5055) which Petrobras now recommends for the area.",Oil exploration.,2964,-22.04,-17.59,-40.37,-35.18,1,0,9603,-162.904,312.531,-137.109,,,,,0 +415,10092,4208,4326,"Used by ExxonMobil for block BP1. Also used by BG as part of a concatenated tfm to SAD69 for offshore regional studies. See WGS 84 (13) (tfm code 5051) for transformation Petrobras now recommends for the area.",Oil exploration.,2965,-35.71,-28.11,-53.38,-44.71,1,0,9603,-158,309,-151,,,,,0 +416,10093,4208,4326,"Used by ExxonMobil for offshore regional studies. See Aratu to WGS 84 (13) through (21) (tfm codes 5051-67 [odd numbers only]) which Petrobras now recommends for various areas.",Oil exploration.,2966,-34,-18,-53.38,-35.19,1,0,9603,-161,308,-142,,,,,0 +417,10094,4208,4326,Derived by IGN in 1992 at 7 stations within Nouakchott city.,Oil exploration.,2972,17.89,18.25,-16.11,-15.83,1,1,9603,124.5,-63.5,-281,,,,,0 +418,15710,4208,4326,"Replaced by Aratu to WGS 84 (14) (tfm code 5053) which Petrobras now recommends for the area.",Oil exploration.,2963,-25.91,-20.45,-42.04,-37.11,1,0,9603,-160,315,-142,,,,,0 +419,15711,4208,4326,"Replaced by Aratu to WGS 84 (13) (tfm code 5051) which Petrobras now recommends for the area.",Oil exploration.,2962,-28.41,-22.66,-48.8,-40.2,1,0,9603,-158,309,-147,,,,,0 +420,15712,4208,4326,"Replaced by Aratu to WGS 84 (15) (tfm code 5055) which Petrobras now recommends for the area.",Oil exploration.,2964,-22.04,-17.59,-40.37,-35.18,1,0,9603,-161,310,-145,,,,,0 +421,5051,4208,4326,"Parameters from Aratu to SIRGAS 2000 (1) (tfm code 5050) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Petrobras preferred parameters for all purposes in the area. Replaces tfm codes 15711 and 15734.",Oil exploration.,3700,-35.71,-22.66,-53.38,-40.2,1,0,9603,-157.84,308.54,-146.6,,,,,0 +422,5053,4208,4326,"Parameters from Aratu to SIRGAS 2000 (2) (tfm code 5052) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Petrobras preferred parameters for all purposes in the area. Replaces tfm codes 15710 and 15754.",Oil exploration.,2963,-25.91,-20.45,-42.04,-37.11,1,0,9603,-160.31,314.82,-142.25,,,,,0 +423,5055,4208,4326,"Parameters from Aratu to SIRGAS 2000 (3) (tfm code 5054) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Petrobras preferred parameters for all purposes in the area. Replaces tfms 15712 and 15754.",Oil exploration.,2964,-22.04,-17.59,-40.37,-35.18,1,0,9603,-161.11,310.25,-144.64,,,,,0 +424,5057,4208,4326,"Parameters from Aratu to SIRGAS 2000 (4) (tfm code 5056) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Petrobras preferred parameters for all purposes in the area.",Oil exploration.,3699,-17.7,-13.01,-39.22,-34.6,1,0,9603,-160.4,302.29,-144.19,,,,,0 +425,5059,4208,4326,"Parameters from Aratu to SIRGAS 2000 (5) (tfm code 5058) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Petrobras preferred parameters for all purposes in the area.",Oil exploration.,3692,-13.57,-11.18,-39.09,-35.31,1,0,9603,-153.54,302.33,-152.37,,,,,0 +426,5061,4208,4326,"Parameters from Aratu to SIRGAS 2000 (6) (tfm code 5060) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Petrobras preferred parameters for all purposes in the area. Replaces tfms 1550-1552.",Oil exploration.,3693,-12.27,-8.39,-39.14,-37.09,1,0,9603,-151.5,300.09,-151.15,,,,,0 +427,5063,4208,4326,"Parameters from Aratu to SIRGAS 2000 (7) (tfm code 5062) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Petrobras preferred parameters for all purposes in the area.",Oil exploration.,3696,-13.58,-8.73,-37.34,-32.01,1,0,9603,-156.8,298.41,-147.41,,,,,0 +428,5065,4208,4326,"Parameters from Aratu to SIRGAS 2000 (8) (tfm code 5064) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation.Petrobras preferred parameters for all purposes in the area.",Oil exploration.,3697,-10.17,-4.6,-35.1,-29.13,1,0,9603,-157.4,295.05,-150.19,,,,,0 +429,5067,4208,4326,"Parameters from Aratu to SIRGAS 2000 (9) (tfm code 5066) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation. Petrobras preferred parameters for all purposes in the area.",Oil exploration.,3698,-6.5,4.26,-44.79,-26,1,0,9603,-151.99,287.04,-147.45,,,,,1 +430,15754,4208,4326,"Mean for 3 basins. See Aratu to WGS 84 (10) through (12) (codes 15710-12) for transformations for individual basins. Replaced by Aratu to WGS 84 (13) through (15) (tfm codes 5051, 5053 and 5055) which Petrobras now recommends for the areas.",Oil exploration.,2307,-28.41,-17.59,-48.8,-35.18,1,0,9603,-158,315,-148,,,,,0 +431,1149,4258,4326,,ETRS89 and WGS 84 are realizations of ITRS coincident to within 1 metre. This transformation has an accuracy equal to the coincidence figure.,1298,32.88,84.17,-16.1,40.18,1,0,9603,0,0,0,,,,,1 +432,1571,4258,4326,"Dutch sources also quote an equivalent transformation with parameter values dX=+593.032 dY=+26.000 dZ=+478.741m, rX rY rZ and dS as this tfm. These values belong to a different transformation method and cannot be used with the Coordinate Frame method.",Accuracy 0.5m,1172,50.75,55.77,2.53,7.22,1,1,9607,565.04,49.91,465.84,0.409394,-0.359705,1.86849,4.0772,0 +433,1330,4259,4326,"Derived at Station Y in April 1989 using 572 transit satellite passes. Computed value for dZ was -96.42 but -96.38 has been utilised. Replaced Malongo 1987 to WGS 84 (3) (code 15791) in 1989. Replaced by Malongo 1987 to WGS 84 (2) (code 1557) in 1990.",Offshore oil exploration and production between April 1989 and June 1990.,3180,-6.04,-5.05,10.53,12.37,1,0,9603,-252.95,-4.11,-96.38,,,,,0 +434,1557,4259,4326,"Derived at station Y in July 1990 through Transit single point positioning using 187 passes by Geodetic Survey Ltd. Replaces Malongo 1987 to WGS 84 (1) (trf code 1330).",Offshore oil exploration and production from June 1990.,3180,-6.04,-5.05,10.53,12.37,1,0,9603,-254.1,-5.36,-100.29,,,,,1 +435,15791,4259,4326,"Derived via WGS 72BE by Geodetic for Chevron in 1987 by single point Transit translocation at 1 station (Malongo Y). Replaced in 1989 by Malongo 1987 to WGS 84 (1) (code 1330).",Oil industry exploration and production between September 1987 and April 1989.,3180,-6.04,-5.05,10.53,12.37,1,0,9603,-259.99,-5.28,-97.09,,,,,0 +436,1316,4260,4326,,"?",1060,1.65,13.09,8.32,16.21,1,1,9603,-70.9,-151.8,-41.4,,,,,0 +437,1166,4261,4326,Derived at 9 stations.,"For military purposes. Accuracy 5m, 3m and 3m in X, Y and Z axes.",3280,27.66,35.97,-13.24,-1.01,1,0,9603,31,146,47,,,,,1 +438,1165,4262,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,1089,12.36,18.1,36.44,43.31,1,0,9603,639,405,60,,,,,1 +439,1067,4263,4326,"Used by Statoil for deep water blocks 210, 213, 217 and 218. Parameter values interpolated from Racal Survey geocentric translation contour charts for each of these four blocks and then meaned.",Oil industry exploration and production.,3817,3.24,5.54,4.41,6.29,1,0,9603,-92.1,-89.9,114.9,,,,,0 +440,1167,4263,4326,"Derived at 2 stations. Note: Minna is used in Nigeria, not Cameroon.",For military purposes only. Accuracy 25m in each axis.,3226,1.65,13.09,8.45,16.21,1,0,9603,-81,-84,115,,,,,0 +441,1168,4263,4326,Derived at 6 stations.,"For military purposes. Accuracy 3m, 6m and 5m in X, Y and Z axes.",1178,1.92,13.9,2.66,14.65,1,0,9603,-92,-93,122,,,,,1 +442,1534,4263,4326,,Oil exploration.,2371,4.22,6.95,4.35,9.45,1,1,9606,-111.92,-87.85,114.5,1.875,0.202,0.219,0.032,0 +443,1754,4263,4326,"Derived at 8 stations across the Niger delta. Used by Shell SPDC throughout southern Nigeria onshore, delta and shallow offshore from 1994 and by Total in OPL246. Sometimes given with parameter values to greater resolution; values here are adequate.",Oil exploration.,2371,4.22,6.95,4.35,9.45,1,0,9606,-111.92,-87.85,114.5,1.875,0.202,0.219,0.032,0 +444,1818,4263,4326,Concatenated via WGS 72BE.,Oil industry operations.,1717,1.92,6.14,2.66,7.82,1,0,9606,-89,-112,125.9,0,0,0.814,-0.38,0 +445,1819,4263,4326,Used by Shell in southern Nigeria and Total in OPL246.,Oil industry operations.,2371,4.22,6.95,4.35,9.45,1,1,9606,-111.92,-87.85,114.5,1.875,0.202,0.219,0.032,0 +446,1820,4263,4326,Derived by Nortech at station L40 Minna using NNPC 1989 GPS network tied to 4 ADOS stations. Used by Conoco in OPLs 219-220 to cm precision and ExxonMobil in OPL 209 to dm precision..,Oil industry operations.,3813,3.25,5.54,4.01,6.96,1,0,9603,-93.2,-93.31,121.156,,,,,0 +447,1821,4263,4326,"Derived by Elf Petroleum Nigeria in 1994 at 3 stations (M101 onshore, offshore platforms XSW06 and XSV39) and used in OMLs 99-102 and OPLs 222-223.",Oil industry operations.,3814,3.25,4.51,7.16,8.25,1,0,9603,-88.98,-83.23,113.55,,,,,0 +448,1822,4263,4326,"Used by Shell SNEPCO for OPLs 209-213 and 316. Derived during 1990 Niger Delta control survey at 4 stations (XSU27, 30 31 and 35).",Oil industry exploration and production.,3815,4.22,6.31,3.83,5.17,1,0,9603,-92.726,-90.304,115.735,,,,,0 +449,1823,4263,4326,"Used by Shell SNEPCO for OPLs 217-223. Derived during 1990 Niger Delta control survey at 4 stations (XSU38, 41, 44 and 45).",Oil industry exploration and production.,3816,3.24,3.86,5.58,8,1,0,9603,-93.134,-86.647,114.196,,,,,0 +450,1824,4263,4326,Used by Shell SNEPCO for Gongola basin.,Oil industry exploration and production.,3824,8.78,11.63,9.41,12.13,1,0,9603,-93,-94,124,,,,,0 +451,15706,4263,4326,Used by Elf in Blocks OPL 222 and OPL 223 and by Mobil in 1994.,Oil industry exploration.,1717,1.92,6.14,2.66,7.82,1,0,9603,-93.6,-83.7,113.8,,,,,0 +452,15705,4263,4326,"Derived via WGS 72(BE). Minna to WGS 72(BE) transformation derived in 1981 for Mobil E&P Nigeria (MEPCON) by Geodetic Survey through Transit translocation at six stations in southern Nigeria. Used by MEPCON in blocks OPL 215 and 221.",Oil industry exploration.,3819,3.25,4.23,5.02,7.31,1,0,9606,-83.13,-104.95,114.63,0,0,0.554,0,0 +453,6196,4263,4326,Used by Addax for OPL 118 and OML 124. Derived in 1999 at 4 stations during extension into OPL 118 of control in Chevron block OML 53.,Oil industry exploration and production.,4127,5.56,5.74,6.72,6.97,1,0,9603,-93.179,-87.124,114.338,,,,,0 +454,15493,4263,4326,"Adopted by MPN for all joint venture operations from 1/1/1996.",Oil industry exploration and production.,3590,3.99,5.01,5.99,8.01,1,0,9603,-94.031,-83.317,116.708,,,,,0 +455,15755,4263,4326,Derived in 1995 at unspecified DMA ADOS stations and Racal stations M101 and ZVS3003. Used by Elf in onshore Block OML 58.,Oil industry exploration and production. Accuracy 0.5m.,3113,5.05,5.36,6.53,6.84,1,0,9603,-90.2,-87.32,114.17,,,,,0 +456,1329,4264,4326,"Superseded in 1990 by trf Malongo 1987 to WGS 84 (2), code 1557. Malongo 1987 is an offshore extension of the Mhast cooordinate system.","Used for oil exploration by Chevron until superseded in 1990 by trf Malongo 1987 to WGS 84 (2), code 1557.",1317,-6.04,-5.05,10.53,12.18,1,1,9603,-252.95,-4.11,-96.38,,,,,0 +457,1088,4265,4326,,Oil exploration and production,2882,43.62,45.73,12.22,13.96,1,0,9603,-223.7,-67.38,1.34,,,,,0 +458,1089,4265,4326,,Oil exploration and production,2883,41.95,44.04,13.61,16.14,1,0,9603,-225.4,-67.7,7.85,,,,,0 +459,1090,4265,4326,,Oil exploration and production,2884,40.72,42.28,15.95,18.63,1,0,9603,-227.1,-68.1,14.4,,,,,0 +460,1091,4265,4326,,Marine navigation,2885,39.77,41.03,17.95,18.99,1,0,9603,-231.61,-68.21,13.93,,,,,0 +461,1092,4265,4326,,Marine navigation,2886,37.67,40.47,16.55,18.93,1,0,9603,-225.06,-67.37,14.61,,,,,0 +462,1093,4265,4326,,Marine navigation,2887,35.22,37.48,13,15.16,1,0,9603,-229.08,-65.73,20.21,,,,,0 +463,1094,4265,4326,,Marine navigation,2888,35.28,38.45,10.68,13.01,1,0,9603,-230.47,-56.08,22.43,,,,,0 +464,1169,4265,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,2339,38.82,41.31,8.08,9.89,1,0,9603,-225,-65,9,,,,,0 +465,1660,4265,4326,"Parameter values from Monte Mario to ETRS89 (1) (code 1659). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.","Accuracy: 4 metres",2372,37.86,47.1,6.62,18.58,1,0,9606,-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68,1 +466,1662,4265,4326,"Parameter values from Monte Mario to ETRS89 (2) (code 1661). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.","Accuracy: 4 metres",2339,38.82,41.31,8.08,9.89,1,0,9606,-168.6,-34,38.6,-0.374,-0.679,-1.379,-9.48,0 +467,1664,4265,4326,"Parameter values from Monte Mario to ETRS89 (3) (code 1663). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.","Accuracy: 4 metres",2340,36.59,38.35,12.36,15.71,1,0,9606,-50.2,-50.4,84.8,-0.69,-2.012,0.459,-28.08,0 +468,1163,4266,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,1100,-6.37,2.32,7.03,14.52,1,0,9603,-74,-130,42,,,,,1 +469,1532,4266,4326,Derived as mean of Doris determinations at 3 stations in Port Gentil area in 1994.,Oil exploration.,1100,-6.37,2.32,7.03,14.52,1,0,9603,-80.7,-132.5,41.1,,,,,0 +470,1170,4267,4326,Derived at 15 stations.,"For military purposes. Accuracy 3m, 9m and 12m in X, Y and Z axes.",2418,13,23.25,-85.01,-59.37,1,0,9603,-3,142,183,,,,,0 +471,1171,4267,4326,Derived at 19 stations.,"For military purposes only. Accuracy 8m, 3m and 5m in X, Y and Z axes.",2419,7.98,18.49,-92.29,-82.53,1,0,9603,0,125,194,,,,,0 +472,1172,4267,4326,Derived at 112 stations.,"For military purposes only. Accuracy 15m, 11m and 6m in X, Y and Z axes.",1061,40.04,86.46,-141.01,-47.74,1,0,9603,-10,158,187,,,,,1 +473,1173,4267,4326,Derived at 405 stations.,"For military purposes only. Accuracy 5m, 5m and 6m in X, Y and Z axes.",1323,24.41,49.38,-124.79,-66.91,1,0,9603,-8,160,176,,,,,0 +474,1174,4267,4326,Derived at 129 stations.,"For military purposes only. Accuracy 5m, 5m and 8m in X, Y and Z axes.",2389,24.41,49.38,-97.22,-66.91,1,0,9603,-9,161,179,,,,,0 +475,1175,4267,4326,Derived at 276 stations.,"For military purposes only. Accuracy 5m, 3m and 3m in X, Y and Z axes.",2390,25.83,49.05,-124.79,-89.64,1,0,9603,-8,159,175,,,,,0 +476,1176,4267,4326,Derived at 47 stations.,"For military purposes only. Accuracy 5m, 9m and 5m in X, Y and Z axes.",2412,54.34,71.4,-168.26,-129.99,1,0,9603,-5,135,172,,,,,0 +477,1177,4267,4326,Derived at 11 stations.,"For military purposes. Accuracy 5m, 3m and 5m in X, Y and Z axes.",2413,20.86,27.29,-79.04,-72.68,1,0,9603,-4,154,178,,,,,0 +478,1178,4267,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,2414,23.9,24.19,-74.6,-74.37,1,0,9603,1,140,165,,,,,0 +479,1179,4267,4326,Derived at 25 stations.,"For military purposes only. Accuracy 8m, 8m and 6m in X, Y and Z axes.",2384,48.25,60.01,-139.04,-109.98,1,0,9603,-7,162,188,,,,,0 +480,1180,4267,4326,Derived at 25 stations.,"For military purposes only. Accuracy 9m, 5m and 5m in X, Y and Z axes.",2415,41.67,60.01,-102,-74.35,1,0,9603,-9,157,184,,,,,0 +481,1181,4267,4326,Derived at 37 stations.,"For military purposes only. Accuracy 6m, 6m and 3m in X, Y and Z axes.",2416,43.41,62.62,-79.85,-52.54,1,0,9603,-22,160,190,,,,,0 +482,1182,4267,4326,Derived at 17 stations.,"For military purposes only. Accuracy 5m, 5m and 3m in X, Y and Z axes.",2410,49,83.17,-136.46,-60.72,1,0,9603,4,159,188,,,,,0 +483,1183,4267,4326,Derived at 8 stations.,"For military purposes only. Accuracy 5m, 8m and 3m in X, Y and Z axes.",2417,59.99,69.7,-141.01,-123.91,1,0,9603,-7,139,181,,,,,0 +484,1184,4267,4326,Derived at 3 stations.,For military purposes. Accuracy 20m in each axis.,2385,8.82,9.45,-80.07,-79.46,1,0,9603,0,125,201,,,,,0 +485,1185,4267,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,3235,19.77,23.25,-85.01,-74.07,1,0,9603,-9,152,178,,,,,0 +486,1186,4267,4326,"Derived at 2 stations. Note: NAD27 is not used in Greenland.",For military purposes. Accuracy 25m in each axis.,2386,75.86,79.2,-73.29,-60.98,1,0,9603,11,114,195,,,,,0 +487,1187,4267,4326,Derived at 22 stations.,"For military purposes only. Accuracy 8m, 6m and 6m in X, Y and Z axes.",3278,14.51,32.72,-118.47,-86.68,1,0,9603,-12,130,190,,,,,0 +488,1249,4267,4326,Derived at 6 stations.,"For military purposes only. Accuracy 6m, 8m and 10m in X, Y and Z axes.",2387,51.54,54.34,-178.3,-164.84,1,0,9603,-2,152,149,,,,,0 +489,1250,4267,4326,Derived at 5 stations.,For military purposes. Accuracy 10m in each axis.,2388,51.3,53.07,172.42,179.86,1,0,9603,2,204,105,,,,,0 +490,1530,4267,4326,,Accuracy 3m.,1077,18.83,25.51,-87.01,-73.57,1,0,9603,-4.2,135.4,181.9,,,,,0 +491,15699,4267,4326,"Developed by John E Chance and Associates at 19°44'N, 92°21'W. Geoid height used =-13.34m.","Oil exploration and production. Horizontal transformation accuracy (1 sigma) is considered to be at the +/- 5 meter level.",3462,17.85,20.89,-94.79,-89.75,1,0,9603,-2,124.7,196,,,,,0 +492,15913,4267,4326,"Developed by John E Chance and Associates at 21°33'N, 92°33'W. Geoid height used =-16.7m.","Oil exploration and production. Horizontal transformation accuracy (1 sigma) is considered to be at the +/- 5 meter level.",3461,20.87,23.01,-94.33,-88.67,1,0,9603,0,125,196,,,,,0 +493,15852,4267,4326,"Developed by John E Chance and Associates. Replaced by NAD27 to WGS 84 (79) (tfm code 15851).","Oil exploration and production. Horizontal transformation accuracy (1 sigma) is considered to be at the +/- 5 meter level.",3358,23.82,30.25,-87.25,-81.17,1,0,9603,-3,154,177,,,,,0 +494,15853,4267,4326,"Developed by John E Chance and Associates. Replaced by NAD27 to WGS 84 (79) (tfm code 15851).","Oil exploration and production. Horizontal transformation accuracy (1 sigma) is considered to be at the +/- 5 meter level.",3359,25.61,30.23,-95,-87.25,1,0,9603,-7,151,175,,,,,0 +495,15854,4267,4326,"Developed by John E Chance and Associates. Replaced by NAD27 to WGS 84 (79) (tfm code 15851).","Oil exploration and production. Horizontal transformation accuracy (1 sigma) is considered to be at the +/- 5 meter level.",3360,25.97,28.97,-97.22,-95,1,0,9603,-7,151,178,,,,,0 +496,15855,4267,4326,"Developed by John E Chance and Associates at 21°55'N, 97°20'W. Geoid height used =-17m.","Oil exploration and production. Horizontal transformation accuracy (1 sigma) is considered to be at the +/- 5 meter level.",3361,21.51,22.75,-98.1,-96.89,1,0,9603,-8,125,190,,,,,0 +497,15856,4267,4326,"Developed by EnSoCo Inc. Replaced by NAD27 to WGS 84 (79) (tfm code 15851).",Oil exploration and production. Accuracy 8 metres.,3357,23.82,30.25,-97.22,-81.17,1,0,9603,-7,158,172,,,,,0 +498,7698,4267,4326,"Derived at stations in the provinces of Colón, Panamá, Coclé, Veraguas, +Herrera, Los Santos y ChiriquÃ. Standard deviation 0.871m in north and 0.531m in east.",Accuracy 1m.,3290,7.15,9.68,-83.04,-77.19,1,0,9607,-32.3841359,180.4090461,120.8442577,2.1545854,0.1498782,-0.5742915,8.1049164,0 +499,15978,4267,4326,,Accuracy 1m.,1077,18.83,25.51,-87.01,-73.57,1,0,9607,2.478,149.752,197.726,-0.526,-0.498,0.501,0.685,0 +500,1188,4269,4326,Derived at 354 stations.,Accuracy 2m in each axis.,1325,23.81,86.46,-172.54,-47.74,1,0,9603,0,0,0,,,,,1 +501,1251,4269,4326,Derived at 4 stations.,"For military purposes only. Accuracy 5m, 2m and 5m in X, Y and Z axes.",2157,51.3,54.34,172.42,-164.84,1,0,9603,-2,0,4,,,,,0 +502,1252,4269,4326,Derived at 6 stations.,For military purposes only. Accuracy 2m in each axis.,3883,15.56,25.58,-163.74,-151.27,1,0,9603,1,1,-1,,,,,0 +503,1308,4269,4326,"Strictly between NAD83 and ITRF94(1996.0). Superseded by NAD83 to WGS 84 (5) (code 1515).",Historical record only - superseded - see remarks.,1323,24.41,49.38,-124.79,-66.91,1,1,9607,-0.9738,1.9453,0.5486,-0.0275508,-0.010049,-0.011359,0,0 +504,1515,4269,4326,"Strictly between NAD83 and ITRF96(1997.0). Supersedes NAD83 to WGS 84 (4) (code 1308).",Geodesy.,1323,24.41,49.38,-124.79,-66.91,1,1,9607,-0.991,1.9072,0.5129,-0.02578991,-0.00965010,-0.0116599,0,0 +505,1189,4270,4326,Derived at 2 stations.,For military purposes. Accuracy 25m in each axis.,2391,20.12,20.74,58.58,59.01,1,0,9603,-247,-148,369,,,,,0 +506,1190,4270,4326,Derived at 3 stations.,For military purposes. Accuracy 20m in each axis.,3968,24.63,28.57,47.95,50.81,1,0,9603,-243,-192,477,,,,,0 +507,1191,4270,4326,Derived at 2 stations.,For military purposes. Accuracy 25m in each axis.,1243,22.63,26.27,51.5,57.13,1,0,9603,-249,-156,381,,,,,1 +508,1531,4270,4326,Parameter values adopted by Total are mean of those derived by Oceonics and Geoid through ties at platform AK1 to 4 IGS stations in March 1995.,Oil exploration.,2392,25.33,25.54,53.03,53.4,1,0,9603,-245,-153.9,382.8,,,,,0 +509,1536,4270,4326,"Derived by Brown & Root in 1992 for Qatar General Petroleum Corporation North Field development. Adopted by QGPC for all offshore Qatar.",Oil exploration.,2406,24.64,27.05,50.55,53.04,1,0,9603,-250.2,-153.09,391.7,,,,,0 +510,15937,4270,4326,Parameter values adopted by Total are mean of those derived by Oceonics and Geoid through ties at station TC58 to 4 IGS stations in March 1995.,Oil exploration.,3509,24,25.64,51.5,54.85,1,0,9603,-245.8,-152.2,382.9,,,,,0 +511,15938,4270,4326,Derived via WGS 72BE from Transit observations at station TC58 in 1976 by BP for ADMA.,Oil exploration.,3509,24,25.64,51.5,54.85,1,0,9606,-225.4,-158.7,380.8,0,0,0.814,-0.38,0 +512,15871,4270,4326,Derived by concatenation of parameter values published by IGN Paris from Nahrwan 1967 to WGS 72 at the Nahrwan SE Base trig station near Baghdad with DMA WGS 72 to WGS 84 parameter values.,Oil exploration.,3625,29.06,37.39,38.79,48.61,1,1,9603,-242.2,-144.9,370.3,,,,,0 +513,6998,4270,4326,Derived via WGS 72 but provenance uncertain. In ADMA replaces tfm code 15938. In ADCO replaced by tfm code 6999 from October 2013.,Oil exploration and production.,4226,22.63,25.64,51.5,56.03,1,0,9607,-233.4,-160.7,381.5,0,0,-0.554,0.2263,0 +514,6999,4270,4326,"Derived in October 2013 at four control points of the ADCO CRF and evaluated at four others. Estimated horizontal accuracy of 0.14 m at the 95% confidence level.","Oil exploration and production horizontal coordinate transformation. Although a 3D transformation, should not be used for vertical dimension.",4225,22.63,24.95,51.56,56.03,1,0,9607,-253.4392,-148.452,386.5267,-0.15605,-0.43,0.1013,-0.0424,0 +515,7002,4270,4326,,Abu Dhabi Municipality GIS.,4229,24.24,24.64,54.2,54.71,1,0,9607,-246.1633,-152.9047,382.6047,-0.0989,-0.1382,-0.0768,2.1e-06,0 +516,7003,4270,4326,,Abu Dhabi Municipality GIS.,1850,22.76,24.32,51.56,54.01,1,0,9607,-242.8907,-149.0671,384.416,-0.19044,-0.24987,-0.13925,0.0001746,0 +517,7004,4270,4326,,Abu Dhabi Municipality GIS.,4227,22.63,24.95,53.99,56.03,1,0,9607,-246.734,-153.4345,382.1477,0.116617,0.165167,0.091327,1.94e-05,0 +518,15952,4270,4326,"Used by DPC for Al Fateh field. Applying this transformation gives same result as Nahrwan 1967 to WGS 84 (8) (code 15938).",Oil exploration and production.,3530,24.94,25.8,54.06,55.3,1,0,9603,-244.2,-149.8,379.3,,,,,0 +519,15953,4270,4326,Used by Dubai Municipality before 1994.,Municipal operations.,3531,24.85,25.34,54.84,55.55,1,0,9603,-250.7,-157.9,380.4,,,,,0 +520,1192,4271,4326,"CAUTION: IOGP believes that the coordinates used to derive these parameter values include a blunder, leading to an error in the value of tX. If a transformation from DMA is required IOGP recommends use of the 1987 version (EPSG codes 1307 and 1556).",For military purposes only. Accuracy given by DMA 15m in each axis.,1322,11.08,11.41,-60.9,-60.44,1,0,9603,-10,375,165,,,,,1 +521,1307,4271,4326,"DMA does not differentiate between Naparima 1955 (Trinidad) and Naparima 1972 (Tobago). Consequently for Trinidad IOGP has duplicated this transformation as Naparima 1955 to WGS 84 (3) - see code 1556.",For military purposes only. Accuracy given by DMA is 15m in each axis.,1322,11.08,11.41,-60.9,-60.44,1,0,9603,-2,374,172,,,,,0 +522,1151,4272,4326,Derived at 14 stations.,"For military purposes only. Accuracy 5m, 3m and 5m in X, Y and Z axes.",3285,-47.65,-33.89,165.87,179.27,1,0,9603,84,-22,209,,,,,0 +523,1564,4272,4326,"These parameter values are taken from NZGD49 to NZGD2000 (2) (code 1701) and assume that NZGD2000 and WGS 84 are coincident to within the accuracy of the transformation. For improved accuracy use NZGD49 to WGS 84 (4) (code 1670).",Transformation accuracy about 4 metres.,3285,-47.65,-33.89,165.87,179.27,1,0,9607,59.47,-5.04,187.44,-0.47,0.1,-1.024,-4.5993,1 +524,15975,4272,4326,"These parameter values are taken from NZGD49 to NZGD2000 (1) (code 1566) and assume that NZGD2000 and WGS 84 are coincident to within the accuracy of the tfm. For better accuracy use NZGD49 to WGS 84 (2) (code 1564) or NZGD49 to WGS 84 (3) (code 1670).",5m accuracy.,3285,-47.65,-33.89,165.87,179.27,1,0,9603,54.4,-20.1,183.1,,,,,0 +525,1654,4273,4326,"Parameter values from NGO 1948 to ETRS89 (1) (code 1653). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 3 metres.,1352,57.93,71.21,4.68,31.22,1,0,9606,278.3,93,474.5,7.889,0.05,-6.61,6.21,1 +526,1658,4274,4326,"Parameter values from Datum 73 to ETRS89 (1) (code 1657). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation. Replaced by Datum 73 to WGS 84 (4) (tfm code 1987).",For applications to an accuracy of 2 metres.,1294,36.95,42.16,-9.56,-6.19,1,0,9606,-238.2,85.2,29.9,0.166,0.046,1.248,2.03,0 +527,1945,4274,4326,"Parameter values from Datum 73 to ETRS89 (2) (code 1792). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1294,36.95,42.16,-9.56,-6.19,1,1,9606,-231,102.6,29.8,0.615,-0.198,0.881,1.79,0 +528,1983,4274,4326,,For low resolution applications.,1294,36.95,42.16,-9.56,-6.19,1,0,9603,-223.237,110.193,36.649,,,,,1 +529,1987,4274,4326,,For medium resolution applications.,1294,36.95,42.16,-9.56,-6.19,1,0,9607,-239.749,88.181,30.488,-0.263,-0.082,-1.211,2.229,0 +530,1193,4275,4326,"These same parameter values are used to transform to ETRS89. See NTF to ETRS89 (1) (code 1651).",For applications to an accuracy of 2 metres.,3694,41.31,51.14,-4.87,9.63,1,0,9603,-168,-60,320,,,,,1 +531,1195,4277,4326,Derived at 38 stations.,"For military purposes only. Accuracy 10m, 10m and 15m in X, Y and Z axes.",1264,49.79,60.94,-8.82,1.92,1,0,9603,375,-111,431,,,,,0 +532,1196,4277,4326,Derived at 24 stations.,"For military purposes only. Accuracy 5m, 5m and 6m in X, Y and Z axes.",2395,49.81,55.85,-6.5,1.84,1,0,9603,371,-112,434,,,,,0 +533,1197,4277,4326,Derived at 25 stations.,"For military purposes only. Accuracy 10m, 10m and 15m in X, Y and Z axes.",2396,49.81,55.85,-6.5,1.84,1,0,9603,371,-111,434,,,,,0 +534,1198,4277,4326,Derived at 13 stations.,For military purposes only. Accuracy 10m in each axis.,2397,54.57,60.9,-8.74,-0.65,1,0,9603,384,-111,425,,,,,0 +535,1199,4277,4326,Derived at 3 stations.,For military purposes only. Accuracy 20m in each axis.,2398,51.28,53.48,-5.34,-2.65,1,0,9603,370,-108,434,,,,,0 +536,1314,4277,4326,"For a more accurate transformation see OSGB 1936 / British National Grid to ETRS89 (2) (code 1039): contact the Ordnance Survey of Great Britain (http://www.gps.gov.uk/gpssurveying.asp) for details.",Oil exploration. Accuracy better than 4m and generally better than 2m.,1264,49.79,60.94,-8.82,1.92,1,0,9606,446.448,-125.157,542.06,0.15,0.247,0.842,-20.489,1 +537,5622,4277,4326,Derived by CGG for 1994 3D seismic survey.,Oil exploration and production.,3893,50.53,50.8,-2.2,-1.68,1,0,9603,370.936,-108.938,435.682,,,,,0 +538,7898,7881,4326,"Parameter values from Tritan St. Helena to SHGD2015 (1) (tfm code 7897). Assumes Tritan St. Helena and SHGD2015 can be considered the same to within the accuracy of the transformation.",For applications requiring an accuracy of better than 1 metre.,3183,-16.08,-15.85,-5.85,-5.58,1,0,9603,-0.077,0.079,0.086,,,,,1 +539,4560,4558,4326,"Approximation at the +/- 1m level assuming that RRAF91 is equivalent to WGS 84 within the accuracy of the transformation.","Accuracy +/- 1 metre.",2824,14.08,18.54,-63.66,-57.52,1,0,9603,0,0,0,,,,,1 +540,1074,4281,4326,"Not recognised by Survey of Israel. See Palestine 1923 to WGS 84 (2) (code 8650).","Oil Exploration. Accuracy: 1m to north and 5m to south of east-west line through Beersheba (31°15'N).",2603,29.45,33.28,34.17,35.69,1,0,9606,-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,1,1 +541,1200,4282,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,1072,-6.91,3.72,8.84,18.65,1,0,9603,-148,51,-291,,,,,1 +542,1801,4282,4326,"Derived in 1994 by CGG/Topnav using DORIS system on various stations along the coastline.","?",2574,-6.91,-3.55,8.84,12.34,1,0,9603,-145,52.7,-291.6,,,,,0 +543,1802,4282,4326,Derived by Geoid for Elf in May 1995 using GPS and IGS data by tying 4 geodetic points to ITRF93 epoch 1995.4.,Used by Elf since May 1995 for all offshore Congo operations.,2574,-6.91,-3.55,8.84,12.34,1,0,9606,-178.3,-316.7,-131.5,5.278,6.077,10.979,19.166,0 +544,1150,4283,4326,,Transformation with 1-metre accuracy.,2575,-43.7,-9.86,112.85,153.69,1,0,9603,0,0,0,,,,,1 +545,1254,4284,4326,Accuracy estimate not available.,For military purposes.,1198,39.87,85.2,18.92,-168.97,1,0,9603,28,-130,-95,,,,,0 +546,1267,4284,4326,"Derived through concatenation of Pulkovo 1942 to PZ-90 (1) (tfm code 15844) and PZ-90 to WGS 84 (2) (tfm code 1244. Mandated for use in Russia by GOST R 51794-2001, but this has been superseded by GOST R 51794-2008. Replaced by tfm code 5044.",Accuracy 4 metres.,1198,39.87,85.2,18.92,-168.97,1,0,9607,23.92,-141.27,-80.9,0,-0.35,-0.82,-0.12,1 +547,1287,4284,4326,Derived at 5 stations.,For military purposes. Accuracy 2m in each axis.,1119,45.74,48.58,16.11,22.9,1,1,9603,28,-121,-77,,,,,0 +548,1288,4284,4326,Derived at 11 stations.,"For military purposes only. Accuracy 4m, 2m and 4m in X, Y and Z axes.",1192,49,55.93,14.14,24.15,1,1,9603,23,-124,-82,,,,,0 +549,1289,4284,4326,Derived at 6 stations.,"For military purposes only. Accuracy 3m, 3m and 2m in X, Y and Z axes.",1306,47.73,51.06,12.09,22.56,1,1,9603,26,-121,-78,,,,,0 +550,1290,4284,4326,Derived at 5 stations.,For military purposes. Accuracy 2m in each axis.,1139,55.67,58.09,19.06,28.24,1,0,9603,24,-124,-82,,,,,0 +551,1291,4284,4326,Derived at 2 stations.,For military purposes. Accuracy 25m in each axis.,1131,40.59,55.45,46.49,87.35,1,0,9603,15,-130,-84,,,,,0 +552,1292,4284,4326,Derived at 7 stations.,For military purposes. Accuracy 3m in each axis.,1025,39.63,42.67,18.46,21.06,1,1,9603,24,-130,-92,,,,,0 +553,1293,4284,4326,Derived at 4 stations.,"For military purposes. Accuracy 3m, 5m and 3m in X, Y and Z axes.",1197,43.44,48.27,20.26,31.41,1,1,9603,28,-121,-77,,,,,0 +554,1303,4284,4326,Mean of 13 stations along entire Kazak coastline.,Residuals under 2 m.,2405,41.15,46.97,48.9,53.15,1,0,9606,43.822,-108.842,-119.585,1.455,-0.761,0.737,0.549,0 +555,1334,4284,4326,,"?",3246,57.52,59.75,21.74,28.2,1,0,9607,21.58719,-97.54127,-60.92546,-1.01378,-0.58117,-0.2348,-4.6121,0 +556,1679,4284,4326,"Parameter values taken from Pulkovo 1942 to LKS94(ETRS89) (1) (code 1274) assuming that LKS94(ETRS89) is equivalent to WGS 84 within the accuracy of the transformation.","Approximation at the +/- 9m level.",1145,53.89,56.45,19.02,26.82,1,0,9607,-40.595,-18.55,-69.339,-2.508,-1.832,2.611,-4.299,0 +557,1807,4284,4326,"Derived via WGS72 values taken from SOCAR Magnavox 1502 manual. Used by AIOC 1995-1997 then replaced by the AIOC97 values (tfm code 1808). +Do not confuse with AIOC95 vertical datum as used in southern Caspian Sea and at Sangachal terminal by AIOC.",Oil industry operations by AIOC prior to 1997.,1038,37.89,42.59,44.77,51.73,1,0,9606,27,-135,-84.5,0,0,0.554,0.2263,0 +558,1808,4284,4326,"Mean of 3 stations in western Georgia, 4 stations in eastern Georgia and 4 stations in eastern Azerbaijan. Derived for use on AIOC early oil western export pipeline, but adopted for all AIOC work replacing the 1995 AIOC transformation (code 1807).",Oil industry operations.,2593,37.89,43.59,39.99,51.73,1,0,9606,686.1,-123.5,-574.4,8.045,-23.366,10.791,-2.926,0 +559,1809,4284,4326,Parameter values calculated by Elf Exploration and Production based on geodetic survey carried out by Azerbaijan State Committee for Geodesy and Cartography.,Oil industry operations.,2594,38.31,40.33,48.93,50.4,1,0,9606,926.4,-715.9,-186.4,-10.364,-20.78,26.452,-7.224,0 +560,5044,4284,4326,"Derived through concatenation of Pulkovo 1942 to PZ-90.02 to WGS 84. Replaces Pulkovo 1942 to WGS 84 (17) (code 1267).",Accuracy 3 metres.,1198,39.87,85.2,18.92,-168.97,1,0,9607,23.57,-140.95,-79.8,0,-0.35,-0.79,-0.22,0 +561,15865,4284,4326,"Derived via PZ-90 at 30 stations throughout USSR (Former Soviet Union, FSU) through concatenation of Pulkovo 1942 to PZ-90 (1) (tfm code 15844) and PZ-90 to WGS 84 (1) (tfm code 15843).",Accuracy 4.5 metres.,2423,35.14,81.91,19.57,-168.97,1,0,9607,25,-141,-78.5,0,-0.35,-0.736,0,0 +562,6899,4284,4326,Derived at 19 stations.,"For military purposes. Accuracy 2m, 3m and 3m in X, Y and Z axes.",3246,57.52,59.75,21.74,28.2,1,0,9603,22,-126,-85,,,,,0 +563,1561,4285,4326,Derived at 3 stations.,For military purposes only. Accuracy 20m in each axis.,1346,24.55,26.2,50.69,51.68,1,0,9603,-128,-283,22,,,,,0 +564,1562,4285,4326,"Derived by Brown & Root in 1992 for Qatar General Petroleum Corporation.",Oil exploration.,2406,24.64,27.05,50.55,53.04,1,0,9603,-128.16,-282.42,21.93,,,,,1 +565,1563,4285,4326,"Derived by Qatar Centre for GIS. See Qatar 1974 to WGS 84 (2) (code 1562) for transformation used by QGPC for offshore petroleum industry.",Oil exploration.,1346,24.55,26.2,50.69,51.68,1,0,9603,-128.033,-283.697,21.052,,,,,0 +566,1211,4287,4326,Derived at 2 stations.,"For military purposes. Accuracy 25m, 25m and 32m in X, Y and Z axes.",2407,59.75,72,-55,-40,1,1,9603,164,138,-189,,,,,0 +567,15934,4289,4326,"Parameter values from Amersfoort to ETRS89 (3) (tfm code 15739) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Replaces Amersfoort to WGS 84 (2) (code 1672). Replaced by Amersfoort to WGS 84 (4) (tfm code 4833).","Approximation at the +/- 1m level.",1275,50.75,53.7,3.2,7.22,1,0,9607,565.2369,50.0087,465.658,0.406857,-0.350733,1.87035,4.0812,1 +568,1112,4289,4326,"Replaced by Amersfoort to WGS 84 (2) (code 1672).","?",1275,50.75,53.7,3.2,7.22,1,0,9606,593.16,26.15,478.54,-1.30440,-0.10330,-1.14450,4.0775,0 +569,1672,4289,4326,"Parameter values from Amersfoort to ETRS89 (1) (code 1751) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Replaces Amersfoort to WGS 84 (1) (code 1112). Replaced by Amersfoort to WGS 84 (3) (code 15934).","Approximation at the +/- 1m level.",1275,50.75,53.7,3.2,7.22,1,0,9607,565.04,49.91,465.84,0.409394,-0.359705,1.86849,4.0772,0 +570,4833,4289,4326,"Parameter values from Amersfoort to ETRS89 (5) (tfm code 4830) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Replaces Amersfoort to WGS 84 (3) (code 15934).","Approximation at the +/- 1m level.",1275,50.75,53.7,3.2,7.22,1,0,9607,565.4171,50.3319,465.5524,0.398957,-0.343988,1.87740,4.0725,0 +571,1212,4291,4326,Derived at 84 stations.,"For military purposes only. Accuracy 15m, 6m and 9m in X, Y and Z axes.",1341,-56.15,13,-82,-34,1,1,9603,-57,1,-41,,,,,0 +572,1213,4291,4326,Derived at 10 stations.,For military purposes only. Accuracy 5m in each axis.,1033,-58.41,-21.78,-73.59,-52.63,1,1,9603,-62,-1,-37,,,,,0 +573,1214,4291,4326,Derived at 4 stations.,For military purposes. Accuracy 15m in each axis.,1049,-22.91,-9.67,-69.66,-57.52,1,1,9603,-61,2,-48,,,,,0 +574,1215,4291,4326,Derived at 22 stations.,"For military purposes only. Accuracy 3m, 5m and 5m in X, Y and Z axes.",1053,-35.71,7.04,-74.01,-25.28,1,1,9603,-60,-2,-41,,,,,0 +575,1216,4291,4326,Derived at 9 stations.,"For military purposes only. Accuracy 15m, 8m and 11m in X, Y and Z axes.",1066,-59.87,-17.5,-113.21,-65.72,1,1,9603,-75,-1,-44,,,,,0 +576,1217,4291,4326,Derived at 7 stations.,"For military purposes only. Accuracy 6m, 6m and 5m in X, Y and Z axes.",1070,-4.23,15.51,-84.77,-66.87,1,1,9603,-44,6,-36,,,,,0 +577,1218,4291,4326,Derived at 11 stations.,For military purposes. Accuracy 3m in each axis.,1085,-5.01,5,-95.35,-75.21,1,1,9603,-48,3,-44,,,,,0 +578,1219,4291,4326,Derived at 1 station.,For military purposes. Accuracy 25m in each axis.,2356,-1.41,0.18,-91.72,-89.19,1,1,9603,-47,26,-42,,,,,0 +579,1220,4291,4326,Derived at 5 stations.,"For military purposes only. Accuracy 9m, 5m and 5m in X, Y and Z axes.",1114,1.18,10.7,-61.39,-55.77,1,1,9603,-53,3,-47,,,,,0 +580,1221,4291,4326,Derived at 4 stations.,For military purposes. Accuracy 15m in each axis.,1188,-27.59,-19.29,-62.65,-54.24,1,1,9603,-61,2,-33,,,,,0 +581,1222,4291,4326,Derived at 6 stations.,For military purposes. Accuracy 5m in each axis.,1189,-21.05,-0.03,-84.68,-68.67,1,1,9603,-58,0,-44,,,,,0 +582,1223,4291,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,1235,9.83,12.34,-62.09,-57.28,1,1,9603,-45,12,-33,,,,,0 +583,1224,4291,4326,Derived at 5 stations.,"For military purposes only. Accuracy 3m, 6m and 3m in X, Y and Z axes.",1251,0.64,16.75,-73.38,-58.95,1,1,9603,-45,8,-33,,,,,0 +584,1548,4291,4326,"Derived by Brazilean Institute of Geography and Statistics (IGBE) in 1989. Used by ANP.",Medium and small scale mapping.,1053,-35.71,7.04,-74.01,-25.28,1,1,9603,-66.87,4.37,-38.52,,,,,0 +585,1225,4292,4326,Derived at 5 stations.,For military purposes. Accuracy 1m in each axis.,2355,-52.51,-51.16,-59.98,-57.61,1,0,9603,-355,21,72,,,,,1 +586,1226,4293,4326,"Derived at 3 stations. +Beware! Source CRS uses German legal metres, transformation parameter values are in (International) metres. See tfm code 1271 for example.",For military purposes only. Accuracy 20m in each axis.,1169,-30.64,-16.95,8.24,25.27,1,0,9603,616,97,-251,,,,,1 +587,1271,4293,4326,"Beware! Source CRS uses GLM, tfm param in m. Example: Schwarzeck ?=19°35'46.952""S ?=20°41'50.649""E h=1185.99m; X=5623409.386 Y=2124618.003 Z=-2125847.632 GLM; X=5623485.84m Y=2124646.89m Z=-2125876.54m; WGS 84 X=5624101.48m Y=2124748.97m Z=-2126132.35m.","?",1169,-30.64,-16.95,8.24,25.27,1,0,9603,615.64,102.08,-255.81,,,,,0 +588,1286,4294,4326,Accuracy estimate not available.,For military purposes.,2354,-4.24,4.37,108.79,119.06,1,1,9603,-403,684,41,,,,,0 +589,1834,4294,4326,Accuracy estimate not available.,For military purposes.,2354,-4.24,4.37,108.79,119.06,1,1,9603,-403,684,41,,,,,0 +590,1835,4294,4326,,Oil exploration.,1360,-4.24,4.29,114.55,119.06,1,1,9603,-387.06,636.53,46.29,,,,,0 +591,1836,4294,4326,,Oil exploration.,2770,-0.07,4.29,116.96,119.06,1,1,9603,-403.4,681.12,46.56,,,,,0 +592,6900,4129,4326,Derived at 3 stations.,For military purposes. Accuracy 10m in each axis.,1329,-26.87,-19.84,31.29,35.65,1,0,9603,-132,-110,-335,,,,,1 +593,1227,4297,4326,Accuracy estimate not available.,For military purposes.,1149,-26.59,-11.69,42.53,51.03,1,0,9603,-189,-242,-91,,,,,1 +594,6873,4297,4326,Derived at 9 points throughout Madagascar. Adopted by OMV.,For applications with an accuracy of 3m.,1149,-26.59,-11.69,42.53,51.03,1,0,9603,-198.383,-240.517,-107.909,,,,,0 +595,1228,4298,4326,Derived at 8 stations.,"For military purposes. Accuracy 10m, 10m and 12m in X, Y and Z axes.",1362,0.85,7.67,109.31,119.61,1,0,9603,-679,669,-48,,,,,1 +596,1592,4298,4326,"Originally used by BSP offshore only, use extended to onshore in 2010.",Oil exploration and production.,1055,4.01,6.31,112.37,115.37,1,0,9603,-678,670,-48,,,,,0 +597,1615,4298,4326,"CARE! Erroneous GPS data was used in the derivation of these parameters. They produce a coordinate difference of 10m horizontally and 50m vertically compared to Timbalai 1948 to WGS 84 (2) (code 1592).",Topographic and engineering survey onshore.,2349,4.01,5.11,114.09,115.37,1,0,9603,-726.282,703.611,-48.999,,,,,0 +598,1852,4298,4326,"Derived by Racal Survey for SSB at 24 coastal stations (including Timbalai fundamental point and 6 other primary triangulation stations) between in Sabah (Kudat southwards) and Sarawak (Sibu northwards).",Oil exploration.,2780,1.56,7.67,109.31,117.31,1,0,9606,-533.4,669.2,-52.5,0,0,4.28,9.4,0 +599,5248,4298,4326,,Oil exploration.,1055,4.01,6.31,112.37,115.37,1,1,9607,-689.5937,623.84046,-65.93566,0.02331,-1.17094,0.80054,5.88536,0 +600,5249,4298,4326,"Parameter values taken from Timbalai 1948 to GDBD2009 (1) (code 5878) assuming that GDBD2009 is equivalent to WGS 84 within the accuracy of the transformation.",Oil exploration.,1055,4.01,6.31,112.37,115.37,1,0,9607,-689.5937,623.84046,-65.93566,0.02331,-1.17094,0.80054,5.88536,0 +601,6902,4298,4326,Derived at 9 stations.,"For military purposes. Accuracy 1m, 6m and 2m in X, Y and Z axes.",2349,4.01,5.11,114.09,115.37,1,0,9603,-679,667,-49,,,,,0 +602,1229,4299,4326,Derived at 7 stations.,For military purposes only. Accuracy 3m in each axis.,1305,51.39,55.43,-10.56,-5.34,1,1,9603,506,-122,611,,,,,0 +603,1641,4299,4326,"Parameter values from TM75 to ETRS89 (2) (code 1953). Assumes each pair of (i) TM65 and TM75, and (ii) ETRS89 and WGS 84, can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1305,51.39,55.43,-10.56,-5.34,1,0,9606,482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15,1 +604,1954,4300,4326,"Parameter values taken from TM65 to ETRS89 (2) (code 1953). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1305,51.39,55.43,-10.56,-5.34,1,0,9606,482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15,1 +605,1956,4300,4326,"Derived at 7 stations. TM75 is based on the geodetic datum of 1965 which should not be confused with the mapping adjustment of 1965 (TM65).",For military purposes only. Accuracy 3m in each axis.,1305,51.39,55.43,-10.56,-5.34,1,0,9603,506,-122,611,,,,,0 +606,1230,4301,4326,Derived at 31 stations.,"For military purposes only. Accuracy 20m, 5m and 20m in X, Y and Z axes.",2409,20.37,45.54,122.83,145.87,1,0,9603,-148,507,685,,,,,0 +607,1231,4301,4326,Derived at 16 stations.,"For military purposes only. Accuracy 8m, 5m and 8m in X, Y and Z axes.",3995,30.18,45.54,128.31,145.87,1,0,9603,-148,507,685,,,,,0 +608,1232,4301,4326,"Derived at 29 stations. Replaced by Tokyo to WGS 84 (5) (code 1305).","For military purposes only. Accuracy 8m, 5m and 8m in X, Y and Z axes.",3266,33.14,38.64,124.53,131.01,1,0,9603,-146,507,687,,,,,0 +609,1233,4301,4326,Derived at 3 stations.,"For military purposes only. Accuracy 20m, 5m and 20m in X, Y and Z axes.",2408,23.98,26.91,122.83,131.38,1,0,9603,-158,507,676,,,,,0 +610,1305,4301,4326,"Derived at 29 stations. Replaces Tokyo to WGS 84 (3) (code 1232).",For military purposes. Accuracy 2m in each axis.,3266,33.14,38.64,124.53,131.01,1,0,9603,-147,506,687,,,,,0 +611,15484,4301,4326,"Parameter values from Tokyo to JGD2000 (1) (code 15483). Assumes JGD2000 and WGS 84 can be considered the same to within the accuracy of the transformation.","Surveying, mapping and civil engineering purposes. Accuracy on main islands 9m.",3957,20.37,45.54,122.83,154.05,1,0,9603,-146.414,507.337,680.507,,,,,1 +612,1296,4302,4326,Derived in 1989 by ONI for Amoco.,Oil exploration.,1339,9.83,11.51,-62.09,-60,1,0,9603,-61.702,284.488,472.052,,,,,1 +613,10085,4302,4326,"Parameter values provided to EOG by Trinidad Ministry of Energy and Energy Industries. Used by EOG offshore Trinidad (including Pelican, Kiskadee and Ibis fields) since 1996.",Oil exploration.,1339,9.83,11.51,-62.09,-60,1,0,9603,-61,285.2,471.6,,,,,0 +614,1932,4644,4326,,"Accuracy better than +/- 1 metre.",2823,-22.37,-22.19,166.35,166.54,1,1,9606,-166.207,-154.777,254.831,-37.5444,7.7011,-10.2025,-30.8598,0 +615,15904,4644,4326,"Parameter values taken from NEA74 Noumea to RGNC91-93 (1) ( code 15886) assuming that RGNC91-93 is equivalent to WGS 84 to within the accuracy of the transformation.",Accuracy 1 metre.,2823,-22.37,-22.19,166.35,166.54,1,0,9603,-10.18,-350.43,291.37,,,,,1 +616,1294,4304,4326,Accuracy estimate not available.,For military purposes.,1365,31.99,37.14,-2.95,9.09,1,0,9603,-73,-247,227,,,,,1 +617,15815,4728,4326,Determined at 1 satellite station.,"Military and topographic mapping. Accuracy +/- 25m in each axis.",3873,27.58,29.3,-18.22,-13.37,1,0,9603,-307,-92,127,,,,,1 +618,1253,4307,4326,Derived at 3 stations.,For military purposes only. Accuracy 25m in each axis.,3213,18.97,37.14,-8.67,11.99,1,0,9603,-186,-93,310,,,,,0 +619,1255,4307,4326,"CAUTION: Source CRS described by DMA as from Voirol 1960. OGP believes that the data used in the derivation of these parameters contains a blunder. We recommend using transformation North Sahara 1959 to WGS84 (1) (code 1253). Derived at 2 stations.",For military purposes only. Accuracy 25m in each axis.,1365,31.99,37.14,-2.95,9.09,1,0,9603,-123,-206,219,,,,,0 +620,1815,4307,4326,Used by BP in District 3 and In Salah Gas.,Oil industry operations.,2598,25,32,1,3.3,1,0,9606,-152.9,43.8,358.3,2.714,1.386,-2.788,-6.743,0 +621,1816,4307,4326,"Derived at astro station central to concession. Significant and varying differences (>100m) at 4 neighbouring astro stations.",Oil industry operations.,2599,27.5,28.3,8.83,9.92,1,0,9603,-95.7,10.2,158.9,,,,,0 +622,1817,4307,4326,Derived at astro station Guerrara.,Oil industry operations.,2600,31.75,32.42,7.16,8,1,0,9603,-165.914,-70.607,305.009,,,,,0 +623,5630,4307,4326,"Derived at 1 station (L38).",Used by Total in Ahnet licence area.,3917,26.06,27.51,1.26,2.92,1,0,9603,-168.52,-72.05,304.3,,,,,0 +624,5660,4307,4326,Derived in 2006 at 45 points in north and central Algeria.,Accuracy at 75 common points better than 1m..,1026,18.97,38.8,-8.67,11.99,1,0,9606,-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547,1 +625,7442,4307,4326,"Derived at 1 astro station central to concession. Significant and varying differences (>100m) known to exist in neighbouring astro stations.",Oil industry operations.,4382,27.4,28.1,7.66,8.27,1,0,9603,-181.7,64.7,247.2,,,,,0 +626,15874,4307,4326,"Derived at 11 stations throughout blocks 317b, 319b, 321b and 322b. Network based on station P4 (horizontal) and benchmark RN51 (vertical) using EGM96 geoid height. Used by Statoil in Hassi Mouina.",Oil exploration and production. Accuracy 5m.,3402,29.25,31,0,1.25,1,0,9603,-169.559,-72.34,303.102,,,,,0 +627,1234,4309,4326,Accuracy estimate not available.,For military purposes.,3326,-35,-30.09,-58.49,-53.09,1,0,9603,-155,171,37,,,,,1 +628,5386,4309,4326,Derived at 11 stations during 1998 densification of Uruguay control based on SIRGAS 1995.,"Accuracy at stations used for derivation: 0.13 to 1.17m.",3326,-35,-30.09,-58.49,-53.09,1,0,9606,-124.45,183.74,44.64,-0.4384,0.5446,-0.9706,-2.1365,0 +629,6903,4310,4326,Derived at 7 stations.,For military purposes only. Accuracy 3m in each axis.,1207,10.64,16.7,-20.22,-11.36,1,0,9603,-30,190,89,,,,,1 +630,1235,4311,4326,Derived at 5 stations.,"For military purposes. Accuracy 5m, 5m and 8m in X, Y and Z axes.",1222,1.83,9.35,-58.08,-52.66,1,0,9603,-265,120,-358,,,,,1 +631,1194,4312,4326,May be taken as approximate transformation MGI to ETRS89 assuming ETRS89 is equivalent to WGS 84 within the accuracy of the transformation - see tfm code 1024. Information source gives scale as -2.388739 ppm.,Provincial GIS and other applications to an accuracy of 0.5 metres.,1543,46.64,47.84,13.58,16.17,1,0,9607,601.705,84.263,485.227,-4.7354,-1.3145,-5.393,-2.3887,0 +632,1306,4312,4326,Accuracy estimate not available.,For military purposes only.,2370,40.85,46.88,13.38,23.04,1,1,9603,682,-203,480,,,,,0 +633,1471,4312,4326,,For applications to an accuracy of 1.5 metres.,1037,46.4,49.02,9.53,17.17,1,1,9606,-577.326,-90.129,-463.919,-5.136599,-1.474,-5.297044,-2.4232,0 +634,1618,4312,4326,"Same transformation parameters used for MGI to ETRS89 (1) (code 1619).",For applications to an accuracy of 1.5 metres.,1037,46.4,49.02,9.53,17.17,1,0,9606,577.326,90.129,463.919,5.137,1.474,5.297,2.4232,1 +635,1621,4312,4326,"Parameter values from MGI to ETRS89 (2) (code 1620). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1076,41.62,46.54,13,19.43,1,1,9606,551.7,162.9,467.9,6.04,1.96,-11.38,-4.82,0 +636,1786,4312,4326,"Parameter values from MGI to ETRS89 (3) (code 1785). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1212,45.42,46.88,13.38,16.61,1,1,9606,426.9,142.6,460.1,4.91,4.49,-12.42,17.1,0 +637,1794,4312,4326,"For more accurate transformation see MGI to WGS 84 (7) (code 1795).",Oil industry,3536,41.79,43.56,18.45,20.38,1,1,9603,695.5,-216.6,491.1,,,,,0 +638,15982,4312,4326,"Parameter values from MGI to Slovenia 1996 (1) (code 15981). Assumes Slovenia 1996 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1212,45.42,46.88,13.38,16.61,1,1,9607,409.545,72.164,486.872,-3.085957,-5.46911,11.020289,17.919665,0 +639,1609,4313,4326,"Scale difference is given by information source as 0.999999. Given in this record in ppm to assist application usage. Very similar parameter values (to slightly less precision) used for BD72 to ETRS89: see code 1652.",For applications to an accuracy of 1 metre.,1347,49.5,51.51,2.5,6.4,1,0,9607,-99.059,53.322,-112.486,-0.419,0.83,-1.885,-1,0 +640,1610,4313,4326,,For applications to an accuracy of 5 metres.,1347,49.5,51.51,2.5,6.4,1,0,9603,-125.8,79.9,-100.5,,,,,0 +641,15929,4313,4326,"Parameter values from BD72 to ETRS89 (2) (code 15928). Scale difference is given by information source as -1.0000012747. Given in this record in ppm to assist application usage.",For applications to an accuracy of 0.5 metre.,1347,49.5,51.51,2.5,6.4,1,0,9607,-106.8686,52.2978,-103.7239,-0.3366,0.457,-1.8422,-1.2747,1 +642,15749,4313,4326,"Parameter values from BD72 to ETRS89 (2) (code 15748). Scale difference is given by information source as 1.0000012747. Given in this record in ppm to assist application usage.",For applications to an accuracy of 0.5 metre.,1044,49.5,51.88,2.23,6.4,1,1,9607,-106.8686,52.2978,-103.7239,-0.3366,0.457,-1.8422,1.2747,0 +643,1673,4314,4326,"Parameter values from DHDN to ETRS89 (1) (code 1309) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Replaced by DHDN to WGS 84 (2) (tfm code 1777).",For applications with an accuracy at 5 m level.,2326,47.27,55.09,5.87,13.84,1,0,9607,582,105,414,-1.04,-0.35,3.08,8.3,0 +644,1777,4314,4326,"Parameter values from DHDN to ETRS89 (2) (code 1776) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Replaces DHDN to WGS 84 (1) (tfm code 1673).",For applications with an accuracy at 3 m level,2326,47.27,55.09,5.87,13.84,1,0,9606,598.1,73.7,418.2,0.202,0.045,-2.455,6.7,1 +645,15869,4314,4326,"Parameter values taken from RD/83 to ETRS89 (1) (tfm code 15868) assuming that within the accuracy of the transformation ETRS89 is equivalent to WGS 84 and RD/83 is equivalent to DHDN.",For applications with an accuracy at 2m level,1343,50.2,54.74,9.92,15.04,1,0,9606,612.4,77,440.2,-0.054,0.057,-2.797,2.55,0 +646,1517,4315,4326,,"?",3257,7.19,12.68,-15.13,-7.65,1,0,9603,-23,259,-9,,,,,1 +647,1789,4316,4326,"Parameter values taken from Pulkovo 1942 to WGS 84 (9) (code 1293) assuming that","?",1197,43.44,48.27,20.26,31.41,1,1,9603,103.25,-100.4,-307.19,,,,,0 +648,1995,4316,4326,,Oil exploration,3295,43.62,48.27,20.26,29.74,1,0,9603,103.25,-100.4,-307.19,,,,,1 +649,1097,4317,4326,"Parameter values taken from Pulkovo 1942 to WGS 84 (9) (code 1293) assuming that Pulkovo 1942 in Romania is equivalent to Dealul Piscului 1970.","Accuracy 3m, 5m and 3m in X, Y and Z axes.",1197,43.44,48.27,20.26,31.41,1,1,9603,28,-121,-77,,,,,0 +650,1996,4317,4326,,Oil exploration,1197,43.44,48.27,20.26,31.41,1,1,9603,44.107,-116.147,-54.648,,,,,0 +651,1060,4318,4326,,1 metre accuracy.,3267,28.53,30.09,46.54,48.48,1,0,9603,-3.2,-5.7,2.8,,,,,1 +652,1061,4319,4326,,For applications requiring an accuracy of better than 1 metre.,1310,29.17,29.45,47.78,48.16,1,0,9603,-20.8,11.3,2.4,,,,,1 +653,1062,4319,4326,,For applications requiring an accuracy of better than 1 metre.,1310,29.17,29.45,47.78,48.16,1,0,9607,226.702,-193.337,-35.371,2.229,4.391,-9.238,0.9798,0 +654,6910,6881,4326,Derivation not given.,For military purposes. Accuracy not specified.,1340,12.54,19,43.37,53.14,1,0,9603,-24,-203,268,,,,,1 +655,1237,4322,4326,,For scientific purposes.,1262,-90,90,-180,180,1,0,9606,0,0,4.5,0,0,0.554,0.2263,1 +656,1238,4322,4326,,For scientific purposes.,1262,-90,90,-180,180,1,0,9606,0,0,4.5,0,0,0.554,0.219,0 +657,6912,6883,4326,Derived at 6 stations.,"For military purposes. Accuracy 5m, 17m and 38m in X, Y and Z axes.",4220,3.14,3.82,8.37,9.02,1,0,9603,-235,-110,393,,,,,1 +658,1240,4324,4326,,Geodesy.,2346,-90,90,-180,180,1,0,9606,0,0,1.9,0,0,0.814,-0.38,1 +659,5521,4646,4326,,For military purposes. Accuracy unknown.,2807,-11.99,-11.31,43.16,43.55,1,0,9603,-963,510,-359,,,,,1 +660,15822,4732,4326,Derived at 10 satellite stations.,"For military and topographic mapping. Accuracy +/-3 m in each axis.",3191,8.66,19.38,162.27,167.82,1,0,9603,102,52,-38,,,,,1 +661,5327,5324,4326,For many purposes ISN2004 can be considered to be coincident with WGS 84.,"Approximation at the +/- 1m level assuming that ISN2004 is equivalent to WGS 84.",1120,59.96,69.59,-30.87,-5.55,1,0,9603,0,0,0,,,,,1 +662,3817,3819,4326,Horizontal coordinates of 66 points of the National Geodetic Network were used to compute this transformation.,GIS and topographic survey.,1119,45.74,48.58,16.11,22.9,1,0,9607,595.48,121.69,515.35,-4.115,2.9383,-0.853,-3.408,1 +663,6914,6892,4326,"Derived by UK DOS at 10 stations in 1998, RMS ±0.314m. Also published by NGA in Standard 0036 v1.0.0 of 2014-07-08 and in GeoTrans v3.4 software with parameter values rounded to integer.",Topographic mapping.,4183,-4.86,-3.66,55.15,56.01,1,0,9603,-43.685,-179.785,-267.721,,,,,1 +664,6926,6892,4326,"Derived by UKHO at 13 stations in 1999, RMS ±0.271m.",Hydrographic survey and charting.,4183,-4.86,-3.66,55.15,56.01,1,0,9606,-76.269,-16.683,68.562,-6.275,10.536,-4.286,-13.686,0 +665,1920,4645,4326,,"Accuracy +/- 1 metre.",1174,-26.45,-14.83,156.25,174.28,1,1,9603,0,0,0,,,,,0 +666,6913,6894,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,3250,13.05,13.83,-16.88,-13.79,1,0,9603,-63,176,185,,,,,1 +667,15823,4733,4326,Derived at 2 satellite stations.,"For military and topographic mapping. Accuracy +/-25m in each axis.",3190,19.22,19.38,166.55,166.72,1,0,9603,276,-57,149,,,,,1 +668,3830,3824,4326,"Approximation at the +/- 1m level assuming that TWD97 is equivalent to WGS 84.","Accuracy +/- 1m.",1228,17.36,26.96,114.32,123.61,1,0,9603,0,0,0,,,,,1 +669,7443,7373,4326,"Approximation at the +/- 1m level assuming that ONG14 is equivalent to WGS 84. See transformation code 7377 for authoritative values.",Geodesy.,1183,14.33,26.74,51.99,63.38,1,0,9603,0,0,0,,,,,1 +670,5376,5365,4326,,Accuracy 1m.,1074,2.15,11.77,-90.45,-81.43,1,0,9603,0,0,0,,,,,1 +671,15808,4724,4326,Derived at 2 satellite stations.,"Military and topographic mapping. Accuracy +/- 25m in each axis.",3189,-7.49,-7.18,72.3,72.55,1,0,9603,208,-435,-229,,,,,1 +672,5377,5371,4326,,Accuracy 1m.,1186,5,12.51,-84.32,-77.04,1,0,9603,0,0,0,,,,,1 +673,5378,5373,4326,,Accuracy 1m.,1189,-21.05,-0.03,-84.68,-68.67,1,0,9603,0,0,0,,,,,1 +674,15812,4736,4326,,"Scientific mapping. Accuracy +/- 20m in each axis.",3204,-63.08,-62.82,-60.89,-60.35,1,0,9603,260,12,-147,,,,,1 +675,15821,4731,4326,Derived at 1 satellite station.,"For military and topographic mapping. Accuracy +/-25m in each axis.",3195,-18.32,-17.25,177.19,178.75,1,1,9603,51,391,-36,,,,,0 +676,15795,4707,4326,Derived at 1 satellite station. Same transformation parameter values related to same datum area given in original 1987 DMA TR8350.2 edition for Sorol Atoll.,For military purposes only. Accuracy 25m in each axis.,3181,23.69,23.93,-166.36,-166.03,1,0,9603,114,-116,-333,,,,,1 +677,5384,5381,4326,,Accuracy 1m.,1247,-37.77,-30.09,-58.49,-50.01,1,0,9603,0,0,0,,,,,1 +678,15813,4722,4326,Determined from 1 satellite station.,"Military and topographic mapping. Accuracy +/- 25m in each axis.",3529,-54.95,-53.93,-38.08,-35.74,1,0,9603,-794,119,-298,,,,,1 +679,5227,5228,4326,"Parameter values from S-JTSK/05 to ETRS89 (1) (code 5226). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation. Replaces tfm code 1622.",For applications to an accuracy of 1 metre.,1079,48.58,51.06,12.09,18.86,1,0,9607,572.213,85.334,461.94,-4.9732,-1.529,-5.2484,3.5378,1 +680,15771,4692,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from Maupiti 83 to RGPF (1) (tfm code 15759).","Accuracy +/- 1 metre.",3126,-16.57,-16.34,-152.39,-152.14,1,0,9603,217.037,86.959,23.956,,,,,1 +681,15973,4055,4326,"Executes change of sphere/ellipsoid",Web mapping. Accuracy may be no better than 800 metres.,1262,-90,90,-180,180,1,1,9603,0,0,0,,,,,0 +682,5395,5393,4326,,Accuracy 1m.,1087,9.97,14.44,-91.43,-87.65,1,0,9603,0,0,0,,,,,1 +683,15816,4734,4326,Determined at 1 satellite station.,"Military and topographic mapping. Accuracy +/- 25m in each axis.",3184,-40.42,-37,-12.76,-9.8,1,0,9603,-632,438,-609,,,,,1 +684,15842,4739,4326,"Derived at 2 satellite stations. Care: does not use Hong Kong 1963 (code 4838) as the source CRS.","Military mapping. Accuracy +/- 1m.",1118,22.13,22.58,113.76,114.51,1,0,9603,-156,-271,-189,,,,,1 +685,5261,5252,4326,,"Approximation at the +/- 1m level as both TUREF and WGS 84 are realizations of ITRS.",1237,34.42,43.45,25.62,44.83,1,0,9603,0,0,0,,,,,1 +686,1925,4639,4326,,"Accuracy +/- 10 metres.",2815,-13.41,-13.16,-176.25,-176.07,1,1,9603,252,-132,-125,,,,,0 +687,15847,4639,4326,"Replaces information from 2001 (tfm code 1925).","Accuracy +/- 10 metres.",2815,-13.41,-13.16,-176.25,-176.07,1,0,9603,253,-132,-127,,,,,1 +688,15801,4714,4326,Derived at 3 satellite stations.,"Military and topographic mapping; Accuracy +/- 20 m in each axis",3193,-20.31,-17.37,168.09,169.95,1,0,9603,-127,-769,472,,,,,1 +689,7892,7886,4326,"SHGD2015 is realized by ITRF2008 at epoch 2015.0 and can be considered coincident with WGS 84 at epoch 2015.0 Accuracy 3 cm at 1/1/2015 then degrades by 3 cm/yr from 1/1/2015 depending upon epoch of WGS 84 due to motion of the Nubian Plate",For military purposes only. Accuracy 25m in each axis.,3183,-16.08,-15.85,-5.85,-5.58,1,0,9603,0,0,0,,,,,1 +690,15802,4715,4326,No accuracy estimate available.,Military and scientific mapping.,3205,-77.94,-77.17,165.73,167.43,1,0,9603,-104,-129,239,,,,,1 +691,1994,4657,4326,,Low accuracy applications.,3262,63.34,66.59,-24.66,-13.38,1,0,9603,-28,199,5,,,,,1 +692,5351,5340,4326,,Approximation at the sub meter level.,1033,-58.41,-21.78,-73.59,-52.63,1,0,9603,0,0,0,,,,,1 +693,5078,4743,4326,"Parameter values from Karbala 1979 to IGRS (1) (tfm code 5077) assuming that IGRS is equivalent to WGS 84 within the accuracy of the transformation. Replaces Karbala 1979 to WGS 84 (1) (tfm code 15872).",Accuracy 1m.,3625,29.06,37.39,38.79,48.61,1,0,9603,70.995,-335.916,262.898,,,,,1 +694,15872,4743,4326,"Derived from shifts in UTM rectangular coordinates for one point in Basra area provided by Iraq National Oil Exploration Company. Replaced by Karbala 1979 to WGS 84 (2) (tfm code 5078).",Oil exploration.,3397,29.87,31.09,46.46,48.61,1,0,9603,84.1,-320.1,218.7,,,,,0 +695,1951,4658,4326,"Derived at 6 stations. Replaced by Hjorsey 1955 to WGS 84 (2) (code 6909).","Accuracy 3m, 3m and 5m in X, Y and Z axes.",3262,63.34,66.59,-24.66,-13.38,1,0,9603,-73,46,-86,,,,,0 +696,6909,4658,4326,"Derived at 16 stations. Replaces Hjorsey 1955 to WGS 84 (1) (code 1951).","Accuracy 3m, 3m and 6m in X, Y and Z axes.",3262,63.34,66.59,-24.66,-13.38,1,0,9603,-73,47,-83,,,,,1 +697,6373,6365,4326,,Accuracy 1m.,1160,12.1,32.72,-122.19,-84.64,1,0,9603,0,0,0,,,,,1 +698,3894,3889,4326,"Approximation at the +/- 1m level assuming that IGRS is equivalent to WGS 84 within the accuracy of the transformation.",Accuracy 1m.,1124,29.06,37.39,38.79,48.75,1,0,9603,0,0,0,,,,,1 +699,1952,4659,4326,For many purposes ISN93 can be considered to be coincident with WGS 84.,"Approximation at the +/- 1m level assuming that ISN93 is equivalent to WGS 84.",1120,59.96,69.59,-30.87,-5.55,1,0,9603,0,0,0,,,,,1 +700,1957,4660,4326,Derived at 3 stations. Residuals under 1m.,For applications to an accuracy of 1 metre.,2869,70.75,71.24,-9.17,-7.87,1,0,9606,982.6087,552.753,-540.873,6.6816266,-31.6114924,-19.84816,16.805,1 +701,1958,4661,4326,,LKS92 is a national realization of ETRS89 and coincident to WGS84 within 1 metre. This transformation has an accuracy equal to the coincidence figure.,1139,55.67,58.09,19.06,28.24,1,0,9603,0,0,0,,,,,1 +702,15849,4213,4326,"Used by Elf / CGG between December 1991 and March 1992. Probably derived from results of concatenated tfm Beduaram to WGS 84 (1) (code 8634).",Oil exploration.,2771,12.8,16.7,7.81,14.9,1,0,9603,-106,-87,188,,,,,1 +703,15803,4716,4326,Derived at 4 satellite stations.,"Military and topographic mapping. Accuracy +/- 15 m in each axis.",3196,-4.76,-2.68,-174.6,-170.66,1,0,9603,298,-304,-375,,,,,1 +704,3915,3906,4326,"Parameter values from MGI 1901 to ETRS89 (3) (code 3914). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1212,45.42,46.88,13.38,16.61,1,0,9606,426.9,142.6,460.1,4.91,4.49,-12.42,17.1,0 +705,3917,3906,4326,"Parameter values from MGI 1901 to Slovenia 1996 (1) (code 3916). Assumes Slovenia 1996 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1212,45.42,46.88,13.38,16.61,1,0,9607,409.545,72.164,486.872,-3.085957,-5.46911,11.020289,17.919665,0 +706,3962,3906,4326,Accuracy estimate not available from information source but established empirically by OGP.,For military purposes only.,2370,40.85,46.88,13.38,23.04,1,0,9603,682,-203,480,,,,,1 +707,3964,3906,4326,"Parameter values from MGI 1901 to ETRS89 (2) (code 3963). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,3234,42.34,46.54,13.43,19.43,1,0,9606,551.7,162.9,467.9,6.04,1.96,-11.38,-4.82,0 +708,3965,3906,4326,,Oil industry,3536,41.79,43.56,18.45,20.38,1,0,9603,695.5,-216.6,491.1,,,,,0 +709,6206,3906,4326,Derived at 13 stations.,"1m accuracy. Residuals generally less than +/- 1m horizontally and vertically.",1148,40.85,42.36,20.45,23.04,1,0,9607,521.748,229.489,590.921,-4.029,-4.488,15.521,-9.78,0 +710,7676,3906,4326,"Parameter values from MGI 1901 to ETRS89 (6) (code 7675). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications with an accuracy of 1m.,3534,41.85,46.19,18.81,23.01,1,0,9607,577.88891,165.22205,391.18289,-4.9145,0.94729,13.05098,7.78664,0 +711,1962,4662,4326,Withdrawn by information source and replaced by improved information from local authority - see tfm code 15903.,"Accuracy +/- 10 metres.",2822,-22.45,-20.03,163.92,167.09,1,0,9603,-13,-348,292,,,,,0 +712,1963,4662,4326,Withdrawn by information source and replaced by improved information - see tfm code 15903.,"Accuracy better than +/- 1 metre.",2822,-22.45,-20.03,163.92,167.09,1,0,9606,97.295,-263.247,310.882,-1.5999,0.8386,3.1409,13.3259,0 +713,15903,4662,4326,"Parameter values taken from IGN72 Grande Terre to RGNC91-93 (1) ( code 15882) assuming that RGNC91-93 is equivalent to WGS 84 to within the accuracy of the transformation.","Accuracy +/- 2 metres.",2822,-22.45,-20.03,163.92,167.09,1,0,9603,-11.64,-348.6,291.98,,,,,1 +714,15878,4748,4326,"Parameter values taken from Viti Levu 1912 to WGS 84 (1) (tfm code 15897). Approximation at the +/- 50m level assuming that CRS 4748 is equivalent to CRS 4752 within the transformation accuracy. Source CRSs 4748 and 4752 are independent but connected.","For applications with an accuracy of +/-50m.",3401,-17.07,-16.1,178.42,-179.77,1,0,9603,51,391,-36,,,,,1 +715,1966,4663,4326,Derived at Forte de Sao Tiago.,For low resolution applications.,2870,32.58,33.15,-17.31,-16.23,1,0,9603,-502.862,-247.438,312.724,,,,,1 +716,1967,4663,4326,,For medium resolution applications.,2870,32.58,33.15,-17.31,-16.23,1,0,9607,-210.502,-66.902,-48.476,-2.094,15.067,5.817,0.485,0 +717,6911,6882,4326,Derivation not given.,For military purposes. Accuracy not specified.,3269,33.06,34.65,35.04,36.63,1,0,9603,-183,-15,273,,,,,1 +718,15880,4749,4326,,"Accuracy +/- 1 metre.",1174,-26.45,-14.83,156.25,174.28,1,0,9603,0,0,0,,,,,1 +719,1968,4664,4326,Calculated in 2001.,For low resolution applications.,2871,37.65,37.96,-25.92,-25.08,1,0,9603,-204.633,140.216,55.199,,,,,0 +720,1969,4664,4326,Calculated in 2001.,For medium resolution applications.,2871,37.65,37.96,-25.92,-25.08,1,0,9607,-211.939,137.626,58.3,0.089,-0.251,-0.079,0.384,0 +721,1970,4664,4326,Mean for all islands in group.,For low resolution applications.,1345,36.87,37.96,-25.92,-24.62,1,0,9603,-204.619,140.176,55.226,,,,,1 +722,1971,4664,4326,Mean for all islands in group.,For medium resolution applications.,1345,36.87,37.96,-25.92,-24.62,1,0,9607,-208.719,129.685,52.092,0.195,0.014,-0.327,0.198,0 +723,15881,4750,4326,"Parameter values taken from ST87 Ouvea to RGNC91-93 (1) ( code 15885) assuming that RGNC91-93 is equivalent to WGS 84 to within the accuracy of the transformation.","Accuracy better than +/- 1 metre.",2813,-20.77,-20.34,166.44,166.71,1,0,9603,-56.263,16.136,-22.856,,,,,1 +724,1972,4665,4326,,For low resolution applications.,2872,38.57,38.86,-27.44,-26.97,1,0,9603,-106.301,166.27,-37.916,,,,,0 +725,1973,4665,4326,,For medium resolution applications.,2872,38.57,38.86,-27.44,-26.97,1,0,9607,-105.854,165.589,-38.312,0.003,0.026,-0.024,-0.048,0 +726,1974,4665,4326,,For low resolution applications.,2873,38.46,38.7,-28.9,-28.54,1,0,9603,-106.248,166.244,-37.845,,,,,0 +727,1975,4665,4326,,For medium resolution applications.,2873,38.46,38.7,-28.9,-28.54,1,0,9607,-104,162.924,-38.882,0.075,0.071,-0.051,-0.338,0 +728,1976,4665,4326,,For low resolution applications.,2874,38.32,38.61,-28.61,-27.98,1,0,9603,-106.044,166.655,-37.876,,,,,0 +729,1977,4665,4326,,For medium resolution applications.,2874,38.32,38.61,-28.61,-27.98,1,0,9607,-95.323,166.098,-69.942,0.215,1.031,-0.047,1.922,0 +730,1978,4665,4326,,For low resolution applications.,2875,38.48,38.8,-28.37,-27.71,1,0,9603,-106.253,166.239,-37.854,,,,,0 +731,1979,4665,4326,,For medium resolution applications.,2875,38.48,38.8,-28.37,-27.71,1,0,9607,-100.306,161.246,-48.761,0.192,0.385,-0.076,0.131,0 +732,1980,4665,4326,Mean for all islands in group.,For low resolution applications.,1301,38.32,39.14,-28.9,-26.97,1,0,9603,-106.226,166.366,-37.893,,,,,1 +733,1981,4665,4326,Mean for all islands in group.,For medium resolution applications.,1301,38.32,39.14,-28.9,-26.97,1,0,9607,-103.088,162.481,-28.276,-0.167,-0.082,-0.168,-1.504,0 +734,1986,4666,4326,May be taken as a transformation from Lisbon 1890 to ETRS89 - see tfm code 5039.,For low resolution applications.,1294,36.95,42.16,-9.56,-6.19,1,0,9603,508.088,-191.042,565.223,,,,,1 +735,1990,4666,4326,,For medium resolution applications.,1294,36.95,42.16,-9.56,-6.19,1,0,9607,631.392,-66.551,481.442,-1.09,4.445,4.487,-4.43,0 +736,15804,4717,4326,Derived at 19 satellite stations.,"US space and military operations. Accuracy +/- 3 m in each axis.",3206,20.86,30.83,-82.33,-72.68,1,0,9603,-2,151,181,,,,,1 +737,5267,5264,4326,DRUKREF 03 and WGS 84 are both realisations of ITRS.,For applications to an accuracy of 1 metre.,1048,26.7,28.33,88.74,92.13,1,0,9603,0,0,0,,,,,1 +738,1993,4667,4326,For all practical purposes this transformation is exact.,Boundary demarcation.,2876,29.06,30.32,46.36,48.61,1,0,9603,0,0,0,,,,,1 +739,15897,4752,4326,"Derived at 1 satellite station. Replaced by Viti Levu 1912 to WGS 84 (2) (code 6895).","For military and topographic mapping. Accuracy +/-25m in each axis.",3195,-18.32,-17.25,177.19,178.75,1,0,9603,51,391,-36,,,,,0 +740,6895,4752,4326,"Derived at 9 stations. Replaces Viti Levu 1912 to WGS 84 (1) (code 15897).","For military and topographic mapping. Accuracy +/-3m in each axis.",3195,-18.32,-17.25,177.19,178.75,1,0,9603,98,390,-22,,,,,1 +741,5470,5451,4326,"Parameter values taken from Ocotepeque to CR05 (1) (tfm code 6890) assuming that CR05 is equivalent to WGS 84 within the accuracy of the transformation.",Topographic mapping.,3232,7.98,11.22,-85.97,-82.53,1,0,9603,213.11,9.37,-74.95,,,,,0 +742,5473,5451,4326,"Rotations in original source given in radians are equivalent to Rx = 2.35"", Ry = -0.06"", Rz = 6.39"".",Topographic mapping.,3232,7.98,11.22,-85.97,-82.53,1,1,9607,213.116,9.358,-74.946,2.351,-0.06147,6.39,-5.22,0 +743,5474,5451,4326,,Topographic mapping.,3876,7.98,17.83,-92.29,-82.53,1,1,9603,205.435,-29.099,292.202,,,,,0 +744,6891,5451,4326,"Concatenation (via NAD27) of transformations 6888 and 1171. Accuracy not given, but accuracy of constituent transformations given as 9m and 10m respectively.",For military purposes.,3876,7.98,17.83,-92.29,-82.53,1,0,9603,205,96,-98,,,,,1 +745,15752,4668,4326,Derived at 22 stations.,For military purposes. Accuracy 3m in each axis.,1297,34.88,71.21,-10.56,31.59,1,0,9603,-86,-98,-119,,,,,1 +746,15810,4735,4326,Derived at 1 satellite station.,"Military and topographic mapping. Accuracy +/- 25m in each axis.",3192,5.21,5.43,162.85,163.1,1,0,9603,647,1777,-1124,,,,,1 +747,15908,4754,4326,Derived at 5 stations throughout Libya used to define LGD2006 in May 2006.,For applications to an accuracy of 0.1 metre.,1143,19.5,35.23,9.31,26.21,1,0,9603,-208.4058,-109.8777,-2.5764,,,,,1 +748,4477,4463,4326,"Approximation at the +/- 1m level assuming that RGSPM06 is equivalent to WGS 84.","Accuracy +/- 1 metre.",1220,43.41,47.37,-57.1,-55.9,1,0,9603,0,0,0,,,,,1 +749,5501,5489,4326,"Approximation at the +/- 1m level assuming that RGAF09 is equivalent to WGS 84 within the accuracy of the transformation.","Accuracy +/- 1 metre.",2824,14.08,18.54,-63.66,-57.52,1,0,9603,0,0,0,,,,,1 +750,15912,4755,4326,"Approximation at the +/- 1m level assuming that DGN95 is equivalent to WGS 84 within the accuracy of the transformation.",Accuracy 1 metre.,1122,-13.95,7.79,92.01,141.46,1,0,9603,0,0,0,,,,,1 +751,1555,4158,4326,Derived in 1989 by ONI for Amoco.,Oil exploration.,3143,9.99,10.9,-61.98,-60.85,1,0,9603,-0.465,372.095,171.736,,,,,1 +752,1556,4158,4326,"DMA does not differentiate between Naparima 1955 (Trinidad) and Naparima 1972 (Tobago). Consequently for Trinidad IOGP has duplicated this transformation as Naparima 1972 to WGS 84 (3) - see code 1307.",For military purposes only. Accuracy given by DMA is 15m in each axis.,3143,9.99,10.9,-61.98,-60.85,1,0,9603,-2,374,172,,,,,0 +753,4476,4470,4326,"Approximation at the +/- 1m level assuming that RGM04 is equivalent to WGS 84.","Accuracy +/- 1 metre.",1159,-14.49,-11.33,43.68,46.7,1,0,9603,0,0,0,,,,,1 +754,5194,4756,4326,Used by Total in Mekong delta.,Academic research not officially adopted.,3770,9.34,11.03,104.25,107.11,1,0,9607,-192.873,-39.382,-111.202,0.00205,0.0005,-0.00335,0.0188,0 +755,6960,4756,4326,,Academic research not officially adopted.,3328,8.5,23.33,102.14,109.52,1,0,9607,-191.90441429,-39.30318279,-111.45032835,-0.00928836,0.01975479,-0.00427372,0.252906278,1 +756,1931,4643,4326,,"Accuracy better than +/- 1 metre.",2821,-19.85,-19.5,163.54,163.75,1,0,9606,-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002,1 +757,4290,4475,4326,"Parameter values taken from Cadastre 1997 to RGM04 (1) (transformation code 4478) assuming that RGM04 is coincident with WGS 84 within the accuracy of the transformation.","Accuracy +/- 1 metre.",3340,-13.05,-12.61,44.98,45.35,1,0,9603,-381.788,-57.501,-256.673,,,,,1 +758,5374,5354,4326,,Accuracy 1m.,1049,-22.91,-9.67,-69.66,-57.52,1,0,9603,0,0,0,,,,,1 +759,15787,4701,4326,Derived by Topnav in 1991 at station TSH 85.,Oil exploration. Accuracy 5m.,3171,-6.04,-4.28,12.17,16.28,1,0,9603,-79.9,-158,-168.9,,,,,1 +760,4832,4483,4326,,Accuracy 1m.,1160,12.1,32.72,-122.19,-84.64,1,0,9603,0,0,0,,,,,1 +761,1917,4633,4326,Withdrawn by information source and replaced by improved information from local authority - see tfm code 15902.,"Accuracy +/- 10 metres.",2814,-21.24,-20.62,166.98,167.52,1,0,9603,336,223,-231,,,,,0 +762,1927,4633,4326,Withdrawn by information source and replaced by improved information - see tfm code 15902.,"Accuracy better than +/- 1 metre.",2814,-21.24,-20.62,166.98,167.52,1,0,9606,137.092,131.66,91.475,-1.9436,-11.5993,-4.3321,-7.4824,0 +763,15902,4633,4326,"Parameter values taken from IGN56 Lifou to RGNC91-93 (1) ( code 15883) assuming that RGNC91-93 is equivalent to WGS 84 to within the accuracy of the transformation.",Accuracy 1 metre.,2814,-21.24,-20.62,166.98,167.52,1,0,9603,335.47,222.58,-230.94,,,,,1 +764,15925,4758,4326,,For all practical purposes JAD2001 can be considered to be coincident with WGS 84.,1128,14.08,19.36,-80.6,-74.51,1,0,9603,0,0,0,,,,,1 +765,6711,6706,4326,"Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84. RDN2008 is a regional realisation of ETRS89.","Accuracy +/- 1 metre.",1127,34.76,47.1,5.93,18.99,1,0,9603,0,0,0,,,,,1 +766,15845,4161,4326,Transformation parameter precision given to millimetres in information source but due to accuracy rounded to nearest decimetre for EPSG database.,Geodetic surveying within the oil industry. Accuracy 25 m.,1265,-46.7,-45.19,-69.5,-67.1,1,0,9603,27.5,14,186.4,,,,,1 +767,15931,4759,4326,"Approximation at the +/- 1m level assuming that NAD83(NSRS2007) is equivalent to WGS 84 within the accuracy of the transformation.",For applications to an accuracy of 1 metre.,1511,14.92,74.71,167.65,-63.88,1,0,9603,0,0,0,,,,,1 +768,1540,4163,4326,,Accuracy better than 1 metre.,1257,8.95,19,41.08,57.96,1,0,9603,0,0,0,,,,,1 +769,4905,5013,4326,,PTRA08 and WGS 84 are realizations of ITRS coincident to within 1 metre. This transformation has an accuracy equal to the coincidence figure.,3670,29.24,43.07,-35.58,-12.48,1,0,9603,0,0,0,,,,,1 +770,6195,5527,4326,"Parameter values from SAD69(96) to SIRGAS 2000 (2)) (tfm code 5881) assuming that SIRGAS 2000 and WGS 84 are equal within the accuracy of the transformation, based on SAD69 to SIRGAS 2000 (1)) (tfm code 15485). Used by Petrobras and ANP from 1994.","Accuracy generally better than 1m except in Amazon basin where it degenerates to 5m. Should be used only to transform data obtained independently of the classical geodetic network (GPS observations conducted after 1994).",1053,-35.71,7.04,-74.01,-25.28,1,0,9603,-67.35,3.88,-38.22,,,,,1 +771,15806,4719,4326,Derived at 1 satellite station.,"Military and topographic mapping. Accuracy +/- 25m in each axis",3188,-27.25,-27.01,-109.51,-109.16,1,0,9603,211,147,111,,,,,1 +772,15860,4702,4326,Mauritania 1999 can be considered to be the same as WGS 84 within the accuracy of this transformation.,Minerals management. Accuracy 1m.,1157,14.72,27.3,-20.04,-4.8,1,0,9603,0,0,0,,,,,1 +773,15971,4762,4326,"Approximation at the +/- 1m level assuming that BDA2000 is equivalent to WGS 84.","Accuracy +/- 1 metre.",1047,28.91,35.73,-68.83,-60.7,1,0,9603,0,0,0,,,,,1 +774,5375,5360,4326,,Accuracy 1m.,1066,-59.87,-17.5,-113.21,-65.72,1,0,9603,0,0,0,,,,,1 +775,15972,4763,4326,"Approximation at the +/- 1m level assuming that Pitcairn 2006 is equivalent to WGS 84.","Accuracy +/- 1 metre.",3208,-25.14,-25,-130.16,-130.01,1,0,9603,0,0,0,,,,,1 +776,1558,4166,4326,Derived at 5 stations.,For military purposes. Accuracy 1m in each axis.,3266,33.14,38.64,124.53,131.01,1,0,9603,0,0,0,,,,,1 +777,4084,4081,4326,"Approximation at the +/- 1m level assuming that REGCAN95 is equivalent to WGS 84.","Accuracy +/- 1m.",3199,24.6,32.76,-21.93,-11.75,1,0,9603,0,0,0,,,,,1 +778,15974,4764,4326,"Approximation at the +/- 1m level assuming that RSRGD2000 is equivalent to WGS 84.","Accuracy +/- 1 metre.",3558,-90,-59.99,144.99,-144.99,1,0,9603,0,0,0,,,,,1 +779,5553,5546,4326,"Exact in 1994 but due to significant and variable tectonic activity in PNG, in 2011 PNG94 and WGS 84 differ generally by 2m but in areas of significant tectonic activity differences can exceed 9m.",Approximation at the 2-10m level.,1187,-14.75,2.58,139.2,162.81,1,0,9603,0,0,0,,,,,1 +780,15870,4679,4326,Derived at 5 points in 2002.,Hydrographic survey,2967,19.37,21.34,-17.08,-15.88,1,0,9603,-80.01,253.26,291.19,,,,,1 +781,15817,4727,4326,"Derived at 1 satellite station. Information source states ""provided for historical purposes only. These parameter [values] should not be used"". Replaced by Midway 1961 to WGS 84 (2) (tfm code 15818).","Military and topographic mapping. Accuracy +/- 25m in each axis.",3202,28.13,28.28,-177.45,-177.31,1,0,9603,912,-58,1227,,,,,0 +782,15818,4727,4326,"Derived at 1 satellite station. Replaces Midway 1961 to WGS 84 (1) (tfm code 15817).","Military and topographic mapping. Accuracy +/- 25m in each axis.",3202,28.13,28.28,-177.45,-177.31,1,0,9603,403,-81,277,,,,,1 +783,15976,4765,4326,"Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.","Accuracy +/- 1 metre.",1212,45.42,46.88,13.38,16.61,1,0,9603,0,0,0,,,,,1 +784,15820,4730,4326,Derived at 1 satellite station.,For military and topographic mapping. Accuracy 25m in each axis.,3194,-17.32,-14.57,166.47,168.71,1,0,9603,170,42,84,,,,,1 +785,15709,4680,4326,Derived by IGN in 1992 at 7 stations within Nouakchott city.,Oil exploration.,2972,17.89,18.25,-16.11,-15.83,1,0,9603,124.5,-63.5,-281,,,,,1 +786,15805,4718,4326,Derived at 1 satellite station.,"Military and topographic mapping. Accuracy +/- 25m in each axis.",3198,-8.86,-7.52,156.44,158.2,1,0,9603,230,-199,-752,,,,,1 +787,15807,4718,4326,Derived at 1 satellite station.,"Military and topographic mapping. Accuracy +/- 25m in each axis.",3197,-9.98,-9.2,159.55,160.88,1,0,9603,252,-209,-751,,,,,0 +788,5585,4023,4326,"Parameter values from MOLDREF99 to ETRS89 (1) (code 5584). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications with an accuracy of 1m.,1162,45.44,48.47,26.63,30.13,1,0,9603,0,0,0,,,,,1 +789,15831,4737,4326,"Approximation at the +/- 1m level assuming that ITRF2000 is equivalent to WGS 84.","Accuracy +/- 1 metre.",1135,28.6,40.27,122.71,134.28,1,0,9603,0,0,0,,,,,1 +790,5590,5561,4326,"Derived through concatenation of UCS-2000 to S-42 (1) (tfm code 5586 reversed) [an approximation] and S-42 to WGS 84 (16) (tfm code 15865) [derived for whole FSU rather than Ukraine]. Replaced by UCS-2000 to WGS 84 (2) (tfm code 5840).",Accuracy 5 metres.,1242,43.18,52.38,22.15,40.18,1,0,9607,25,-141,-78.5,0,-0.35,-0.736,0,1 +791,5823,5561,4326,"Parameter values taken from Ukraine 2000 to ITRF2005 (1) (code 5822) assuming that ITRS2005 is equivalent to WGS 84 within the accuracy of the transformation.","Approximation at the +/- 1m level assuming that ITRS2005 is equivalent to WGS 84.",1242,43.18,52.38,22.15,40.18,1,1,9603,24,-121,-76,,,,,0 +792,5840,5561,4326,"Rounded parameter values taken from UCS-2000 to ITRF2000 (1) (code 7817) assuming that WGS 84 is equivalent to ITRS2000 within the accuracy of the transformation. Replaces UCS-2000 to WGS 84 (1) (tfm code 5590).","Approximation at the +/- 1m level assuming that WGS 84 is equivalent to ITRS2000.",1242,43.18,52.38,22.15,40.18,1,0,9603,24,-121,-76,,,,,0 +793,6143,4726,4326,"Parameter values are taken from SIGD59 to CIGD11 (1) (code 6137) assuming that CIGD11 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1m.,3186,19.63,19.78,-80.14,-79.69,1,0,9607,8.853,-52.644,180.304,0.393,2.323,-2.96,-24.081,1 +794,15814,4726,4326,Determined from 1 satellite station.,"Military mapping. Accuracy +/- 25m in each axis.",3186,19.63,19.78,-80.14,-79.69,1,0,9603,42,124,147,,,,,0 +795,15829,4726,4326,Determined from 2 satellite stations.,"Topographic survey. Accuracy +/- 1m.",3186,19.63,19.78,-80.14,-79.69,1,0,9603,44.4,109,151.7,,,,,0 +796,15700,4682,4326,Derived at origin station in Dhaka.,Oil exploration.,1041,18.56,26.64,88.01,92.67,1,1,9603,283.8,735.9,261.1,,,,,0 +797,15779,4682,4326,Derived at origin station in Dhaka. Source information given to 3 decimal places but rounded by OGP to be commensurate with stated accuracy.,Oil exploration.,1041,18.56,26.64,88.01,92.67,1,0,9603,283.7,735.9,261.1,,,,,1 +798,1919,4635,4326,,"Accuracy better than +/- 1 metre.",2813,-20.77,-20.34,166.44,166.71,1,1,9606,-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798,0 +799,15708,4683,4326,Derived during GPS campaign which established PRS92 coordinates at 330 first order stations.,"Accuracy: 1-10 parts per million.",1190,3,22.18,116.04,129.95,1,0,9607,-127.62,-67.24,-47.04,3.068,-4.903,-1.578,-1.06,1 +800,6701,5246,4326,"Approximation at the +/- 1m level assuming that GDBD2009 is equivalent to WGS 84 within the accuracy of the transformation.",Accuracy 1m.,1055,4.01,6.31,112.37,115.37,1,0,9603,0,0,0,,,,,1 +801,1837,4257,4326,,Oil exploration.,1316,-6.54,-1.88,118.71,120.78,1,0,9603,-587.8,519.75,145.76,,,,,1 +802,15713,4684,4326,Derived at 1 station.,For military purposes only. Accuracy 25m in each axis.,3274,-0.69,7.08,72.81,73.69,1,0,9603,-133,-321,50,,,,,1 +803,6177,6135,4326,"Approximation at the +/- 1m level assuming that CIGD11 is equivalent to WGS 84.","Accuracy +/- 1m.",1063,17.58,20.68,-83.6,-78.72,1,0,9603,0,0,0,,,,,1 +804,4064,4046,4326,"Approximation at the +/- 1m level assuming that RGRDC 2005 is equivalent to WGS 84 within the accuracy of the transformation.",Accuracy 1m.,3613,-13.46,-3.41,11.79,29.81,1,0,9603,0,0,0,,,,,1 +805,15875,4721,4326,Derived at 20 stations. Also published by NGA in GeoTrans v3.4 software with parameter values rounded to integer.,"For military purposes. Accuracy 5m, 3m and 2m in X, Y and Z axes.",3398,-19.22,-16.1,176.81,-179.77,1,0,9603,265.025,384.929,-194.046,,,,,1 +806,7445,6311,4326,"Parameter values from CGRS93 to ETRS89 (1) (code 7444). Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.",Small scale hydrographic and aviation mapping.,3236,34.59,35.74,32.2,34.65,1,1,9606,8.846,-4.394,-1.122,0.00237,0.146528,-0.130428,0.783926,0 +807,7721,6311,4326,"Parameter values from CGRS93 to ETRS89 (1) (code 7720). Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.",Small scale hydrographic and aviation mapping.,3236,34.59,35.74,32.2,34.65,1,0,9607,8.846,-4.394,-1.122,0.00237,0.146528,-0.130428,0.783926,1 +808,5599,5593,4326,,Approximation at the 1m level.,3889,54.33,54.83,10.66,12.01,1,0,9603,0,0,0,,,,,1 +809,15832,4687,4326,"Transformation is to original definition of WGS 84. It is consistent with later WGS 84 realisations G730, G873 and G1150 to no better than 1m.","Accuracy +/- 0.5 metre (to original definition of WGS 84 - see remarks).",1098,-31.24,-4.52,-158.13,-131.97,1,0,9607,0.072,-0.507,-0.245,0.0183,-0.0003,0.007,-0.0093,1 +810,15833,4687,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84.","Accuracy +/- 1 metre.",1098,-31.24,-4.52,-158.13,-131.97,1,0,9603,0,0,0,,,,,0 +811,1921,4636,4326,,"Accuracy +/- 10 metres.",2817,-66.78,-66.1,139.44,141.5,1,0,9603,365,194,166,,,,,1 +812,15772,4688,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from Fatu Iva 72 to RGPF (1) (tfm code 15760).","Accuracy +/- 2 metres.",3133,-10.6,-10.36,-138.75,-138.54,1,0,9607,347.103,1078.125,2623.922,33.8875,-70.6773,9.3943,186.074,1 +813,5236,5233,4326,Derived at 58 stations.,Accuracy 14m.,3310,5.86,9.88,79.64,81.95,1,0,9607,-0.293,766.95,87.713,-0.195704,-1.695068,-3.473016,-0.039338,1 +814,4077,4075,4326,"Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84. SREF98 is a regional realisation of ETRS89.","Accuracy +/- 1 metre.",3534,41.85,46.19,18.81,23.01,1,0,9603,0,0,0,,,,,1 +815,4835,4690,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from Tahiti 79 to RGPF (1) (tfm code 15756).","Accuracy +/- 1 metre.",3124,-17.93,-17.44,-149.7,-149.09,1,0,9607,221.525,152.948,176.768,2.3847,1.3896,0.877,11.4741,1 +816,1922,4637,4326,,"Accuracy +/- 10 metres.",2818,-67.13,-65.61,136,142,1,0,9603,325,154,172,,,,,1 +817,15797,4712,4326,Derived at 2 satellite stations.,For military purposes only. Accuracy 25m in each axis.,3182,-8.03,-7.83,-14.46,-14.24,1,0,9603,-205,107,53,,,,,1 +818,15769,4691,4326,"Approximation at the +/- 1m level assuming that RGPF is equivalent to WGS 84. Parameter values taken from Moorea 87 to RGPF (1) (tfm code 15757).","Accuracy +/- 1 metre.",3125,-17.63,-17.41,-150,-149.73,1,0,9607,215.525,149.593,176.229,3.2624,1.692,1.1571,10.4773,1 +819,6142,4723,4326,"Parameter values are taken from GCGD59 to CIGD11 (1) (code 6136) assuming that CIGD11 and WGS 84 can be considered the same to within the accuracy of the transformation.",For applications to an accuracy of 1m.,3185,19.21,19.41,-81.46,-81.04,1,0,9607,-179.483,-69.379,-27.584,7.862,-8.163,-6.042,-13.925,1 +820,15830,4723,4326,Determined from 6 satellite stations.,"Topographic survey. Accuracy +/- 1m.",3185,19.21,19.41,-81.46,-81.04,1,0,9603,67.8,106.1,138.8,,,,,0 +821,4066,4695,4326,"Parameter values taken from Katanga 1955 to RGRDC 2005 (1) (code 4065) assuming that RGRDC 2005 is equivalent to WGS 84 within the accuracy of the transformation.",Accuracy 1.5m.,3614,-12.01,-11.13,26.38,27.75,1,0,9603,-103.746,-9.614,-255.95,,,,,1 +822,15746,4693,4326,Derived in Tombak district in March 2005. Used for South Pars phase 11 and Pars LNG plants.,Petroleum Exploration and Production.,3141,27.63,27.81,52.09,52.26,1,0,9603,0,-0.15,0.68,,,,,1 +823,1441,4601,4326,,"?",1273,16.94,17.22,-61.95,-61.61,1,0,9603,-255,-15,71,,,,,1 +824,15811,4601,4326,Determined from 1 satellite station.,"Military mapping. Accuracy +/- 25m in each axis.",1273,16.94,17.22,-61.95,-61.61,1,0,9603,-270,13,62,,,,,0 +825,1442,4602,4326,,"?",3239,15.14,15.69,-61.55,-61.2,1,0,9603,725,685,536,,,,,1 +826,1443,4603,4326,,"?",3118,11.94,12.29,-61.84,-61.54,1,0,9603,72,213.7,93,,,,,1 +827,1444,4604,4326,Derived at 1 satellite station.,Accuracy 25m in each axis.,3279,16.62,16.87,-62.29,-62.08,1,0,9603,174,359,365,,,,,1 +828,1445,4605,4326,,"?",3297,17.06,17.46,-62.92,-62.5,1,0,9603,9,183,236,,,,,1 +829,15750,4605,4326,Derived at 2 stations.,"For military purposes. Accuracy 25m in each of X, Y and Z axes.",3297,17.06,17.46,-62.92,-62.5,1,0,9603,-7,215,225,,,,,0 +830,1446,4606,4326,,"?",3298,13.66,14.16,-61.13,-60.82,1,0,9603,-149,128,296,,,,,1 +831,6897,4606,4326,Derived at 3 stations.,For military purposes only. Accuracy 1m in each axis.,3298,13.66,14.16,-61.13,-60.82,1,0,9603,-153,153,307,,,,,0 +832,1959,4607,4326,Derived at 4 points.,1m accuracy.,3300,12.54,13.44,-61.52,-61.07,1,0,9603,195.671,332.517,274.607,,,,,1 diff --git a/resources/gcs.csv b/resources/gcs.csv new file mode 100644 index 0000000000..e6d8ae6180 --- /dev/null +++ b/resources/gcs.csv @@ -0,0 +1,514 @@ +"COORD_REF_SYS_CODE","COORD_REF_SYS_NAME","DATUM_CODE","DATUM_NAME","GREENWICH_DATUM","UOM_CODE","ELLIPSOID_CODE","PRIME_MERIDIAN_CODE","SHOW_CRS","DEPRECATED","COORD_SYS_CODE","COORD_OP_CODE","COORD_OP_CODE_MULTI","COORD_OP_METHOD_CODE","DX","DY","DZ","RX","RY","RZ","DS" +3819,HD1909,1024,Hungarian Datum 1909,1024,9122,7004,8901,1,0,6422,3817,0,9607,595.48,121.69,515.35,-4.115,2.9383,-0.853,-3.408 +3821,TWD67,1025,Taiwan Datum 1967,1025,9122,7050,8901,1,0,6422,,0,,,,,,,, +3824,TWD97,1026,Taiwan Datum 1997,1026,9122,7019,8901,1,0,6422,3830,0,9603,0,0,0,,,, +3889,IGRS,1029,Iraqi Geospatial Reference System,1029,9122,7019,8901,1,0,6422,3894,0,9603,0,0,0,,,, +3906,MGI 1901,1031,MGI 1901,1031,9122,7004,8901,1,0,6422,3962,1,9603,682,-203,480,,,, +4001,Unknown datum based upon the Airy 1830 ellipsoid,6001,"Not specified (based on Airy 1830 ellipsoid)",6001,9122,7001,8901,0,0,6422,,0,,,,,,,, +4002,Unknown datum based upon the Airy Modified 1849 ellipsoid,6002,"Not specified (based on Airy Modified 1849 ellipsoid)",6002,9122,7002,8901,0,0,6422,,0,,,,,,,, +4003,Unknown datum based upon the Australian National Spheroid,6003,"Not specified (based on Australian National Spheroid)",6003,9122,7003,8901,0,0,6422,,0,,,,,,,, +4004,Unknown datum based upon the Bessel 1841 ellipsoid,6004,"Not specified (based on Bessel 1841 ellipsoid)",6004,9122,7004,8901,0,0,6422,,0,,,,,,,, +4005,Unknown datum based upon the Bessel Modified ellipsoid,6005,"Not specified (based on Bessel Modified ellipsoid)",6005,9122,7005,8901,0,0,6422,,0,,,,,,,, +4006,Unknown datum based upon the Bessel Namibia ellipsoid,6006,"Not specified (based on Bessel Namibia ellipsoid)",6006,9122,7046,8901,0,0,6422,,0,,,,,,,, +4007,Unknown datum based upon the Clarke 1858 ellipsoid,6007,"Not specified (based on Clarke 1858 ellipsoid)",6007,9122,7007,8901,0,0,6422,,0,,,,,,,, +4008,Unknown datum based upon the Clarke 1866 ellipsoid,6008,"Not specified (based on Clarke 1866 ellipsoid)",6008,9122,7008,8901,0,0,6422,,0,,,,,,,, +4009,Unknown datum based upon the Clarke 1866 Michigan ellipsoid,6009,"Not specified (based on Clarke 1866 Michigan ellipsoid)",6009,9122,7009,8901,0,1,6422,,0,,,,,,,, +4010,"Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid",6010,"Not specified (based on Clarke 1880 (Benoit) ellipsoid)",6010,9122,7010,8901,0,0,6422,,0,,,,,,,, +4011,"Unknown datum based upon the Clarke 1880 (IGN) ellipsoid",6011,"Not specified (based on Clarke 1880 (IGN) ellipsoid)",6011,9122,7011,8901,0,0,6422,,0,,,,,,,, +4012,"Unknown datum based upon the Clarke 1880 (RGS) ellipsoid",6012,"Not specified (based on Clarke 1880 (RGS) ellipsoid)",6012,9122,7012,8901,0,0,6422,,0,,,,,,,, +4013,"Unknown datum based upon the Clarke 1880 (Arc) ellipsoid",6013,"Not specified (based on Clarke 1880 (Arc) ellipsoid)",6013,9122,7013,8901,0,0,6422,,0,,,,,,,, +4014,"Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid",6014,"Not specified (based on Clarke 1880 (SGA 1922) ellipsoid)",6014,9122,7014,8901,0,0,6422,,0,,,,,,,, +4015,"Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid",6015,"Not specified (based on Everest 1830 (1937 Adjustment) ellipsoid)",6015,9122,7015,8901,0,0,6422,,0,,,,,,,, +4016,"Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid",6016,"Not specified (based on Everest 1830 (1967 Definition) ellipsoid)",6016,9122,7016,8901,0,0,6422,,0,,,,,,,, +4018,Unknown datum based upon the Everest 1830 Modified ellipsoid,6018,"Not specified (based on Everest 1830 Modified ellipsoid)",6018,9122,7018,8901,0,0,6422,,0,,,,,,,, +4019,Unknown datum based upon the GRS 1980 ellipsoid,6019,"Not specified (based on GRS 1980 ellipsoid)",6019,9122,7019,8901,0,0,6422,,0,,,,,,,, +4020,Unknown datum based upon the Helmert 1906 ellipsoid,6020,"Not specified (based on Helmert 1906 ellipsoid)",6020,9122,7020,8901,0,0,6422,,0,,,,,,,, +4021,Unknown datum based upon the Indonesian National Spheroid,6021,"Not specified (based on Indonesian National Spheroid)",6021,9122,7021,8901,0,0,6422,,0,,,,,,,, +4022,Unknown datum based upon the International 1924 ellipsoid,6022,"Not specified (based on International 1924 ellipsoid)",6022,9122,7022,8901,0,0,6422,,0,,,,,,,, +4023,MOLDREF99,1032,MOLDREF99,1032,9122,7019,8901,1,0,6422,5585,0,9603,0,0,0,,,, +4024,Unknown datum based upon the Krassowsky 1940 ellipsoid,6024,"Not specified (based on Krassowsky 1940 ellipsoid)",6024,9122,7024,8901,0,0,6422,,0,,,,,,,, +4025,Unknown datum based upon the NWL 9D ellipsoid,6025,"Not specified (based on NWL 9D ellipsoid)",6025,9122,7025,8901,0,0,6422,,0,,,,,,,, +4027,Unknown datum based upon the Plessis 1817 ellipsoid,6027,"Not specified (based on Plessis 1817 ellipsoid)",6027,9122,7027,8901,0,0,6422,,0,,,,,,,, +4028,Unknown datum based upon the Struve 1860 ellipsoid,6028,"Not specified (based on Struve 1860 ellipsoid)",6028,9122,7028,8901,0,0,6422,,0,,,,,,,, +4029,Unknown datum based upon the War Office ellipsoid,6029,"Not specified (based on War Office ellipsoid)",6029,9122,7029,8901,0,0,6422,,0,,,,,,,, +4030,Unknown datum based upon the WGS 84 ellipsoid,6030,"Not specified (based on WGS 84 ellipsoid)",6030,9122,7030,8901,0,0,6422,,0,,,,,,,, +4031,Unknown datum based upon the GEM 10C ellipsoid,6031,"Not specified (based on GEM 10C ellipsoid)",6031,9122,7031,8901,0,0,6422,,0,,,,,,,, +4032,Unknown datum based upon the OSU86F ellipsoid,6032,"Not specified (based on OSU86F ellipsoid)",6032,9122,7032,8901,0,0,6422,,0,,,,,,,, +4033,Unknown datum based upon the OSU91A ellipsoid,6033,"Not specified (based on OSU91A ellipsoid)",6033,9122,7033,8901,0,0,6422,,0,,,,,,,, +4034,Unknown datum based upon the Clarke 1880 ellipsoid,6034,"Not specified (based on Clarke 1880 ellipsoid)",6034,9122,7034,8901,0,0,6422,,0,,,,,,,, +4035,Unknown datum based upon the Authalic Sphere,6035,"Not specified (based on Authalic Sphere)",6035,9108,7035,8901,0,1,6402,,0,,,,,,,, +4036,Unknown datum based upon the GRS 1967 ellipsoid,6036,"Not specified (based on GRS 1967 ellipsoid)",6036,9122,7036,8901,0,0,6422,,0,,,,,,,, +4041,Unknown datum based upon the Average Terrestrial System 1977 ellipsoid,6041,"Not specified (based on Average Terrestrial System 1977 ellipsoid)",6041,9122,7041,8901,0,0,6422,,0,,,,,,,, +4042,"Unknown datum based upon the Everest (1830 Definition) ellipsoid",6042,"Not specified (based on Everest (1830 Definition) ellipsoid)",6042,9122,7042,8901,0,0,6422,,0,,,,,,,, +4043,Unknown datum based upon the WGS 72 ellipsoid,6043,"Not specified (based on WGS 72 ellipsoid)",6043,9122,7043,8901,0,0,6422,,0,,,,,,,, +4044,"Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid",6044,"Not specified (based on Everest 1830 (1962 Definition) ellipsoid)",6044,9122,7044,8901,0,0,6422,,0,,,,,,,, +4045,"Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid",6045,"Not specified (based on Everest 1830 (1975 Definition) ellipsoid)",6045,9122,7045,8901,0,0,6422,,0,,,,,,,, +4046,RGRDC 2005,1033,Reseau Geodesique de la RDC 2005,1033,9122,7019,8901,1,0,6422,4064,0,9603,0,0,0,,,, +4047,Unspecified datum based upon the GRS 1980 Authalic Sphere,6047,"Not specified (based on GRS 1980 Authalic Sphere)",6047,9122,7048,8901,0,0,6422,,0,,,,,,,, +4052,Unspecified datum based upon the Clarke 1866 Authalic Sphere,6052,"Not specified (based on Clarke 1866 Authalic Sphere)",6052,9122,7052,8901,0,0,6422,,0,,,,,,,, +4053,Unspecified datum based upon the International 1924 Authalic Sphere,6053,"Not specified (based on International 1924 Authalic Sphere)",6053,9122,7057,8901,0,0,6422,,0,,,,,,,, +4054,Unspecified datum based upon the Hughes 1980 ellipsoid,6054,"Not specified (based on Hughes 1980 ellipsoid)",6054,9122,7058,8901,0,0,6422,,0,,,,,,,, +4055,Popular Visualisation CRS,6055,Popular Visualisation Datum,6055,9122,7059,8901,1,1,6422,15973,0,9603,0,0,0,,,, +4075,SREF98,1034,Serbian Reference Network 1998,1034,9122,7019,8901,1,0,6422,4077,0,9603,0,0,0,,,, +4081,REGCAN95,1035,Red Geodesica de Canarias 1995,1035,9122,7019,8901,1,0,6422,4084,0,9603,0,0,0,,,, +4120,Greek,6120,Greek,6120,9122,7004,8901,1,0,6422,,0,,,,,,,, +4121,GGRS87,6121,Greek Geodetic Reference System 1987,6121,9122,7019,8901,1,0,6422,1272,0,9603,-199.87,74.79,246.62,,,, +4122,ATS77,6122,Average Terrestrial System 1977,6122,9122,7041,8901,1,0,6422,,0,,,,,,,, +4123,KKJ,6123,"Kartastokoordinaattijarjestelma (1966)",6123,9122,7022,8901,1,0,6422,10099,1,9607,-96.062,-82.428,-121.753,-4.801,-0.345,1.376,1.496 +4124,RT90,6124,Rikets koordinatsystem 1990,6124,9122,7004,8901,1,0,6422,1896,1,9607,414.1,41.3,603.1,0.855,-2.141,7.023,0 +4125,Samboja,6125,Samboja,6125,9108,7004,8901,1,1,6402,1282,0,9603,-404.78,685.68,45.47,,,, +4126,"LKS94 (ETRS89)",6126,"Lithuania 1994 (ETRS89)",6126,9108,7019,8901,1,1,6402,,0,,,,,,,, +4127,Tete,6127,Tete,6127,9122,7008,8901,1,0,6422,6901,1,9603,-80,-100,-228,,,, +4128,Madzansua,6128,Madzansua,6128,9122,7008,8901,1,0,6422,,0,,,,,,,, +4129,Observatario,6129,Observatario,6129,9122,7008,8901,1,0,6422,6900,0,9603,-132,-110,-335,,,, +4130,Moznet,6130,"Moznet (ITRF94)",6130,9122,7030,8901,1,0,6422,1302,0,9607,0,0,0,0,0,0,0 +4131,Indian 1960,6131,Indian 1960,6131,9122,7015,8901,1,0,6422,1542,1,9603,198,881,317,,,, +4132,FD58,6132,Final Datum 1958,6132,9122,7012,8901,1,0,6422,1513,1,9603,-241.54,-163.64,396.06,,,, +4133,EST92,6133,Estonia 1992,6133,9122,7019,8901,1,0,6422,1333,0,9607,0.055,-0.541,-0.185,-0.0183,0.0003,0.007,-0.014 +4134,PSD93,6134,PDO Survey Datum 1993,6134,9122,7012,8901,1,0,6422,1439,1,9606,-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006 +4135,Old Hawaiian,6135,Old Hawaiian,6135,9122,7008,8901,1,0,6422,15824,1,9603,61,-285,-181,,,, +4136,St. Lawrence Island,6136,St. Lawrence Island,6136,9122,7008,8901,1,0,6422,,0,,,,,,,, +4137,St. Paul Island,6137,St. Paul Island,6137,9122,7008,8901,1,0,6422,,0,,,,,,,, +4138,St. George Island,6138,St. George Island,6138,9122,7008,8901,1,0,6422,,0,,,,,,,, +4139,Puerto Rico,6139,Puerto Rico,6139,9122,7008,8901,1,0,6422,1893,0,9603,11,72,-101,,,, +4140,"NAD83(CSRS98)",6140,NAD83 Canadian Spatial Reference System,6140,9108,7019,8901,1,1,6402,1473,0,9603,0,0,0,,,, +4141,Israel 1993,6141,Israel 1993,6141,9122,7019,8901,1,0,6422,1073,0,9603,-48,55,52,,,, +4142,Locodjo 1965,6142,Locodjo 1965,6142,9122,7012,8901,1,0,6422,1469,0,9603,-125,53,467,,,, +4143,Abidjan 1987,6143,Abidjan 1987,6143,9122,7012,8901,1,0,6422,1470,1,9603,-124.76,53,466.79,,,, +4144,Kalianpur 1937,6144,Kalianpur 1937,6144,9122,7015,8901,1,0,6422,1533,1,9603,214,804,268,,,, +4145,Kalianpur 1962,6145,Kalianpur 1962,6145,9122,7044,8901,1,0,6422,1247,1,9603,283,682,231,,,, +4146,Kalianpur 1975,6146,Kalianpur 1975,6146,9122,7045,8901,1,0,6422,1156,0,9603,295,736,257,,,, +4147,Hanoi 1972,6147,Hanoi 1972,6147,9122,7024,8901,1,0,6422,1544,0,9603,-17.51,-108.32,-62.39,,,, +4148,Hartebeesthoek94,6148,Hartebeesthoek94,6148,9122,7030,8901,1,0,6422,1505,0,9603,0,0,0,,,, +4149,CH1903,6149,CH1903,6149,9122,7004,8901,1,0,6422,1510,1,9603,674.374,15.056,405.346,,,, +4150,"CH1903+",6150,"CH1903+",6150,9122,7004,8901,1,0,6422,1676,0,9603,674.374,15.056,405.346,,,, +4151,CHTRF95,6151,Swiss Terrestrial Reference Frame 1995,6151,9122,7019,8901,1,0,6422,1511,0,9603,0,0,0,,,, +4152,"NAD83(HARN)",6152,"NAD83 (High Accuracy Reference Network)",6152,9122,7019,8901,1,0,6422,1580,1,9603,0,0,0,,,, +4153,Rassadiran,6153,Rassadiran,6153,9122,7022,8901,1,0,6422,1512,0,9603,-133.63,-157.5,-158.62,,,, +4154,"ED50(ED77)",6154,"European Datum 1950(1977)",6154,9122,7022,8901,1,0,6422,1141,1,9603,-117,-132,-164,,,, +4155,Dabola 1981,6155,Dabola 1981,6155,9122,7011,8901,1,0,6422,1518,0,9603,-83,37,124,,,, +4156,S-JTSK,6156,System Jednotne Trigonometricke Site Katastralni,6156,9122,7004,8901,1,0,6422,15965,1,9603,589,76,480,,,, +4157,Mount Dillon,6157,Mount Dillon,6157,9122,7007,8901,1,0,6422,,0,,,,,,,, +4158,Naparima 1955,6158,Naparima 1955,6158,9122,7022,8901,1,0,6422,1555,1,9603,-0.465,372.095,171.736,,,, +4159,ELD79,6159,European Libyan Datum 1979,6159,9122,7022,8901,1,0,6422,15909,1,9603,-115.8543,-99.0583,-152.4616,,,, +4160,Chos Malal 1914,6160,Chos Malal 1914,6160,9122,7022,8901,1,0,6422,,0,,,,,,,, +4161,Pampa del Castillo,6161,Pampa del Castillo,6161,9122,7022,8901,1,0,6422,15845,0,9603,27.5,14,186.4,,,, +4162,Korean 1985,6162,Korean Datum 1985,6162,9122,7004,8901,1,0,6422,,0,,,,,,,, +4163,Yemen NGN96,6163,Yemen National Geodetic Network 1996,6163,9122,7030,8901,1,0,6422,1540,0,9603,0,0,0,,,, +4164,South Yemen,6164,South Yemen,6164,9122,7024,8901,1,0,6422,1682,0,9603,-76,-138,67,,,, +4165,Bissau,6165,Bissau,6165,9122,7022,8901,1,0,6422,1547,0,9603,-173,253,27,,,, +4166,Korean 1995,6166,Korean Datum 1995,6166,9122,7030,8901,1,0,6422,1558,0,9603,0,0,0,,,, +4167,NZGD2000,6167,New Zealand Geodetic Datum 2000,6167,9122,7019,8901,1,0,6422,1565,0,9603,0,0,0,,,, +4168,Accra,6168,Accra,6168,9122,7029,8901,1,0,6422,1569,1,9603,-199,32,322,,,, +4169,American Samoa 1962,6169,American Samoa 1962,6169,9122,7008,8901,1,0,6422,1577,0,9603,-115,118,426,,,, +4170,SIRGAS 1995,6170,Sistema de Referencia Geocentrico para America del Sur 1995,6170,9122,7019,8901,1,0,6422,1581,0,9603,0,0,0,,,, +4171,RGF93,6171,Reseau Geodesique Francais 1993,6171,9122,7019,8901,1,0,6422,1671,0,9603,0,0,0,,,, +4172,POSGAR,6172,Posiciones Geodesicas Argentinas,6172,9108,7019,8901,1,1,6402,1598,0,9603,0,0,0,,,, +4173,IRENET95,6173,IRENET95,6173,9122,7019,8901,1,0,6422,1678,0,9603,0,0,0,,,, +4174,Sierra Leone 1924,6174,Sierra Leone Colony 1924,6174,9122,7029,8901,1,0,6422,,0,,,,,,,, +4175,Sierra Leone 1968,6175,Sierra Leone 1968,6175,9122,7012,8901,1,0,6422,1614,0,9603,-88,4,101,,,, +4176,Australian Antarctic,6176,Australian Antarctic Datum 1998,6176,9122,7019,8901,1,0,6422,1890,0,9603,0,0,0,,,, +4178,"Pulkovo 1942(83)",6178,"Pulkovo 1942(83)",6178,9122,7024,8901,1,0,6422,15998,1,9603,26,-121,-78,,,, +4179,"Pulkovo 1942(58)",6179,"Pulkovo 1942(58)",6179,9122,7024,8901,1,0,6422,1645,1,9606,33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +4180,EST97,6180,Estonia 1997,6180,9122,7019,8901,1,0,6422,1649,0,9603,0,0,0,,,, +4181,Luxembourg 1930,6181,Luxembourg 1930,6181,9122,7022,8901,1,0,6422,5486,1,9607,-189.6806,18.3463,-42.7695,0.33746,3.09264,-2.53861,0.4598 +4182,Azores Occidental 1939,6182,Azores Occidental Islands 1939,6182,9122,7022,8901,1,0,6422,1887,1,9603,-425,-169,81,,,, +4183,Azores Central 1948,6183,Azores Central Islands 1948,6183,9122,7022,8901,1,0,6422,1886,0,9603,-104,167,-38,,,, +4184,Azores Oriental 1940,6184,Azores Oriental Islands 1940,6184,9122,7022,8901,1,0,6422,1885,0,9603,-203,141,53,,,, +4185,Madeira 1936,6185,Madeira 1936,6185,9108,7022,8901,1,1,6402,,0,,,,,,,, +4188,OSNI 1952,6188,OSNI 1952,6188,9122,7001,8901,1,0,6422,1955,0,9606,482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +4189,REGVEN,6189,Red Geodesica Venezolana,6189,9122,7019,8901,1,0,6422,1768,0,9603,0,0,0,,,, +4190,POSGAR 98,6190,Posiciones Geodesicas Argentinas 1998,6190,9122,7019,8901,1,0,6422,1773,1,9603,0,0,0,,,, +4191,Albanian 1987,6191,Albanian 1987,6191,9122,7024,8901,1,0,6422,7834,1,9607,-44.183,-0.58,-38.489,-2.3867,-2.7072,3.5196,-8.2703 +4192,Douala 1948,6192,Douala 1948,6192,9122,7022,8901,1,0,6422,15873,0,9603,-206.1,-174.7,-87.7,,,, +4193,Manoca 1962,6193,Manoca 1962,6193,9122,7011,8901,1,0,6422,1796,0,9603,-70.9,-151.8,-41.4,,,, +4194,Qornoq 1927,6194,Qornoq 1927,6194,9122,7022,8901,1,0,6422,1797,1,9603,164,138,-189,,,, +4195,Scoresbysund 1952,6195,Scoresbysund 1952,6195,9122,7022,8901,1,0,6422,1799,0,9606,105,326,-102.5,0,0,0.814,-0.6 +4196,Ammassalik 1958,6196,Ammassalik 1958,6196,9122,7022,8901,1,0,6422,1800,0,9606,-45,417,-3.5,0,0,0.814,-0.6 +4197,Garoua,6197,Garoua,6197,9122,7012,8901,1,0,6422,,0,,,,,,,, +4198,Kousseri,6198,Kousseri,6198,9122,7012,8901,1,0,6422,,0,,,,,,,, +4199,Egypt 1930,6199,Egypt 1930,6199,9122,7022,8901,1,0,6422,,0,,,,,,,, +4200,Pulkovo 1995,6200,Pulkovo 1995,6200,9122,7024,8901,1,0,6422,5043,1,9607,24.47,-130.89,-81.56,0,0,-0.13,-0.22 +4201,Adindan,6201,Adindan,6201,9122,7012,8901,1,0,6422,1100,1,9603,-166,-15,204,,,, +4202,AGD66,6202,Australian Geodetic Datum 1966,6202,9122,7003,8901,1,0,6422,15980,1,9607,-117.808,-51.536,137.784,-0.303,-0.446,-0.234,-0.29 +4203,AGD84,6203,Australian Geodetic Datum 1984,6203,9122,7003,8901,1,0,6422,1109,1,9603,-134,-48,149,,,, +4204,Ain el Abd,6204,Ain el Abd 1970,6204,9122,7022,8901,1,0,6422,1111,1,9603,-143,-236,7,,,, +4205,Afgooye,6205,Afgooye,6205,9122,7024,8901,1,0,6422,1107,0,9603,-43,-163,45,,,, +4206,Agadez,6206,Agadez,6206,9122,7011,8901,1,0,6422,,0,,,,,,,, +4207,Lisbon,6207,Lisbon 1937,6207,9122,7022,8901,1,0,6422,1984,1,9603,-304.046,-60.576,103.64,,,, +4208,Aratu,6208,Aratu,6208,9122,7022,8901,1,0,6422,5067,1,9603,-151.99,287.04,-147.45,,,, +4209,Arc 1950,6209,Arc 1950,6209,9122,7013,8901,1,0,6422,1113,1,9603,-143,-90,-294,,,, +4210,Arc 1960,6210,Arc 1960,6210,9122,7012,8901,1,0,6422,1122,1,9603,-160,-6,-302,,,, +4211,Batavia,6211,Batavia,6211,9122,7004,8901,1,0,6422,1123,1,9603,-377,681,-50,,,, +4212,Barbados 1938,6212,Barbados 1938,6212,9122,7012,8901,1,0,6422,15793,0,9603,31.95,300.99,419.19,,,, +4213,Beduaram,6213,Beduaram,6213,9122,7011,8901,1,0,6422,15849,0,9603,-106,-87,188,,,, +4214,Beijing 1954,6214,Beijing 1954,6214,9122,7024,8901,1,0,6422,15921,1,9603,15.8,-154.4,-82.3,,,, +4215,Belge 1950,6215,Reseau National Belge 1950,6215,9122,7022,8901,1,0,6422,,0,,,,,,,, +4216,Bermuda 1957,6216,Bermuda 1957,6216,9122,7008,8901,1,0,6422,1124,1,9603,-73,213,296,,,, +4218,Bogota 1975,6218,Bogota 1975,6218,9122,7022,8901,1,0,6422,1125,1,9603,307,304,-318,,,, +4219,Bukit Rimpah,6219,Bukit Rimpah,6219,9122,7004,8901,1,0,6422,1126,0,9603,-384,664,-48,,,, +4220,Camacupa,6220,Camacupa,6220,9122,7012,8901,1,0,6422,1327,1,9603,-50.9,-347.6,-231,,,, +4221,Campo Inchauspe,6221,Campo Inchauspe,6221,9122,7022,8901,1,0,6422,1127,1,9603,-148,136,90,,,, +4222,Cape,6222,Cape,6222,9122,7013,8901,1,0,6422,1128,1,9603,-136,-108,-292,,,, +4223,Carthage,6223,Carthage,6223,9122,7011,8901,1,0,6422,1130,1,9603,-263,6,431,,,, +4224,Chua,6224,Chua,6224,9122,7022,8901,1,0,6422,3972,1,9603,-143.87,243.37,-33.52,,,, +4225,Corrego Alegre 1970-72,6225,Corrego Alegre 1970-72,6225,9122,7022,8901,1,0,6422,6192,1,9603,-205.57,168.77,-4.12,,,, +4226,"Cote d'Ivoire",6226,"Cote d'Ivoire",6226,9108,7011,8901,1,1,6402,,0,,,,,,,, +4227,Deir ez Zor,6227,Deir ez Zor,6227,9122,7011,8901,1,0,6422,15742,1,9603,-190.421,8.532,238.69,,,, +4228,Douala,6228,Douala,6228,9108,7011,8901,1,1,6402,,0,,,,,,,, +4229,Egypt 1907,6229,Egypt 1907,6229,9122,7020,8901,1,0,6422,1148,1,9603,-130,110,-13,,,, +4230,ED50,6230,European Datum 1950,6230,9122,7022,8901,1,0,6422,1133,1,9603,-87,-98,-121,,,, +4231,ED87,6231,European Datum 1987,6231,9122,7022,8901,1,0,6422,3905,1,9606,-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218 +4232,Fahud,6232,Fahud,6232,9122,7012,8901,1,0,6422,1438,1,9606,-333.102,-11.02,230.69,0,0,0.554,0.219 +4233,Gandajika 1970,6233,Gandajika 1970,6233,9122,7022,8901,1,1,6422,1894,0,9603,-133,-321,50,,,, +4234,Garoua,6234,Garoua,6234,9108,7011,8901,1,1,6402,,0,,,,,,,, +4235,Guyane Francaise,6235,Guyane Francaise,6235,9108,7022,8901,1,1,6402,,0,,,,,,,, +4236,Hu Tzu Shan 1950,6236,Hu Tzu Shan 1950,6236,9122,7022,8901,1,0,6422,1152,0,9603,-637,-549,-203,,,, +4237,HD72,6237,Hungarian Datum 1972,6237,9122,7036,8901,1,0,6422,1242,1,9603,52.17,-71.82,-14.9,,,, +4238,ID74,6238,Indonesian Datum 1974,6238,9122,7021,8901,1,0,6422,1248,1,9603,-24,-15,5,,,, +4239,Indian 1954,6239,Indian 1954,6239,9122,7015,8901,1,0,6422,1153,0,9603,217,823,299,,,, +4240,Indian 1975,6240,Indian 1975,6240,9122,7015,8901,1,0,6422,1304,1,9603,210,814,289,,,, +4241,Jamaica 1875,6241,Jamaica 1875,6241,9122,7034,8901,1,0,6422,,0,,,,,,,, +4242,JAD69,6242,Jamaica 1969,6242,9122,7008,8901,1,0,6422,1084,1,9603,70,207,389.5,,,, +4243,Kalianpur 1880,6243,Kalianpur 1880,6243,9122,7042,8901,1,0,6422,,0,,,,,,,, +4244,Kandawala,6244,Kandawala,6244,9122,7015,8901,1,0,6422,1157,0,9603,-97,787,86,,,, +4245,Kertau 1968,6245,Kertau 1968,6245,9122,7018,8901,1,0,6422,1158,0,9603,-11,851,5,,,, +4246,KOC,6246,Kuwait Oil Company,6246,9122,7012,8901,1,0,6422,1059,0,9603,-294.7,-200.1,525.5,,,, +4247,La Canoa,6247,La Canoa,6247,9122,7022,8901,1,0,6422,1516,0,9603,-273.5,110.6,-357.9,,,, +4248,PSAD56,6248,Provisional South American Datum 1956,6248,9122,7022,8901,1,0,6422,1201,1,9603,-288,175,-376,,,, +4249,Lake,6249,Lake,6249,9122,7022,8901,1,0,6422,,0,,,,,,,, +4250,Leigon,6250,Leigon,6250,9122,7012,8901,1,0,6422,1159,0,9603,-130,29,364,,,, +4251,Liberia 1964,6251,Liberia 1964,6251,9122,7012,8901,1,0,6422,1160,0,9603,-90,40,88,,,, +4252,Lome,6252,Lome,6252,9122,7011,8901,1,0,6422,,0,,,,,,,, +4253,Luzon 1911,6253,Luzon 1911,6253,9122,7008,8901,1,0,6422,1161,1,9603,-133,-77,-51,,,, +4254,Hito XVIII 1963,6254,Hito XVIII 1963,6254,9122,7022,8901,1,0,6422,1892,1,9603,16,196,93,,,, +4255,Herat North,6255,Herat North,6255,9122,7022,8901,1,0,6422,1246,0,9603,-333,-222,114,,,, +4256,Mahe 1971,6256,Mahe 1971,6256,9122,7012,8901,1,0,6422,1164,0,9603,41,-220,-134,,,, +4257,Makassar,6257,Makassar,6257,9122,7004,8901,1,0,6422,1837,0,9603,-587.8,519.75,145.76,,,, +4258,ETRS89,6258,European Terrestrial Reference System 1989,6258,9122,7019,8901,1,0,6422,1149,1,9603,0,0,0,,,, +4259,Malongo 1987,6259,Malongo 1987,6259,9122,7022,8901,1,0,6422,1557,1,9603,-254.1,-5.36,-100.29,,,, +4260,Manoca,6260,Manoca,6260,9108,7012,8901,1,1,6402,1316,0,9603,-70.9,-151.8,-41.4,,,, +4261,Merchich,6261,Merchich,6261,9122,7011,8901,1,0,6422,1166,0,9603,31,146,47,,,, +4262,Massawa,6262,Massawa,6262,9122,7004,8901,1,0,6422,1165,0,9603,639,405,60,,,, +4263,Minna,6263,Minna,6263,9122,7012,8901,1,0,6422,1168,1,9603,-92,-93,122,,,, +4264,Mhast,6264,Mhast,6264,9122,7022,8901,1,1,6422,1329,0,9603,-252.95,-4.11,-96.38,,,, +4265,Monte Mario,6265,Monte Mario,6265,9122,7022,8901,1,0,6422,1660,1,9606,-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +4266,"M'poraloko",6266,"M'poraloko",6266,9122,7011,8901,1,0,6422,1163,1,9603,-74,-130,42,,,, +4267,NAD27,6267,North American Datum 1927,6267,9122,7008,8901,1,0,6422,,0,,,,,,,, +4268,NAD27 Michigan,6268,NAD27 Michigan,6268,9122,7009,8901,1,1,6422,,0,,,,,,,, +4269,NAD83,6269,North American Datum 1983,6269,9122,7019,8901,1,0,6422,1188,1,9603,0,0,0,,,, +4270,Nahrwan 1967,6270,Nahrwan 1967,6270,9122,7012,8901,1,0,6422,1191,1,9603,-249,-156,381,,,, +4271,Naparima 1972,6271,Naparima 1972,6271,9122,7022,8901,1,0,6422,1192,1,9603,-10,375,165,,,, +4272,NZGD49,6272,New Zealand Geodetic Datum 1949,6272,9122,7022,8901,1,0,6422,1564,1,9607,59.47,-5.04,187.44,-0.47,0.1,-1.024,-4.5993 +4273,NGO 1948,6273,NGO 1948,6273,9122,7005,8901,1,0,6422,1654,0,9606,278.3,93,474.5,7.889,0.05,-6.61,6.21 +4274,Datum 73,6274,Datum 73,6274,9122,7022,8901,1,0,6422,1983,1,9603,-223.237,110.193,36.649,,,, +4275,NTF,6275,Nouvelle Triangulation Francaise,6275,9122,7011,8901,1,0,6422,1193,0,9603,-168,-60,320,,,, +4276,NSWC 9Z-2,6276,NSWC 9Z-2,6276,9122,7025,8901,1,0,6422,,0,,,,,,,, +4277,OSGB 1936,6277,OSGB 1936,6277,9122,7001,8901,1,0,6422,1314,1,9606,446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +4278,OSGB70,6278,"OSGB 1970 (SN)",6278,9122,7001,8901,1,0,6422,,0,,,,,,,, +4279,"OS(SN)80",6279,"OS (SN) 1980",6279,9122,7001,8901,1,0,6422,,0,,,,,,,, +4280,Padang,6280,Padang 1884,6280,9122,7004,8901,1,0,6422,,0,,,,,,,, +4281,Palestine 1923,6281,Palestine 1923,6281,9122,7010,8901,1,0,6422,1074,0,9606,-275.7224,94.7824,340.8944,-8.001,-4.42,-11.821,1 +4282,Pointe Noire,6282,Congo 1960 Pointe Noire,6282,9122,7011,8901,1,0,6422,1200,1,9603,-148,51,-291,,,, +4283,GDA94,6283,Geocentric Datum of Australia 1994,6283,9122,7019,8901,1,0,6422,1150,0,9603,0,0,0,,,, +4284,Pulkovo 1942,6284,Pulkovo 1942,6284,9122,7024,8901,1,0,6422,1267,1,9607,23.92,-141.27,-80.9,0,-0.35,-0.82,-0.12 +4285,Qatar 1974,6285,Qatar 1974,6285,9122,7022,8901,1,0,6422,1562,1,9603,-128.16,-282.42,21.93,,,, +4286,Qatar 1948,6286,Qatar 1948,6286,9122,7020,8901,1,0,6422,,0,,,,,,,, +4287,Qornoq,6287,Qornoq,6287,9108,7022,8901,1,1,6402,1211,0,9603,164,138,-189,,,, +4288,Loma Quintana,6288,Loma Quintana,6288,9122,7022,8901,1,0,6422,,0,,,,,,,, +4289,Amersfoort,6289,Amersfoort,6289,9122,7004,8901,1,0,6422,15934,1,9607,565.2369,50.0087,465.658,0.406857,-0.350733,1.87035,4.0812 +4291,SAD69,6291,South American Datum 1969,6291,9108,7036,8901,1,1,6402,1212,1,9603,-57,1,-41,,,, +4292,Sapper Hill 1943,6292,Sapper Hill 1943,6292,9122,7022,8901,1,0,6422,1225,0,9603,-355,21,72,,,, +4293,Schwarzeck,6293,Schwarzeck,6293,9122,7046,8901,1,0,6422,1226,1,9603,616,97,-251,,,, +4294,Segora,6294,Segora,6294,9108,7004,8901,1,1,6402,1286,1,9603,-403,684,41,,,, +4295,Serindung,6295,Serindung,6295,9122,7004,8901,1,0,6422,,0,,,,,,,, +4296,Sudan,6296,Sudan,6296,9108,7011,8901,1,1,6402,,0,,,,,,,, +4297,Tananarive,6297,Tananarive 1925,6297,9122,7022,8901,1,0,6422,1227,1,9603,-189,-242,-91,,,, +4298,Timbalai 1948,6298,Timbalai 1948,6298,9122,7016,8901,1,0,6422,1228,1,9603,-679,669,-48,,,, +4299,TM65,6299,TM65,6299,9122,7002,8901,1,0,6422,1641,1,9606,482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +4300,TM75,6300,Geodetic Datum of 1965,6300,9122,7002,8901,1,0,6422,1954,1,9606,482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15 +4301,Tokyo,6301,Tokyo,6301,9122,7004,8901,1,0,6422,15484,1,9603,-146.414,507.337,680.507,,,, +4302,Trinidad 1903,6302,Trinidad 1903,6302,9122,7007,8901,1,0,6422,1296,1,9603,-61.702,284.488,472.052,,,, +4303,"TC(1948)",6303,Trucial Coast 1948,6303,9122,7020,8901,1,0,6422,,0,,,,,,,, +4304,Voirol 1875,6304,Voirol 1875,6304,9122,7011,8901,1,0,6422,1294,0,9603,-73,-247,227,,,, +4306,Bern 1938,6306,Bern 1938,6306,9122,7004,8901,1,0,6422,,0,,,,,,,, +4307,Nord Sahara 1959,6307,Nord Sahara 1959,6307,9122,7012,8901,1,0,6422,5660,1,9606,-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +4308,RT38,6308,Stockholm 1938,6308,9122,7004,8901,1,0,6422,,0,,,,,,,, +4309,Yacare,6309,Yacare,6309,9122,7022,8901,1,0,6422,1234,1,9603,-155,171,37,,,, +4310,Yoff,6310,Yoff,6310,9122,7011,8901,1,0,6422,6903,0,9603,-30,190,89,,,, +4311,Zanderij,6311,Zanderij,6311,9122,7022,8901,1,0,6422,1235,0,9603,-265,120,-358,,,, +4312,MGI,6312,Militar-Geographische Institut,6312,9122,7004,8901,1,0,6422,1618,1,9606,577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +4313,Belge 1972,6313,Reseau National Belge 1972,6313,9122,7022,8901,1,0,6422,15929,1,9607,-106.8686,52.2978,-103.7239,-0.3366,0.457,-1.8422,-1.2747 +4314,DHDN,6314,Deutsches Hauptdreiecksnetz,6314,9122,7004,8901,1,0,6422,1777,1,9606,598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +4315,Conakry 1905,6315,Conakry 1905,6315,9122,7011,8901,1,0,6422,1517,0,9603,-23,259,-9,,,, +4316,Dealul Piscului 1930,6316,Dealul Piscului 1930,6316,9122,7022,8901,1,0,6422,1995,1,9603,103.25,-100.4,-307.19,,,, +4317,Dealul Piscului 1970,6317,Dealul Piscului 1970,6317,9122,7024,8901,1,1,6422,1097,1,9603,28,-121,-77,,,, +4318,NGN,6318,National Geodetic Network,6318,9122,7030,8901,1,0,6422,1060,0,9603,-3.2,-5.7,2.8,,,, +4319,KUDAMS,6319,Kuwait Utility,6319,9122,7019,8901,1,0,6422,1061,1,9603,-20.8,11.3,2.4,,,, +4322,WGS 72,6322,World Geodetic System 1972,6322,9122,7043,8901,1,0,6422,1237,1,9606,0,0,4.5,0,0,0.554,0.2263 +4324,WGS 72BE,6324,WGS 72 Transit Broadcast Ephemeris,6324,9122,7043,8901,1,0,6422,1240,0,9606,0,0,1.9,0,0,0.814,-0.38 +4326,WGS 84,6326,World Geodetic System 1984,6326,9122,7030,8901,1,0,6422,,0,,,,,,,, +4463,RGSPM06,1038,Reseau Geodesique de Saint Pierre et Miquelon 2006,1038,9122,7019,8901,1,0,6422,4477,0,9603,0,0,0,,,, +4470,RGM04,1036,Reseau Geodesique de Mayotte 2004,1036,9122,7019,8901,1,0,6422,4476,0,9603,0,0,0,,,, +4475,Cadastre 1997,1037,Cadastre 1997,1037,9122,7022,8901,1,0,6422,4290,0,9603,-381.788,-57.501,-256.673,,,, +4483,Mexico ITRF92,1042,Mexico ITRF92,1042,9122,7019,8901,1,0,6422,4832,0,9603,0,0,0,,,, +4490,China Geodetic Coordinate System 2000,1043,China 2000,1043,9122,1024,8901,1,0,6422,,0,,,,,,,, +4555,New Beijing,1045,New Beijing,1045,9122,7024,8901,1,0,6422,,0,,,,,,,, +4558,RRAF 1991,1047,Reseau de Reference des Antilles Francaises 1991,1047,9122,7019,8901,1,0,6422,4560,0,9603,0,0,0,,,, +4600,Anguilla 1957,6600,Anguilla 1957,6600,9122,7012,8901,1,0,6422,,0,,,,,,,, +4601,Antigua 1943,6601,Antigua 1943,6601,9122,7012,8901,1,0,6422,1441,1,9603,-255,-15,71,,,, +4602,Dominica 1945,6602,Dominica 1945,6602,9122,7012,8901,1,0,6422,1442,0,9603,725,685,536,,,, +4603,Grenada 1953,6603,Grenada 1953,6603,9122,7012,8901,1,0,6422,1443,0,9603,72,213.7,93,,,, +4604,Montserrat 1958,6604,Montserrat 1958,6604,9122,7012,8901,1,0,6422,1444,0,9603,174,359,365,,,, +4605,St. Kitts 1955,6605,St. Kitts 1955,6605,9122,7012,8901,1,0,6422,1445,1,9603,9,183,236,,,, +4606,St. Lucia 1955,6606,St. Lucia 1955,6606,9122,7012,8901,1,0,6422,1446,1,9603,-149,128,296,,,, +4607,St. Vincent 1945,6607,St. Vincent 1945,6607,9122,7012,8901,1,0,6422,1959,0,9603,195.671,332.517,274.607,,,, +4608,"NAD27(76)",6608,"North American Datum 1927 (1976)",6608,9122,7008,8901,1,0,6422,,0,,,,,,,, +4609,"NAD27(CGQ77)",6609,"North American Datum 1927 (CGQ77)",6609,9122,7008,8901,1,0,6422,,0,,,,,,,, +4610,Xian 1980,6610,Xian 1980,6610,9122,7049,8901,1,0,6422,,0,,,,,,,, +4611,Hong Kong 1980,6611,Hong Kong 1980,6611,9122,7022,8901,1,0,6422,1825,0,9606,-162.619,-276.959,-161.764,0.067753,-2.243649,-1.158827,-1.094246 +4612,JGD2000,6612,Japanese Geodetic Datum 2000,6612,9122,7019,8901,1,0,6422,1826,0,9603,0,0,0,,,, +4613,Segara,6613,Gunung Segara,6613,9122,7004,8901,1,0,6422,1897,1,9603,-403,684,41,,,, +4614,QND95,6614,Qatar National Datum 1995,6614,9122,7022,8901,1,0,6422,1840,0,9606,-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065 +4615,Porto Santo,6615,Porto Santo 1936,6615,9122,7022,8901,1,0,6422,1888,0,9603,-499,-249,314,,,, +4616,Selvagem Grande,6616,Selvagem Grande,6616,9122,7022,8901,1,0,6422,1965,1,9603,-289,-124,60,,,, +4617,"NAD83(CSRS)",6140,NAD83 Canadian Spatial Reference System,6140,9122,7019,8901,1,0,6422,1842,1,9603,0,0,0,,,, +4618,SAD69,6618,South American Datum 1969,6618,9122,7050,8901,1,0,6422,1877,1,9603,-66.87,4.37,-38.52,,,, +4619,SWEREF99,6619,SWEREF99,6619,9122,7019,8901,1,0,6422,1879,0,9603,0,0,0,,,, +4620,Point 58,6620,Point 58,6620,9122,7012,8901,1,0,6422,1880,0,9603,-106,-129,165,,,, +4621,Fort Marigot,6621,Fort Marigot,6621,9122,7022,8901,1,0,6422,1903,0,9603,137,248,-430,,,, +4622,Guadeloupe 1948,6622,Guadeloupe 1948,6622,9122,7022,8901,1,0,6422,1904,1,9603,-467,-16,-300,,,, +4623,CSG67,6623,Centre Spatial Guyanais 1967,6623,9122,7022,8901,1,0,6422,1906,0,9603,-186,230,110,,,, +4624,RGFG95,6624,Reseau Geodesique Francais Guyane 1995,6624,9122,7019,8901,1,0,6422,4840,1,9603,0,0,0,,,, +4625,Martinique 1938,6625,Martinique 1938,6625,9122,7022,8901,1,0,6422,1909,1,9603,186,482,151,,,, +4626,Reunion 1947,6626,Reunion 1947,6626,9122,7022,8901,1,0,6422,15751,1,9603,94,-948,-1262,,,, +4627,RGR92,6627,Reseau Geodesique de la Reunion 1992,6627,9122,7019,8901,1,0,6422,1912,0,9603,0,0,0,,,, +4628,Tahiti 52,6628,Tahiti 52,6628,9122,7022,8901,1,0,6422,1924,0,9603,162,117,154,,,, +4629,Tahaa 54,6629,Tahaa 54,6629,9122,7022,8901,1,0,6422,15770,1,9607,72.438,345.918,79.486,-1.6045,-0.8823,-0.5565,1.3746 +4630,IGN72 Nuku Hiva,6630,IGN72 Nuku Hiva,6630,9122,7022,8901,1,0,6422,1914,1,9603,84,274,65,,,, +4631,K0 1949,6631,K0 1949,6631,9122,7022,8901,1,1,6422,1915,0,9603,145,-187,103,,,, +4632,Combani 1950,6632,Combani 1950,6632,9122,7022,8901,1,0,6422,1916,0,9603,-382,-59,-262,,,, +4633,IGN56 Lifou,6633,IGN56 Lifou,6633,9122,7022,8901,1,0,6422,15902,1,9603,335.47,222.58,-230.94,,,, +4634,IGN72 Grand Terre,6634,IGN72 Grande Terre,6634,9108,7022,8901,1,1,6402,1918,1,9603,-13,-348,292,,,, +4635,ST87 Ouvea,6635,ST87 Ouvea,6635,9122,7022,8901,1,1,6422,1919,0,9606,-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +4636,Petrels 1972,6636,Petrels 1972,6636,9122,7022,8901,1,0,6422,1921,0,9603,365,194,166,,,, +4637,Perroud 1950,6637,Pointe Geologie Perroud 1950,6637,9122,7022,8901,1,0,6422,1922,0,9603,325,154,172,,,, +4638,Saint Pierre et Miquelon 1950,6638,Saint Pierre et Miquelon 1950,6638,9122,7008,8901,1,0,6422,8270,1,9603,11.363,424.148,373.13,,,, +4639,MOP78,6639,MOP78,6639,9122,7022,8901,1,0,6422,15847,1,9603,253,-132,-127,,,, +4640,RRAF 1991,6640,Reseau de Reference des Antilles Francaises 1991,6640,9122,7030,8901,1,1,6422,1934,0,9603,0,0,0,,,, +4641,IGN53 Mare,6641,IGN53 Mare,6641,9122,7022,8901,1,0,6422,15901,1,9603,287.58,177.78,-135.41,,,, +4642,ST84 Ile des Pins,6642,ST84 Ile des Pins,6642,9122,7022,8901,1,0,6422,15848,1,9603,-13,-348,292,,,, +4643,ST71 Belep,6643,ST71 Belep,6643,9122,7022,8901,1,0,6422,1931,0,9606,-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002 +4644,NEA74 Noumea,6644,NEA74 Noumea,6644,9122,7022,8901,1,0,6422,15904,1,9603,-10.18,-350.43,291.37,,,, +4645,RGNC 1991,6645,Reseau Geodesique Nouvelle Caledonie 1991,6645,9122,7022,8901,1,1,6422,1920,0,9603,0,0,0,,,, +4646,Grand Comoros,6646,Grand Comoros,6646,9122,7022,8901,1,0,6422,5521,0,9603,-963,510,-359,,,, +4657,Reykjavik 1900,6657,Reykjavik 1900,6657,9122,7051,8901,1,0,6422,1994,0,9603,-28,199,5,,,, +4658,Hjorsey 1955,6658,Hjorsey 1955,6658,9122,7022,8901,1,0,6422,6909,1,9603,-73,47,-83,,,, +4659,ISN93,6659,Islands Net 1993,6659,9122,7019,8901,1,0,6422,1952,0,9603,0,0,0,,,, +4660,Helle 1954,6660,Helle 1954,6660,9122,7022,8901,1,0,6422,1957,0,9606,982.6087,552.753,-540.873,6.6816266,-31.6114924,-19.84816,16.805 +4661,LKS92,6661,Latvia 1992,6661,9122,7019,8901,1,0,6422,1958,0,9603,0,0,0,,,, +4662,IGN72 Grande Terre,6634,IGN72 Grande Terre,6634,9122,7022,8901,1,0,6422,15903,1,9603,-11.64,-348.6,291.98,,,, +4663,Porto Santo 1995,6663,Porto Santo 1995,6663,9122,7022,8901,1,0,6422,1966,1,9603,-502.862,-247.438,312.724,,,, +4664,Azores Oriental 1995,6664,Azores Oriental Islands 1995,6664,9122,7022,8901,1,0,6422,1970,1,9603,-204.619,140.176,55.226,,,, +4665,Azores Central 1995,6665,Azores Central Islands 1995,6665,9122,7022,8901,1,0,6422,1980,1,9603,-106.226,166.366,-37.893,,,, +4666,Lisbon 1890,6666,Lisbon 1890,6666,9122,7004,8901,1,0,6422,1986,1,9603,508.088,-191.042,565.223,,,, +4667,IKBD-92,6667,Iraq-Kuwait Boundary Datum 1992,6667,9122,7030,8901,1,0,6422,1993,0,9603,0,0,0,,,, +4668,ED79,6668,European Datum 1979,6668,9122,7022,8901,1,0,6422,15752,0,9603,-86,-98,-119,,,, +4669,LKS94,6126,"Lithuania 1994 (ETRS89)",6126,9122,7019,8901,1,0,6422,1283,0,9603,0,0,0,,,, +4670,IGM95,6670,Istituto Geografico Militaire 1995,6670,9122,7030,8901,1,0,6422,1099,0,9603,0,0,0,,,, +4671,Voirol 1879,6671,Voirol 1879,6671,9122,7011,8901,1,0,6422,,0,,,,,,,, +4672,Chatham Islands 1971,6672,Chatham Islands Datum 1971,6672,9122,7022,8901,1,0,6422,1080,0,9603,175,-38,113,,,, +4673,Chatham Islands 1979,6673,Chatham Islands Datum 1979,6673,9122,7022,8901,1,0,6422,1081,0,9607,174.05,-25.49,112.57,0,0,-0.554,0.2263 +4674,SIRGAS 2000,6674,Sistema de Referencia Geocentrico para las AmericaS 2000,6674,9122,7019,8901,1,0,6422,15894,0,9603,0,0,0,,,, +4675,Guam 1963,6675,Guam 1963,6675,9122,7008,8901,1,0,6422,1070,0,9603,-100,-248,259,,,, +4676,Vientiane 1982,6676,Vientiane 1982,6676,9122,7024,8901,1,0,6422,,0,,,,,,,, +4677,Lao 1993,6677,Lao 1993,6677,9122,7024,8901,1,0,6422,,0,,,,,,,, +4678,Lao 1997,6678,Lao National Datum 1997,6678,9122,7024,8901,1,0,6422,1065,0,9603,44.585,-131.212,-39.544,,,, +4679,Jouik 1961,6679,Jouik 1961,6679,9122,7012,8901,1,0,6422,15870,0,9603,-80.01,253.26,291.19,,,, +4680,Nouakchott 1965,6680,Nouakchott 1965,6680,9122,7012,8901,1,0,6422,15709,0,9603,124.5,-63.5,-281,,,, +4681,Mauritania 1999,6681,Mauritania 1999,6681,9122,7012,8901,1,1,6422,,0,,,,,,,, +4682,Gulshan 303,6682,Gulshan 303,6682,9122,7015,8901,1,0,6422,15779,1,9603,283.7,735.9,261.1,,,, +4683,PRS92,6683,Philippine Reference System 1992,6683,9122,7008,8901,1,0,6422,15708,0,9607,-127.62,-67.24,-47.04,3.068,-4.903,-1.578,-1.06 +4684,Gan 1970,6684,Gan 1970,6684,9122,7022,8901,1,0,6422,15713,0,9603,-133,-321,50,,,, +4685,Gandajika,6685,Gandajika,6685,9122,7022,8901,1,1,6422,,0,,,,,,,, +4686,MAGNA-SIRGAS,6686,Marco Geocentrico Nacional de Referencia,6686,9122,7019,8901,1,0,6422,15738,0,9603,0,0,0,,,, +4687,RGPF,6687,Reseau Geodesique de la Polynesie Francaise,6687,9122,7019,8901,1,0,6422,15832,1,9607,0.072,-0.507,-0.245,0.0183,-0.0003,0.007,-0.0093 +4688,Fatu Iva 72,6688,Fatu Iva 72,6688,9122,7022,8901,1,0,6422,15772,0,9607,347.103,1078.125,2623.922,33.8875,-70.6773,9.3943,186.074 +4689,IGN63 Hiva Oa,6689,IGN63 Hiva Oa,6689,9122,7022,8901,1,0,6422,15773,1,9607,410.721,55.049,80.746,-2.5779,-2.3514,-0.6664,17.3311 +4690,Tahiti 79,6690,Tahiti 79,6690,9122,7022,8901,1,0,6422,4835,0,9607,221.525,152.948,176.768,2.3847,1.3896,0.877,11.4741 +4691,Moorea 87,6691,Moorea 87,6691,9122,7022,8901,1,0,6422,15769,0,9607,215.525,149.593,176.229,3.2624,1.692,1.1571,10.4773 +4692,Maupiti 83,6692,Maupiti 83,6692,9122,7022,8901,1,0,6422,15771,0,9603,217.037,86.959,23.956,,,, +4693,Nakhl-e Ghanem,6693,Nakhl-e Ghanem,6693,9122,7030,8901,1,0,6422,15746,0,9603,0,-0.15,0.68,,,, +4694,POSGAR 94,6694,Posiciones Geodesicas Argentinas 1994,6694,9122,7030,8901,1,0,6422,1210,0,9603,0,0,0,,,, +4695,Katanga 1955,6695,Katanga 1955,6695,9122,7008,8901,1,0,6422,4066,0,9603,-103.746,-9.614,-255.95,,,, +4696,Kasai 1953,6696,Kasai 1953,6696,9122,7012,8901,1,0,6422,,0,,,,,,,, +4697,IGC 1962 6th Parallel South,6697,IGC 1962 Arc of the 6th Parallel South,6697,9122,7012,8901,1,0,6422,,0,,,,,,,, +4698,IGN 1962 Kerguelen,6698,IGN 1962 Kerguelen,6698,9122,7022,8901,1,0,6422,15850,0,9603,145,-187,103,,,, +4699,Le Pouce 1934,6699,Le Pouce 1934,6699,9122,7012,8901,1,0,6422,15784,0,9603,-770.1,158.4,-498.2,,,, +4700,IGN Astro 1960,6700,IGN Astro 1960,6700,9122,7012,8901,1,0,6422,,0,,,,,,,, +4701,IGCB 1955,6701,Institut Geographique du Congo Belge 1955,6701,9122,7012,8901,1,0,6422,15787,0,9603,-79.9,-158,-168.9,,,, +4702,Mauritania 1999,6702,Mauritania 1999,6702,9122,7019,8901,1,0,6422,15860,0,9603,0,0,0,,,, +4703,Mhast 1951,6703,Missao Hidrografico Angola y Sao Tome 1951,6703,9122,7012,8901,1,0,6422,,0,,,,,,,, +4704,"Mhast (onshore)",6704,"Mhast (onshore)",6704,9122,7022,8901,1,0,6422,,0,,,,,,,, +4705,"Mhast (offshore)",6705,"Mhast (offshore)",6705,9122,7022,8901,1,0,6422,,0,,,,,,,, +4706,Egypt Gulf of Suez S-650 TL,6706,Egypt Gulf of Suez S-650 TL,6706,9122,7020,8901,1,0,6422,15846,0,9603,-146.21,112.63,4.05,,,, +4707,Tern Island 1961,6707,Tern Island 1961,6707,9122,7022,8901,1,0,6422,15795,0,9603,114,-116,-333,,,, +4708,Cocos Islands 1965,6708,Cocos Islands 1965,6708,9122,7003,8901,1,0,6422,15794,0,9603,-491,-22,435,,,, +4709,Iwo Jima 1945,6709,Iwo Jima 1945,6709,9122,7022,8901,1,0,6422,15796,0,9603,145,75,-272,,,, +4710,Astro DOS 71,6710,Astro DOS 71,6710,9122,7022,8901,1,0,6422,15798,1,9603,-320,550,-494,,,, +4711,Marcus Island 1952,6711,Marcus Island 1952,6711,9122,7022,8901,1,0,6422,15799,0,9603,124,-234,-25,,,, +4712,Ascension Island 1958,6712,Ascension Island 1958,6712,9122,7022,8901,1,0,6422,15797,0,9603,-205,107,53,,,, +4713,Ayabelle Lighthouse,6713,Ayabelle Lighthouse,6713,9122,7012,8901,1,0,6422,6907,1,9603,-77,-128,142,,,, +4714,Bellevue,6714,Bellevue,6714,9122,7022,8901,1,0,6422,15801,0,9603,-127,-769,472,,,, +4715,Camp Area Astro,6715,Camp Area Astro,6715,9122,7022,8901,1,0,6422,15802,0,9603,-104,-129,239,,,, +4716,Phoenix Islands 1966,6716,Phoenix Islands 1966,6716,9122,7022,8901,1,0,6422,15803,0,9603,298,-304,-375,,,, +4717,Cape Canaveral,6717,Cape Canaveral,6717,9122,7008,8901,1,0,6422,15804,0,9603,-2,151,181,,,, +4718,Solomon 1968,6718,Solomon 1968,6718,9122,7022,8901,1,0,6422,15805,1,9603,230,-199,-752,,,, +4719,Easter Island 1967,6719,Easter Island 1967,6719,9122,7022,8901,1,0,6422,15806,0,9603,211,147,111,,,, +4720,Fiji 1986,6720,Fiji Geodetic Datum 1986,6720,9122,7043,8901,1,0,6422,15876,1,9606,0,0,4.5,0,0,0.554,0.2263 +4721,Fiji 1956,6721,Fiji 1956,6721,9122,7022,8901,1,0,6422,15875,0,9603,265.025,384.929,-194.046,,,, +4722,South Georgia 1968,6722,South Georgia 1968,6722,9122,7022,8901,1,0,6422,15813,0,9603,-794,119,-298,,,, +4723,GCGD59,6723,Grand Cayman Geodetic Datum 1959,6723,9122,7008,8901,1,0,6422,6142,1,9607,-179.483,-69.379,-27.584,7.862,-8.163,-6.042,-13.925 +4724,Diego Garcia 1969,6724,Diego Garcia 1969,6724,9122,7022,8901,1,0,6422,15808,0,9603,208,-435,-229,,,, +4725,Johnston Island 1961,6725,Johnston Island 1961,6725,9122,7022,8901,1,0,6422,15809,0,9603,189,-79,-202,,,, +4726,SIGD61,6726,Sister Islands Geodetic Datum 1961,6726,9122,7008,8901,1,0,6422,6143,1,9607,8.853,-52.644,180.304,0.393,2.323,-2.96,-24.081 +4727,Midway 1961,6727,Midway 1961,6727,9122,7022,8901,1,0,6422,15818,1,9603,403,-81,277,,,, +4728,Pico de las Nieves 1984,6728,Pico de las Nieves 1984,6728,9122,7022,8901,1,0,6422,15815,0,9603,-307,-92,127,,,, +4729,Pitcairn 1967,6729,Pitcairn 1967,6729,9122,7022,8901,1,0,6422,15819,0,9603,185,165,42,,,, +4730,Santo 1965,6730,Santo 1965,6730,9122,7022,8901,1,0,6422,15820,0,9603,170,42,84,,,, +4731,Viti Levu 1916,6731,Viti Levu 1916,6731,9122,7012,8901,1,1,6422,15821,0,9603,51,391,-36,,,, +4732,Marshall Islands 1960,6732,Marshall Islands 1960,6732,9122,7053,8901,1,0,6422,15822,0,9603,102,52,-38,,,, +4733,Wake Island 1952,6733,Wake Island 1952,6733,9122,7022,8901,1,0,6422,15823,0,9603,276,-57,149,,,, +4734,Tristan 1968,6734,Tristan 1968,6734,9122,7022,8901,1,0,6422,15816,0,9603,-632,438,-609,,,, +4735,Kusaie 1951,6735,Kusaie 1951,6735,9122,7022,8901,1,0,6422,15810,0,9603,647,1777,-1124,,,, +4736,Deception Island,6736,Deception Island,6736,9122,7012,8901,1,0,6422,15812,0,9603,260,12,-147,,,, +4737,Korea 2000,6737,Geocentric datum of Korea,6737,9122,7019,8901,1,0,6422,15831,0,9603,0,0,0,,,, +4738,Hong Kong 1963,6738,Hong Kong 1963,6738,9122,7007,8901,1,0,6422,,0,,,,,,,, +4739,"Hong Kong 1963(67)",6739,"Hong Kong 1963(67)",6739,9122,7022,8901,1,0,6422,15842,0,9603,-156,-271,-189,,,, +4740,PZ-90,6740,Parametry Zemli 1990,6740,9122,7054,8901,1,0,6422,15843,1,9607,0,0,1.5,0,0,-0.076,0 +4741,FD54,6741,Faroe Datum 1954,6741,9122,7022,8901,1,0,6422,,0,,,,,,,, +4742,GDM2000,6742,Geodetic Datum of Malaysia 2000,6742,9122,7019,8901,1,0,6422,,0,,,,,,,, +4743,Karbala 1979,6743,Karbala 1979,6743,9122,7012,8901,1,0,6422,5078,1,9603,70.995,-335.916,262.898,,,, +4744,Nahrwan 1934,6744,Nahrwan 1934,6744,9122,7012,8901,1,0,6422,7033,0,9603,-242.2,-144.9,370.3,,,, +4745,"RD/83",6745,"Rauenberg Datum/83",6745,9122,7004,8901,1,0,6422,,0,,,,,,,, +4746,"PD/83",6746,"Potsdam Datum/83",6746,9122,7004,8901,1,0,6422,,0,,,,,,,, +4747,GR96,6747,Greenland 1996,6747,9122,7019,8901,1,0,6422,15879,0,9603,0,0,0,,,, +4748,Vanua Levu 1915,6748,Vanua Levu 1915,6748,9122,7055,8901,1,0,6422,15878,0,9603,51,391,-36,,,, +4749,RGNC91-93,6749,Reseau Geodesique de Nouvelle Caledonie 91-93,6749,9122,7019,8901,1,0,6422,15880,0,9603,0,0,0,,,, +4750,ST87 Ouvea,6750,ST87 Ouvea,6750,9122,7030,8901,1,0,6422,15881,0,9603,-56.263,16.136,-22.856,,,, +4751,"Kertau (RSO)",6751,"Kertau (RSO)",6751,9122,7056,8901,1,0,6422,,0,,,,,,,, +4752,Viti Levu 1912,6752,Viti Levu 1912,6752,9122,7055,8901,1,0,6422,6895,1,9603,98,390,-22,,,, +4753,fk89,6753,fk89,6753,9122,7022,8901,1,0,6422,,0,,,,,,,, +4754,LGD2006,6754,Libyan Geodetic Datum 2006,6754,9122,7022,8901,1,0,6422,15908,0,9603,-208.4058,-109.8777,-2.5764,,,, +4755,DGN95,6755,Datum Geodesi Nasional 1995,6755,9122,7030,8901,1,0,6422,15912,0,9603,0,0,0,,,, +4756,VN-2000,6756,Vietnam 2000,6756,9122,7030,8901,1,0,6422,6960,1,9607,-191.90441429,-39.30318279,-111.45032835,-0.00928836,0.01975479,-0.00427372,0.252906278 +4757,SVY21,6757,SVY21,6757,9122,7030,8901,1,0,6422,,0,,,,,,,, +4758,JAD2001,6758,Jamaica 2001,6758,9122,7030,8901,1,0,6422,15925,0,9603,0,0,0,,,, +4759,"NAD83(NSRS2007)",6759,"NAD83 (National Spatial Reference System 2007)",6759,9122,7019,8901,1,0,6422,15931,0,9603,0,0,0,,,, +4760,WGS 66,6760,World Geodetic System 1966,6760,9122,7025,8901,1,0,6422,,0,,,,,,,, +4761,HTRS96,6761,Croatian Terrestrial Reference System,6761,9122,7019,8901,1,0,6422,15967,0,9603,0,0,0,,,, +4762,BDA2000,6762,Bermuda 2000,6762,9122,7030,8901,1,0,6422,15971,0,9603,0,0,0,,,, +4763,Pitcairn 2006,6763,Pitcairn 2006,6763,9122,7030,8901,1,0,6422,15972,0,9603,0,0,0,,,, +4764,RSRGD2000,6764,Ross Sea Region Geodetic Datum 2000,6764,9122,7019,8901,1,0,6422,15974,0,9603,0,0,0,,,, +4765,Slovenia 1996,6765,Slovenia Geodetic Datum 1996,6765,9122,7019,8901,1,0,6422,15976,0,9603,0,0,0,,,, +4801,"Bern 1898 (Bern)",6801,"CH1903 (Bern)",6149,9122,7004,8907,1,0,6422,1510,1,9603,674.374,15.056,405.346,,,, +4802,"Bogota 1975 (Bogota)",6802,"Bogota 1975 (Bogota)",6218,9122,7022,8904,1,0,6422,1125,1,9603,307,304,-318,,,, +4803,"Lisbon (Lisbon)",6803,"Lisbon 1937 (Lisbon)",6207,9122,7022,8902,1,0,6422,1984,1,9603,-304.046,-60.576,103.64,,,, +4804,"Makassar (Jakarta)",6804,"Makassar (Jakarta)",6257,9122,7004,8908,1,0,6422,1837,0,9603,-587.8,519.75,145.76,,,, +4805,"MGI (Ferro)",6805,"Militar-Geographische Institut (Ferro)",1031,9122,7004,8909,1,0,6422,3962,1,9603,682,-203,480,,,, +4806,"Monte Mario (Rome)",6806,"Monte Mario (Rome)",6265,9122,7022,8906,1,0,6422,1660,1,9606,-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68 +4807,"NTF (Paris)",6807,"Nouvelle Triangulation Francaise (Paris)",6275,9105,7011,8903,1,0,6403,1193,0,9603,-168,-60,320,,,, +4808,"Padang (Jakarta)",6808,"Padang 1884 (Jakarta)",6280,9122,7004,8908,1,0,6422,,0,,,,,,,, +4809,"Belge 1950 (Brussels)",6809,"Reseau National Belge 1950 (Brussels)",6215,9122,7022,8910,1,0,6422,,0,,,,,,,, +4810,"Tananarive (Paris)",6810,"Tananarive 1925 (Paris)",6297,9105,7022,8903,1,0,6403,1227,1,9603,-189,-242,-91,,,, +4811,"Voirol 1875 (Paris)",6811,"Voirol 1875 (Paris)",6304,9105,7011,8903,1,0,6403,1294,0,9603,-73,-247,227,,,, +4813,"Batavia (Jakarta)",6813,"Batavia (Jakarta)",6211,9122,7004,8908,1,0,6422,1123,1,9603,-377,681,-50,,,, +4814,"RT38 (Stockholm)",6814,"Stockholm 1938 (Stockholm)",6308,9122,7004,8911,1,0,6422,,0,,,,,,,, +4815,"Greek (Athens)",6815,"Greek (Athens)",6120,9122,7004,8912,1,0,6422,,0,,,,,,,, +4816,"Carthage (Paris)",6816,"Carthage (Paris)",6223,9105,7011,8903,1,0,6403,1130,1,9603,-263,6,431,,,, +4817,"NGO 1948 (Oslo)",6817,"NGO 1948 (Oslo)",6273,9122,7005,8913,1,0,6422,1654,0,9606,278.3,93,474.5,7.889,0.05,-6.61,6.21 +4818,"S-JTSK (Ferro)",6818,"System Jednotne Trigonometricke Site Katastralni (Ferro)",6156,9122,7004,8909,1,0,6422,15965,1,9603,589,76,480,,,, +4819,"Nord Sahara 1959 (Paris)",6819,"Nord Sahara 1959 (Paris)",6307,9105,7012,8903,1,1,6403,5660,1,9606,-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547 +4820,"Segara (Jakarta)",6820,"Gunung Segara (Jakarta)",6613,9122,7004,8908,1,0,6422,1897,1,9603,-403,684,41,,,, +4821,"Voirol 1879 (Paris)",6821,"Voirol 1879 (Paris)",6821,9105,7011,8903,1,0,6403,,0,,,,,,,, +4823,Sao Tome,1044,Sao Tome,1044,9122,7022,8901,1,0,6422,,0,,,,,,,, +4824,Principe,1046,Principe,1046,9122,7022,8901,1,0,6422,,0,,,,,,,, +4901,"ATF (Paris)",6901,"Ancienne Triangulation Francaise (Paris)",6901,9105,7027,8914,1,0,6403,,0,,,,,,,, +4902,"NDG (Paris)",6902,"Nord de Guerre (Paris)",6902,9105,7027,8903,1,1,6403,,0,,,,,,,, +4903,"Madrid 1870 (Madrid)",6903,"Madrid 1870 (Madrid)",6903,9122,7028,8905,1,0,6422,,0,,,,,,,, +4904,"Lisbon 1890 (Lisbon)",6904,"Lisbon 1890 (Lisbon)",6666,9122,7004,8902,1,0,6422,1986,1,9603,508.088,-191.042,565.223,,,, +5013,PTRA08,1041,Autonomous Regions of Portugal 2008,1041,9122,7019,8901,1,0,6422,4905,0,9603,0,0,0,,,, +5132,Tokyo 1892,1048,Tokyo 1892,6162,9122,7004,8901,1,0,6422,,0,,,,,,,, +5228,"S-JTSK/05",1052,"System Jednotne Trigonometricke Site Katastralni/05",1052,9122,7004,8901,1,0,6422,5227,0,9607,572.213,85.334,461.94,-4.9732,-1.529,-5.2484,3.5378 +5229,"S-JTSK/05 (Ferro)",1055,"System Jednotne Trigonometricke Site Katastralni/05 (Ferro)",1052,9122,7004,8909,1,0,6422,5227,0,9607,572.213,85.334,461.94,-4.9732,-1.529,-5.2484,3.5378 +5233,SLD99,1053,Sri Lanka Datum 1999,1053,9122,7015,8901,1,0,6422,5236,0,9607,-0.293,766.95,87.713,-0.195704,-1.695068,-3.473016,-0.039338 +5246,GDBD2009,1056,Geocentric Datum Brunei Darussalam 2009,1056,9122,7019,8901,1,0,6422,6701,0,9603,0,0,0,,,, +5252,TUREF,1057,Turkish National Reference Frame,1057,9122,7019,8901,1,0,6422,5261,0,9603,0,0,0,,,, +5264,DRUKREF 03,1058,Bhutan National Geodetic Datum,1058,9122,7019,8901,1,0,6422,5267,0,9603,0,0,0,,,, +5324,ISN2004,1060,Islands Net 2004,1060,9122,7019,8901,1,0,6422,5327,0,9603,0,0,0,,,, +5340,POSGAR 2007,1062,Posiciones Geodesicas Argentinas 2007,1062,9122,7019,8901,1,0,6422,5351,0,9603,0,0,0,,,, +5354,MARGEN,1063,Marco Geodesico Nacional de Bolivia,1063,9122,7019,8901,1,0,6422,5374,0,9603,0,0,0,,,, +5360,SIRGAS-Chile,1064,SIRGAS-Chile,1064,9122,7019,8901,1,0,6422,5375,0,9603,0,0,0,,,, +5365,CR05,1065,Costa Rica 2005,1065,9122,7030,8901,1,0,6422,5376,0,9603,0,0,0,,,, +5371,MACARIO SOLIS,1066,Sistema Geodesico Nacional de Panama MACARIO SOLIS,1066,9122,7019,8901,1,0,6422,5377,0,9603,0,0,0,,,, +5373,Peru96,1067,Peru96,1067,9122,7019,8901,1,0,6422,5378,0,9603,0,0,0,,,, +5381,SIRGAS-ROU98,1068,SIRGAS-ROU98,1068,9122,7030,8901,1,0,6422,5384,0,9603,0,0,0,,,, +5393,"SIRGAS_ES2007.8",1069,"SIRGAS_ES2007.8",1069,9122,7019,8901,1,0,6422,5395,0,9603,0,0,0,,,, +5451,Ocotepeque 1935,1070,Ocotepeque 1935,1070,9122,7008,8901,1,0,6422,6891,1,9603,205,96,-98,,,, +5464,Sibun Gorge 1922,1071,Sibun Gorge 1922,1071,9122,7007,8901,1,0,6422,,0,,,,,,,, +5467,Panama-Colon 1911,1072,Panama-Colon 1911,1072,9122,7008,8901,1,0,6422,,0,,,,,,,, +5489,RGAF09,1073,Reseau Geodesique des Antilles Francaises 2009,1073,9122,7019,8901,1,0,6422,5501,0,9603,0,0,0,,,, +5524,Corrego Alegre 1961,1074,Corrego Alegre 1961,1074,9122,7022,8901,1,0,6422,,0,,,,,,,, +5527,"SAD69(96)",1075,"South American Datum 1969(96)",1075,9122,7050,8901,1,0,6422,6195,0,9603,-67.35,3.88,-38.22,,,, +5546,PNG94,1076,Papua New Guinea Geodetic Datum 1994,1076,9122,7019,8901,1,0,6422,5553,0,9603,0,0,0,,,, +5561,UCS-2000,1077,Ukraine 2000,1077,9122,7024,8901,1,0,6422,5590,1,9607,25,-141,-78.5,0,-0.35,-0.736,0 +5593,FEH2010,1078,Fehmarnbelt Datum 2010,1078,9122,7019,8901,1,0,6422,5599,0,9603,0,0,0,,,, +5681,"DB_REF",1081,Deutsche Bahn Reference System,1081,9122,7004,8901,1,0,6422,,0,,,,,,,, +5886,TGD2005,1095,Tonga Geodetic Datum 2005,1095,9122,7019,8901,1,0,6422,,0,,,,,,,, +6135,CIGD11,1100,Cayman Islands Geodetic Datum 2011,1100,9122,7019,8901,1,0,6422,6177,0,9603,0,0,0,,,, +6207,Nepal 1981,1111,Nepal 1981,1111,9122,7015,8901,1,0,6422,6208,0,9603,293.17,726.18,245.36,,,, +6311,CGRS93,1112,Cyprus Geodetic Reference System 1993,1112,9122,7030,8901,1,0,6422,7721,1,9607,8.846,-4.394,-1.122,0.00237,0.146528,-0.130428,0.783926 +6318,"NAD83(2011)",1116,"NAD83 (National Spatial Reference System 2011)",1116,9122,7019,8901,1,0,6422,,0,,,,,,,, +6322,"NAD83(PA11)",1117,"NAD83 (National Spatial Reference System PA11)",1117,9122,7019,8901,1,0,6422,,0,,,,,,,, +6325,"NAD83(MA11)",1118,"NAD83 (National Spatial Reference System MA11)",1118,9122,7019,8901,1,0,6422,,0,,,,,,,, +6365,Mexico ITRF2008,1120,Mexico ITRF2008,1120,9122,7019,8901,1,0,6422,6373,0,9603,0,0,0,,,, +6668,JGD2011,1128,Japanese Geodetic Datum 2011,1128,9122,7019,8901,1,0,6422,,0,,,,,,,, +6706,RDN2008,1132,Rete Dinamica Nazionale 2008,1132,9122,7019,8901,1,0,6422,6711,0,9603,0,0,0,,,, +6783,"NAD83(CORS96)",1133,"NAD83 (Continuously Operating Reference Station 1996)",1133,9122,7019,8901,1,0,6422,,0,,,,,,,, +6881,Aden 1925,1135,Aden 1925,1135,9122,7012,8901,1,0,6422,6910,0,9603,-24,-203,268,,,, +6882,Bekaa Valley 1920,1137,Bekaa Valley 1920,1137,9122,7012,8901,1,0,6422,6911,0,9603,-183,-15,273,,,, +6883,Bioko,1136,Bioko,1136,9122,7022,8901,1,0,6422,6912,0,9603,-235,-110,393,,,, +6892,South East Island 1943,1138,South East Island 1943,1138,9122,7012,8901,1,0,6422,6914,1,9603,-43.685,-179.785,-267.721,,,, +6894,Gambia,1139,Gambia,1139,9122,7012,8901,1,0,6422,6913,0,9603,-63,176,185,,,, +6980,IGD05,1143,Israeli Geodetic Datum 2005,1143,9122,7019,8901,1,1,6422,,0,,,,,,,, +6983,IG05 Intermediate CRS,1142,IG05 Intermediate Datum,1142,9122,7019,8901,1,0,6422,,0,,,,,,,, +6987,"IGD05/12",1145,"Israeli Geodetic Datum 2005(2012)",1145,9122,7019,8901,1,1,6422,,0,,,,,,,, +6990,"IG05/12 Intermediate CRS",1144,"IG05/12 Intermediate Datum",1144,9122,7019,8901,1,0,6422,,0,,,,,,,, +7035,"RGSPM06 (lon-lat)",1038,Reseau Geodesique de Saint Pierre et Miquelon 2006,1038,9122,7019,8901,1,0,6424,,0,,,,,,,, +7037,"RGR92 (lon-lat)",6627,Reseau Geodesique de la Reunion 1992,6627,9122,7019,8901,1,0,6424,,0,,,,,,,, +7039,"RGM04 (lon-lat)",1036,Reseau Geodesique de Mayotte 2004,1036,9122,7019,8901,1,0,6424,,0,,,,,,,, +7041,"RGFG95 (lon-lat)",6624,Reseau Geodesique Francais Guyane 1995,6624,9122,7019,8901,1,0,6424,,0,,,,,,,, +7073,RGTAAF07,1113,Reseau Geodesique des Terres Australes et Antarctiques Francaises 2007,1113,9122,7019,8901,1,0,6422,,0,,,,,,,, +7084,"RGF93 (lon-lat)",6171,Reseau Geodesique Francais 1993,6171,9122,7019,8901,1,0,6424,,0,,,,,,,, +7086,"RGAF09 (lon-lat)",1073,Reseau Geodesique des Antilles Francaises 2009,1073,9122,7019,8901,1,0,6424,,0,,,,,,,, +7088,"RGTAAF07 (lon-lat)",1113,Reseau Geodesique des Terres Australes et Antarctiques Francaises 2007,1113,9122,7019,8901,1,1,6424,,0,,,,,,,, +7133,"RGTAAF07 (lon-lat)",1113,Reseau Geodesique des Terres Australes et Antarctiques Francaises 2007,1113,9122,7019,8901,1,0,6424,,0,,,,,,,, +7136,IGD05,1114,Israeli Geodetic Datum 2005,1114,9122,7030,8901,1,0,6422,,0,,,,,,,, +7139,"IGD05/12",1115,"Israeli Geodetic Datum 2005(2012)",1115,9122,7030,8901,1,0,6422,,0,,,,,,,, +7373,ONGD14,1147,Oman National Geodetic Datum 2014,1147,9122,7019,8901,1,0,6422,7443,0,9603,0,0,0,,,, +7683,GSK-2011,1159,Geodezicheskaya Sistema Koordinat 2011,1159,9122,1025,8901,1,0,6422,,0,,,,,,,, +7686,Kyrg-06,1160,Kyrgyzstan Geodetic Datum 2006,1160,9122,7019,8901,1,0,6422,,0,,,,,,,, +7798,BGS2005,1167,Bulgaria Geodetic System 2005,1167,9122,7019,8901,1,0,6422,,0,,,,,,,, +7844,GDA2020,1168,Geocentric Datum of Australia 2020,1168,9122,7019,8901,1,0,6422,,0,,,,,,,, +7881,St. Helena Tritan,1173,St. Helena Tritan,1173,9122,7030,8901,1,0,6422,7898,0,9603,-0.077,0.079,0.086,,,, +7886,SHGD2015,1174,St. Helena Geodetic Datum 2015,1174,9122,7019,8901,1,0,6422,7892,0,9603,0,0,0,,,, +8042,"Gusterberg (Ferro)",1188,"Gusterberg (Ferro)",1188,9122,1026,8909,1,0,6422,,0,,,,,,,, +8043,"St. Stephen (Ferro)",1189,"St. Stephen (Ferro)",1189,9122,1026,8909,1,0,6422,,0,,,,,,,, +8086,ISN2016,1187,Islands Net 2016,1187,9122,7019,8901,1,0,6422,,0,,,,,,,, +8232,"NAD83(CSRS96)",1192,"North American Datum of 1983 (CSRS96)",1192,9122,7019,8901,1,0,6422,,0,,,,,,,, +8237,"NAD83(CSRS)v2",1193,"North American Datum of 1983 (CSRS) version 2",1193,9122,7019,8901,1,0,6422,,0,,,,,,,, +8240,"NAD83(CSRS)v3",1194,"North American Datum of 1983 (CSRS) version 3",1194,9122,7019,8901,1,0,6422,,0,,,,,,,, +8246,"NAD83(CSRS)v4",1195,"North American Datum of 1983 (CSRS) version 4",1195,9122,7019,8901,1,0,6422,,0,,,,,,,, +8249,"NAD83(CSRS)v5",1196,"North American Datum of 1983 (CSRS) version 5",1196,9122,7019,8901,1,0,6422,,0,,,,,,,, +8252,"NAD83(CSRS)v6",1197,"North American Datum of 1983 (CSRS) version 6",1197,9122,7019,8901,1,0,6422,,0,,,,,,,, +8255,"NAD83(CSRS)v7",1198,"North American Datum of 1983 (CSRS) version 7",1198,9122,7019,8901,1,0,6422,,0,,,,,,,, diff --git a/resources/geoccs.csv b/resources/geoccs.csv new file mode 100644 index 0000000000..0a7add38f0 --- /dev/null +++ b/resources/geoccs.csv @@ -0,0 +1,182 @@ +"COORD_REF_SYS_CODE","COORD_REF_SYS_NAME","DATUM_CODE","DATUM_NAME","GREENWICH_DATUM","UOM_CODE","ELLIPSOID_CODE","PRIME_MERIDIAN_CODE","SHOW_CRS","DEPRECATED","COORD_SYS_CODE" +3822,TWD97,1026,Taiwan Datum 1997,1026,9001,7019,8901,1,0,6500 +3887,IGRS,1029,Iraqi Geospatial Reference System,1029,9001,7019,8901,1,0,6500 +4000,MOLDREF99,1032,MOLDREF99,1032,9001,7019,8901,1,0,6500 +4039,RGRDC 2005,1033,Reseau Geodesique de la RDC 2005,1033,9001,7019,8901,1,0,6500 +4073,SREF98,1034,Serbian Reference Network 1998,1034,9001,7019,8901,1,0,6500 +4079,REGCAN95,1035,Red Geodesica de Canarias 1995,1035,9001,7019,8901,1,0,6500 +4328,"WGS 84 (geocentric)",6326,World Geodetic System 1984,6326,9001,7030,8901,1,1,6500 +4330,"ITRF88 (geocentric)",6647,International Terrestrial Reference Frame 1988,6647,9001,7019,8901,1,1,6500 +4331,"ITRF89 (geocentric)",6648,International Terrestrial Reference Frame 1989,6648,9001,7019,8901,1,1,6500 +4332,"ITRF90 (geocentric)",6649,International Terrestrial Reference Frame 1990,6649,9001,7019,8901,1,1,6500 +4333,"ITRF91 (geocentric)",6650,International Terrestrial Reference Frame 1991,6650,9001,7019,8901,1,1,6500 +4334,"ITRF92 (geocentric)",6651,International Terrestrial Reference Frame 1992,6651,9001,7019,8901,1,1,6500 +4335,"ITRF93 (geocentric)",6652,International Terrestrial Reference Frame 1993,6652,9001,7019,8901,1,1,6500 +4336,"ITRF94 (geocentric)",6653,International Terrestrial Reference Frame 1994,6653,9001,7019,8901,1,1,6500 +4337,"ITRF96 (geocentric)",6654,International Terrestrial Reference Frame 1996,6654,9001,7019,8901,1,1,6500 +4338,"ITRF97 (geocentric)",6655,International Terrestrial Reference Frame 1997,6655,9001,7019,8901,1,1,6500 +4340,"Australian Antarctic (geocentric)",6176,Australian Antarctic Datum 1998,6176,9001,7019,8901,1,1,6500 +4342,"EST97 (geocentric)",6180,Estonia 1997,6180,9001,7019,8901,1,1,6500 +4344,"CHTRF95 (geocentric)",6151,Swiss Terrestrial Reference Frame 1995,6151,9001,7019,8901,1,1,6500 +4346,"ETRS89 (geocentric)",6258,European Terrestrial Reference System 1989,6258,9001,7019,8901,1,1,6500 +4348,"GDA94 (geocentric)",6283,Geocentric Datum of Australia 1994,6283,9001,7019,8901,1,1,6500 +4350,"Hartebeesthoek94 (geocentric)",6148,Hartebeesthoek94,6148,9001,7030,8901,1,1,6500 +4352,"IRENET95 (geocentric)",6173,IRENET95,6173,9001,7019,8901,1,1,6500 +4354,"JGD2000 (geocentric)",6612,Japanese Geodetic Datum 2000,6612,9001,7019,8901,1,1,6500 +4356,"LKS94 (ETRS89) (geocentric)",6126,"Lithuania 1994 (ETRS89)",6126,9001,7019,8901,1,1,6500 +4358,"Moznet (geocentric)",6130,"Moznet (ITRF94)",6130,9001,7030,8901,1,1,6500 +4360,"NAD83(CSRS) (geocentric)",6140,NAD83 Canadian Spatial Reference System,6140,9001,7019,8901,1,1,6500 +4362,"NAD83(HARN) (geocentric)",6152,"NAD83 (High Accuracy Reference Network)",6152,9001,7019,8901,1,1,6500 +4364,"NZGD2000 (geocentric)",6167,New Zealand Geodetic Datum 2000,6167,9001,7019,8901,1,1,6500 +4366,"POSGAR 98 (geocentric)",6190,Posiciones Geodesicas Argentinas 1998,6190,9001,7019,8901,1,1,6500 +4368,"REGVEN (geocentric)",6189,Red Geodesica Venezolana,6189,9001,7019,8901,1,1,6500 +4370,"RGF93 (geocentric)",6171,Reseau Geodesique Francais 1993,6171,9001,7019,8901,1,1,6500 +4372,"RGFG95 (geocentric)",6624,Reseau Geodesique Francais Guyane 1995,6624,9001,7019,8901,1,1,6500 +4374,"RGR92 (geocentric)",6627,Reseau Geodesique de la Reunion 1992,6627,9001,7019,8901,1,1,6500 +4376,"SIRGAS (geocentric)",6170,Sistema de Referencia Geocentrico para America del Sur 1995,6170,9001,7019,8901,1,1,6500 +4378,"SWEREF99 (geocentric)",6619,SWEREF99,6619,9001,7019,8901,1,1,6500 +4380,"Yemen NGN96 (geocentric)",6163,Yemen National Geodetic Network 1996,6163,9001,7030,8901,1,1,6500 +4382,"RGNC 1991 (geocentric)",6645,Reseau Geodesique Nouvelle Caledonie 1991,6645,9001,7022,8901,1,1,6500 +4384,"RRAF 1991 (geocentric)",6640,Reseau de Reference des Antilles Francaises 1991,6640,9001,7030,8901,1,1,6500 +4385,"ITRF2000 (geocentric)",6656,International Terrestrial Reference Frame 2000,6656,9001,7019,8901,1,1,6500 +4387,"ISN93 (geocentric)",6659,Islands Net 1993,6659,9001,7019,8901,1,1,6500 +4389,"LKS92 (geocentric)",6661,Latvia 1992,6661,9001,7019,8901,1,1,6500 +4465,RGSPM06,1038,Reseau Geodesique de Saint Pierre et Miquelon 2006,1038,9001,7019,8901,1,0,6500 +4468,RGM04,1036,Reseau Geodesique de Mayotte 2004,1036,9001,7019,8901,1,0,6500 +4473,Cadastre 1997,1037,Cadastre 1997,1037,9001,7022,8901,1,0,6500 +4479,China Geodetic Coordinate System 2000,1043,China 2000,1043,9001,1024,8901,1,0,6500 +4481,Mexico ITRF92,1042,Mexico ITRF92,1042,9001,7019,8901,1,0,6500 +4556,RRAF 1991,1047,Reseau de Reference des Antilles Francaises 1991,1047,9001,7019,8901,1,0,6500 +4882,Slovenia 1996,6765,Slovenia Geodetic Datum 1996,6765,9001,7019,8901,1,0,6500 +4884,RSRGD2000,6764,Ross Sea Region Geodetic Datum 2000,6764,9001,7019,8901,1,0,6500 +4886,BDA2000,6762,Bermuda 2000,6762,9001,7030,8901,1,0,6500 +4888,HTRS96,6761,Croatian Terrestrial Reference System,6761,9001,7019,8901,1,0,6500 +4890,WGS 66,6760,World Geodetic System 1966,6760,9001,7025,8901,1,0,6500 +4892,"NAD83(NSRS2007)",6759,"NAD83 (National Spatial Reference System 2007)",6759,9001,7019,8901,1,0,6500 +4894,JAD2001,6758,Jamaica 2001,6758,9001,7030,8901,1,0,6500 +4896,ITRF2005,6896,International Terrestrial Reference Frame 2005,6896,9001,7019,8901,1,0,6500 +4897,DGN95,6755,Datum Geodesi Nasional 1995,6755,9001,7030,8901,1,0,6500 +4899,LGD2006,6754,Libyan Geodetic Datum 2006,6754,9001,7022,8901,1,0,6500 +4906,RGNC91-93,6749,Reseau Geodesique de Nouvelle Caledonie 91-93,6749,9001,7019,8901,1,0,6500 +4908,GR96,6747,Greenland 1996,6747,9001,7019,8901,1,0,6500 +4910,ITRF88,6647,International Terrestrial Reference Frame 1988,6647,9001,7019,8901,1,0,6500 +4911,ITRF89,6648,International Terrestrial Reference Frame 1989,6648,9001,7019,8901,1,0,6500 +4912,ITRF90,6649,International Terrestrial Reference Frame 1990,6649,9001,7019,8901,1,0,6500 +4913,ITRF91,6650,International Terrestrial Reference Frame 1991,6650,9001,7019,8901,1,0,6500 +4914,ITRF92,6651,International Terrestrial Reference Frame 1992,6651,9001,7019,8901,1,0,6500 +4915,ITRF93,6652,International Terrestrial Reference Frame 1993,6652,9001,7019,8901,1,0,6500 +4916,ITRF94,6653,International Terrestrial Reference Frame 1994,6653,9001,7019,8901,1,0,6500 +4917,ITRF96,6654,International Terrestrial Reference Frame 1996,6654,9001,7019,8901,1,0,6500 +4918,ITRF97,6655,International Terrestrial Reference Frame 1997,6655,9001,7019,8901,1,0,6500 +4919,ITRF2000,6656,International Terrestrial Reference Frame 2000,6656,9001,7019,8901,1,0,6500 +4920,GDM2000,6742,Geodetic Datum of Malaysia 2000,6742,9001,7019,8901,1,0,6500 +4922,PZ-90,6740,Parametry Zemli 1990,6740,9001,7054,8901,1,0,6500 +4924,Mauritania 1999,6702,Mauritania 1999,6702,9001,7019,8901,1,0,6500 +4926,Korea 2000,6737,Geocentric datum of Korea,6737,9001,7019,8901,1,0,6500 +4928,POSGAR 94,6694,Posiciones Geodesicas Argentinas 1994,6694,9001,7030,8901,1,0,6500 +4930,Australian Antarctic,6176,Australian Antarctic Datum 1998,6176,9001,7019,8901,1,0,6500 +4932,CHTRF95,6151,Swiss Terrestrial Reference Frame 1995,6151,9001,7019,8901,1,0,6500 +4934,EST97,6180,Estonia 1997,6180,9001,7019,8901,1,0,6500 +4936,ETRS89,6258,European Terrestrial Reference System 1989,6258,9001,7019,8901,1,0,6500 +4938,GDA94,6283,Geocentric Datum of Australia 1994,6283,9001,7019,8901,1,0,6500 +4940,Hartebeesthoek94,6148,Hartebeesthoek94,6148,9001,7030,8901,1,0,6500 +4942,IRENET95,6173,IRENET95,6173,9001,7019,8901,1,0,6500 +4944,ISN93,6659,Islands Net 1993,6659,9001,7019,8901,1,0,6500 +4946,JGD2000,6612,Japanese Geodetic Datum 2000,6612,9001,7019,8901,1,0,6500 +4948,LKS92,6661,Latvia 1992,6661,9001,7019,8901,1,0,6500 +4950,LKS94,6126,"Lithuania 1994 (ETRS89)",6126,9001,7019,8901,1,0,6500 +4952,Moznet,6130,"Moznet (ITRF94)",6130,9001,7030,8901,1,0,6500 +4954,"NAD83(CSRS)",6140,NAD83 Canadian Spatial Reference System,6140,9001,7019,8901,1,0,6500 +4956,"NAD83(HARN)",6152,"NAD83 (High Accuracy Reference Network)",6152,9001,7019,8901,1,0,6500 +4958,NZGD2000,6167,New Zealand Geodetic Datum 2000,6167,9001,7019,8901,1,0,6500 +4960,POSGAR 98,6190,Posiciones Geodesicas Argentinas 1998,6190,9001,7019,8901,1,0,6500 +4962,REGVEN,6189,Red Geodesica Venezolana,6189,9001,7019,8901,1,0,6500 +4964,RGF93,6171,Reseau Geodesique Francais 1993,6171,9001,7019,8901,1,0,6500 +4966,RGFG95,6624,Reseau Geodesique Francais Guyane 1995,6624,9001,7019,8901,1,0,6500 +4968,RGNC 1991,6645,Reseau Geodesique Nouvelle Caledonie 1991,6645,9001,7022,8901,1,1,6500 +4970,RGR92,6627,Reseau Geodesique de la Reunion 1992,6627,9001,7019,8901,1,0,6500 +4972,RRAF 1991,6640,Reseau de Reference des Antilles Francaises 1991,6640,9001,7030,8901,1,1,6500 +4974,SIRGAS 1995,6170,Sistema de Referencia Geocentrico para America del Sur 1995,6170,9001,7019,8901,1,0,6500 +4976,SWEREF99,6619,SWEREF99,6619,9001,7019,8901,1,0,6500 +4978,WGS 84,6326,World Geodetic System 1984,6326,9001,7030,8901,1,0,6500 +4980,Yemen NGN96,6163,Yemen National Geodetic Network 1996,6163,9001,7030,8901,1,0,6500 +4982,IGM95,6670,Istituto Geografico Militaire 1995,6670,9001,7030,8901,1,0,6500 +4984,WGS 72,6322,World Geodetic System 1972,6322,9001,7043,8901,1,0,6500 +4986,WGS 72BE,6324,WGS 72 Transit Broadcast Ephemeris,6324,9001,7043,8901,1,0,6500 +4988,SIRGAS 2000,6674,Sistema de Referencia Geocentrico para las AmericaS 2000,6674,9001,7019,8901,1,0,6500 +4990,Lao 1993,6677,Lao 1993,6677,9001,7024,8901,1,0,6500 +4992,Lao 1997,6678,Lao National Datum 1997,6678,9001,7024,8901,1,0,6500 +4994,PRS92,6683,Philippine Reference System 1992,6683,9001,7008,8901,1,0,6500 +4996,MAGNA-SIRGAS,6686,Marco Geocentrico Nacional de Referencia,6686,9001,7019,8901,1,0,6500 +4998,RGPF,6687,Reseau Geodesique de la Polynesie Francaise,6687,9001,7019,8901,1,0,6500 +5011,PTRA08,1041,Autonomous Regions of Portugal 2008,1041,9001,7019,8901,1,0,6500 +5244,GDBD2009,1056,Geocentric Datum Brunei Darussalam 2009,1056,9001,7019,8901,1,0,6500 +5250,TUREF,1057,Turkish National Reference Frame,1057,9001,7019,8901,1,0,6500 +5262,DRUKREF 03,1058,Bhutan National Geodetic Datum,1058,9001,7019,8901,1,0,6500 +5322,ISN2004,1060,Islands Net 2004,1060,9001,7019,8901,1,0,6500 +5332,ITRF2008,1061,International Terrestrial Reference Frame 2008,1061,9001,7019,8901,1,0,6500 +5341,POSGAR 2007,1062,Posiciones Geodesicas Argentinas 2007,1062,9001,7019,8901,1,0,6500 +5352,MARGEN,1063,Marco Geodesico Nacional de Bolivia,1063,9001,7019,8901,1,0,6500 +5358,SIRGAS-Chile,1064,SIRGAS-Chile,1064,9001,7019,8901,1,0,6500 +5363,CR05,1065,Costa Rica 2005,1065,9001,7030,8901,1,0,6500 +5368,MACARIO SOLIS,1066,Sistema Geodesico Nacional de Panama MACARIO SOLIS,1066,9001,7019,8901,1,0,6500 +5369,Peru96,1067,Peru96,1067,9001,7019,8901,1,0,6500 +5379,SIRGAS-ROU98,1068,SIRGAS-ROU98,1068,9001,7030,8901,1,0,6500 +5391,"SIRGAS_ES2007.8",1069,"SIRGAS_ES2007.8",1069,9001,7019,8901,1,0,6500 +5487,RGAF09,1073,Reseau Geodesique des Antilles Francaises 2009,1073,9001,7019,8901,1,0,6500 +5544,PNG94,1076,Papua New Guinea Geodetic Datum 1994,1076,9001,7019,8901,1,0,6500 +5558,UCS-2000,1077,Ukraine 2000,1077,9001,7024,8901,1,0,6500 +5591,FEH2010,1078,Fehmarnbelt Datum 2010,1078,9001,7019,8901,1,0,6500 +5828,"DB_REF",1081,Deutsche Bahn Reference System,1081,9001,7004,8901,1,0,6500 +5884,TGD2005,1095,Tonga Geodetic Datum 2005,1095,9001,7019,8901,1,0,6500 +6133,CIGD11,1100,Cayman Islands Geodetic Datum 2011,1100,9001,7019,8901,1,0,6500 +6309,CGRS93,1112,Cyprus Geodetic Reference System 1993,1112,9001,7030,8901,1,0,6500 +6317,"NAD83(2011)",1116,"NAD83 (National Spatial Reference System 2011)",1116,9001,7019,8901,1,0,6500 +6320,"NAD83(PA11)",1117,"NAD83 (National Spatial Reference System PA11)",1117,9001,7019,8901,1,0,6500 +6323,"NAD83(MA11)",1118,"NAD83 (National Spatial Reference System MA11)",1118,9001,7019,8901,1,0,6500 +6363,Mexico ITRF2008,1120,Mexico ITRF2008,1120,9001,7019,8901,1,0,6500 +6666,JGD2011,1128,Japanese Geodetic Datum 2011,1128,9001,7019,8901,1,0,6500 +6704,RDN2008,1132,Rete Dinamica Nazionale 2008,1132,9001,7019,8901,1,0,6500 +6781,"NAD83(CORS96)",1133,"NAD83 (Continuously Operating Reference Station 1996)",1133,9001,7019,8901,1,0,6500 +6934,IGS08,1141,IGS08,1141,9001,7019,8901,1,0,6500 +6978,IGD05,1143,Israeli Geodetic Datum 2005,1143,9001,7019,8901,1,1,6500 +6981,IG05 Intermediate CRS,1142,IG05 Intermediate Datum,1142,9001,7019,8901,1,0,6500 +6985,"IGD05/12",1145,"Israeli Geodetic Datum 2005(2012)",1145,9001,7019,8901,1,1,6500 +6988,"IG05/12 Intermediate CRS",1144,"IG05/12 Intermediate Datum",1144,9001,7019,8901,1,0,6500 +7071,RGTAAF07,1113,Reseau Geodesique des Terres Australes et Antarctiques Francaises 2007,1113,9001,7019,8901,1,0,6500 +7134,IGD05,1114,Israeli Geodetic Datum 2005,1114,9001,7030,8901,1,0,6500 +7137,"IGD05/12",1115,"Israeli Geodetic Datum 2005(2012)",1115,9001,7030,8901,1,0,6500 +7371,ONGD14,1147,Oman National Geodetic Datum 2014,1147,9001,7019,8901,1,0,6500 +7656,"WGS 84 (G730)",1152,"World Geodetic System 1984 (G730)",1152,9001,7030,8901,1,0,6500 +7658,"WGS 84 (G873)",1153,"World Geodetic System 1984 (G873)",1153,9001,7030,8901,1,0,6500 +7660,"WGS 84 (G1150)",1154,"World Geodetic System 1984 (G1150)",1154,9001,7030,8901,1,0,6500 +7662,"WGS 84 (G1674)",1155,"World Geodetic System 1984 (G1674)",1155,9001,7030,8901,1,0,6500 +7664,"WGS 84 (G1762)",1156,"World Geodetic System 1984 (G1762)",1156,9001,7030,8901,1,0,6500 +7677,PZ-90.02,1157,Parametry Zemli 1990.02,1157,9001,7054,8901,1,0,6500 +7679,PZ-90.11,1158,Parametry Zemli 1990.11,1158,9001,7054,8901,1,0,6500 +7681,GSK-2011,1159,Geodezicheskaya Sistema Koordinat 2011,1159,9001,1025,8901,1,0,6500 +7684,Kyrg-06,1160,Kyrgyzstan Geodetic Datum 2006,1160,9001,7019,8901,1,0,6500 +7789,ITRF2014,1165,International Terrestrial Reference Frame 2014,1165,9001,7019,8901,1,0,6500 +7796,BGS2005,1167,Bulgaria Geodetic System 2005,1167,9001,7019,8901,1,0,6500 +7815,"WGS 84 (Transit)",1166,"World Geodetic System 1984 (Transit)",1166,9001,7030,8901,1,0,6500 +7842,GDA2020,1168,Geocentric Datum of Australia 2020,1168,9001,7019,8901,1,0,6500 +7879,St. Helena Tritan,1173,St. Helena Tritan,1173,9001,7030,8901,1,0,6500 +7884,SHGD2015,1174,St. Helena Geodetic Datum 2015,1174,9001,7019,8901,1,0,6500 +7914,ETRF89,1178,European Terrestrial Reference Frame 1989,1178,9001,7019,8901,1,0,6500 +7916,ETRF90,1179,European Terrestrial Reference Frame 1990,1179,9001,7019,8901,1,0,6500 +7918,ETRF91,1180,European Terrestrial Reference Frame 1991,1180,9001,7019,8901,1,0,6500 +7920,ETRF92,1181,European Terrestrial Reference Frame 1992,1181,9001,7019,8901,1,0,6500 +7922,ETRF93,1182,European Terrestrial Reference Frame 1993,1182,9001,7019,8901,1,0,6500 +7924,ETRF94,1183,European Terrestrial Reference Frame 1994,1183,9001,7019,8901,1,0,6500 +7926,ETRF96,1184,European Terrestrial Reference Frame 1996,1184,9001,7019,8901,1,0,6500 +7928,ETRF97,1185,European Terrestrial Reference Frame 1997,1185,9001,7019,8901,1,0,6500 +7930,ETRF2000,1186,European Terrestrial Reference Frame 2000,1186,9001,7019,8901,1,0,6500 +8084,ISN2016,1187,Islands Net 2016,1187,9001,7019,8901,1,0,6500 +8227,IGS14,1191,IGS14,1191,9001,7019,8901,1,0,6500 +8230,"NAD83(CSRS96)",1192,"North American Datum of 1983 (CSRS96)",1192,9001,7019,8901,1,0,6500 +8233,"NAD83(CSRS)v2",1193,"North American Datum of 1983 (CSRS) version 2",1193,9001,7019,8901,1,0,6500 +8238,"NAD83(CSRS)v3",1194,"North American Datum of 1983 (CSRS) version 3",1194,9001,7019,8901,1,0,6500 +8242,"NAD83(CSRS)v4",1195,"North American Datum of 1983 (CSRS) version 4",1195,9001,7019,8901,1,0,6500 +8247,"NAD83(CSRS)v5",1196,"North American Datum of 1983 (CSRS) version 5",1196,9001,7019,8901,1,0,6500 +8250,"NAD83(CSRS)v6",1197,"North American Datum of 1983 (CSRS) version 6",1197,9001,7019,8901,1,0,6500 +8253,"NAD83(CSRS)v7",1198,"North American Datum of 1983 (CSRS) version 7",1198,9001,7019,8901,1,0,6500 diff --git a/resources/pcs.csv b/resources/pcs.csv new file mode 100644 index 0000000000..3dcb4c70c2 --- /dev/null +++ b/resources/pcs.csv @@ -0,0 +1,4977 @@ +"COORD_REF_SYS_CODE","COORD_REF_SYS_NAME","UOM_CODE","SOURCE_GEOGCRS_CODE","COORD_OP_CODE","COORD_OP_METHOD_CODE","SHOW_CRS","DEPRECATED","COORD_SYS_CODE","PARAMETER_CODE_1","PARAMETER_VALUE_1","PARAMETER_UOM_1","PARAMETER_CODE_2","PARAMETER_VALUE_2","PARAMETER_UOM_2","PARAMETER_CODE_3","PARAMETER_VALUE_3","PARAMETER_UOM_3","PARAMETER_CODE_4","PARAMETER_VALUE_4","PARAMETER_UOM_4","PARAMETER_CODE_5","PARAMETER_VALUE_5","PARAMETER_UOM_5","PARAMETER_CODE_6","PARAMETER_VALUE_6","PARAMETER_UOM_6","PARAMETER_CODE_7","PARAMETER_VALUE_7","PARAMETER_UOM_7","DX","DY","DZ","RX","RY","RZ","DS" +2000,"Anguilla 1957 / British West Indies Grid",9001,4600,19942,9807,1,0,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,,,,,,,, +2001,"Antigua 1943 / British West Indies Grid",9001,4601,19942,9807,1,0,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,,,,,,,, +2002,"Dominica 1945 / British West Indies Grid",9001,4602,19942,9807,1,0,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,,,,,,,, +2003,"Grenada 1953 / British West Indies Grid",9001,4603,19942,9807,1,0,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,,,,,,,, +2004,"Montserrat 1958 / British West Indies Grid",9001,4604,19942,9807,1,0,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,,,,,,,, +2005,"St. Kitts 1955 / British West Indies Grid",9001,4605,19942,9807,1,0,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,,,,,,,, +2006,"St. Lucia 1955 / British West Indies Grid",9001,4606,19942,9807,1,0,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,,,,,,,, +2007,"St. Vincent 45 / British West Indies Grid",9001,4607,19942,9807,1,0,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,,,,,,,, +2008,"NAD27(CGQ77) / SCoPQ zone 2",9001,4609,17700,9807,1,1,4499,8801,0,9110,8802,-55.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2009,"NAD27(CGQ77) / SCoPQ zone 3",9001,4609,17703,9807,1,0,4499,8801,0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2010,"NAD27(CGQ77) / SCoPQ zone 4",9001,4609,17704,9807,1,0,4499,8801,0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2011,"NAD27(CGQ77) / SCoPQ zone 5",9001,4609,17705,9807,1,0,4499,8801,0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2012,"NAD27(CGQ77) / SCoPQ zone 6",9001,4609,17706,9807,1,0,4499,8801,0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2013,"NAD27(CGQ77) / SCoPQ zone 7",9001,4609,17707,9807,1,0,4499,8801,0,9110,8802,-70.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2014,"NAD27(CGQ77) / SCoPQ zone 8",9001,4609,17708,9807,1,0,4499,8801,0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2015,"NAD27(CGQ77) / SCoPQ zone 9",9001,4609,17709,9807,1,0,4499,8801,0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2016,"NAD27(CGQ77) / SCoPQ zone 10",9001,4609,17710,9807,1,0,4499,8801,0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2017,"NAD27(76) / MTM zone 8",9001,4608,17708,9807,1,0,4499,8801,0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2018,"NAD27(76) / MTM zone 9",9001,4608,17709,9807,1,0,4499,8801,0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2019,"NAD27(76) / MTM zone 10",9001,4608,17710,9807,1,0,4499,8801,0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2020,"NAD27(76) / MTM zone 11",9001,4608,17711,9807,1,0,4400,8801,0,9110,8802,-82.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2021,"NAD27(76) / MTM zone 12",9001,4608,17712,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2022,"NAD27(76) / MTM zone 13",9001,4608,17713,9807,1,0,4400,8801,0,9102,8802,-84,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2023,"NAD27(76) / MTM zone 14",9001,4608,17714,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2024,"NAD27(76) / MTM zone 15",9001,4608,17715,9807,1,0,4400,8801,0,9102,8802,-90,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2025,"NAD27(76) / MTM zone 16",9001,4608,17716,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2026,"NAD27(76) / MTM zone 17",9001,4608,17717,9807,1,0,4400,8801,0,9102,8802,-96,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2027,"NAD27(76) / UTM zone 15N",9001,4608,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2028,"NAD27(76) / UTM zone 16N",9001,4608,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2029,"NAD27(76) / UTM zone 17N",9001,4608,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2030,"NAD27(76) / UTM zone 18N",9001,4608,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2031,"NAD27(CGQ77) / UTM zone 17N",9001,4609,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2032,"NAD27(CGQ77) / UTM zone 18N",9001,4609,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2033,"NAD27(CGQ77) / UTM zone 19N",9001,4609,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2034,"NAD27(CGQ77) / UTM zone 20N",9001,4609,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2035,"NAD27(CGQ77) / UTM zone 21N",9001,4609,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2036,"NAD83(CSRS98) / New Brunswick Stereo",9001,4140,19946,9809,1,1,4500,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,2500000,9001,8807,7500000,9001,,,,,,,,,,,,, +2037,"NAD83(CSRS98) / UTM zone 19N",9001,4140,16019,9807,1,1,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2038,"NAD83(CSRS98) / UTM zone 20N",9001,4140,16020,9807,1,1,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2039,"Israel 1993 / Israeli TM Grid",9001,4141,18204,9807,1,0,4400,8801,31.4403817,9110,8802,35.1216261,9110,8805,1.0000067,9201,8806,219529.584,9001,8807,626907.39,9001,,,,,,,,,,,,, +2040,"Locodjo 1965 / UTM zone 30N",9001,4142,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2041,"Abidjan 1987 / UTM zone 30N",9001,4143,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2042,"Locodjo 1965 / UTM zone 29N",9001,4142,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2043,"Abidjan 1987 / UTM zone 29N",9001,4143,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2044,"Hanoi 1972 / Gauss-Kruger zone 18",9001,4147,16218,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,18500000,9001,8807,0,9001,,,,,,,,,,,,, +2045,"Hanoi 1972 / Gauss-Kruger zone 19",9001,4147,16219,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +2046,"Hartebeesthoek94 / Lo15",9001,4148,17515,9808,1,0,6503,8801,0,9102,8802,15,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2047,"Hartebeesthoek94 / Lo17",9001,4148,17517,9808,1,0,6503,8801,0,9102,8802,17,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2048,"Hartebeesthoek94 / Lo19",9001,4148,17519,9808,1,0,6503,8801,0,9102,8802,19,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2049,"Hartebeesthoek94 / Lo21",9001,4148,17521,9808,1,0,6503,8801,0,9102,8802,21,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2050,"Hartebeesthoek94 / Lo23",9001,4148,17523,9808,1,0,6503,8801,0,9102,8802,23,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2051,"Hartebeesthoek94 / Lo25",9001,4148,17525,9808,1,0,6503,8801,0,9102,8802,25,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2052,"Hartebeesthoek94 / Lo27",9001,4148,17527,9808,1,0,6503,8801,0,9102,8802,27,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2053,"Hartebeesthoek94 / Lo29",9001,4148,17529,9808,1,0,6503,8801,0,9102,8802,29,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2054,"Hartebeesthoek94 / Lo31",9001,4148,17531,9808,1,0,6503,8801,0,9102,8802,31,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2055,"Hartebeesthoek94 / Lo33",9001,4148,17533,9808,1,0,6503,8801,0,9102,8802,33,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2056,"CH1903+ / LV95",9001,4150,19950,9815,1,0,4400,8811,46.570866,9110,8812,7.26225,9110,8813,90,9110,8814,90,9110,8815,1,9201,8816,2600000,9001,8817,1200000,9001,,,,,,, +2057,"Rassadiran / Nakhl e Taqi",9001,4153,19951,9815,1,0,4400,8811,27.31077837,9110,8812,52.3612741,9110,8813,0.34179803,9110,8814,0.34179803,9110,8815,0.999895934,9201,8816,658377.437,9001,8817,3044969.194,9001,,,,,,, +2058,"ED50(ED77) / UTM zone 38N",9001,4154,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2059,"ED50(ED77) / UTM zone 39N",9001,4154,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2060,"ED50(ED77) / UTM zone 40N",9001,4154,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2061,"ED50(ED77) / UTM zone 41N",9001,4154,16041,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2062,"Madrid 1870 (Madrid) / Spain",9001,4903,19921,9801,1,0,4499,8801,40,9102,8802,0,9102,8805,0.9988085293,9201,8806,600000,9001,8807,600000,9001,,,,,,,,,,,,, +2063,"Dabola 1981 / UTM zone 28N",9001,4315,16028,9807,1,1,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2064,"Dabola 1981 / UTM zone 29N",9001,4315,16029,9807,1,1,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2065,"S-JTSK (Ferro) / Krovak",9001,4818,19952,9819,1,0,6501,1036,30.1717303,9110,8806,0,9001,8807,0,9001,8811,49.3,9110,8818,78.3,9110,8819,0.9999,9201,8833,42.3,9110,570.8,85.7,462.8,4.998,1.587,5.261,3.56 +2066,"Mount Dillon / Tobago Grid",9039,4157,19924,9806,1,0,4407,8801,11.1507843,9110,8802,-60.4109632,9110,8806,187500,9039,8807,180000,9039,,,,,,,,,,,,,,,, +2067,"Naparima 1955 / UTM zone 20N",9001,4158,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2068,"ELD79 / Libya zone 5",9001,4159,18240,9807,1,0,4499,8801,0,9102,8802,9,9102,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2069,"ELD79 / Libya zone 6",9001,4159,18241,9807,1,0,4499,8801,0,9102,8802,11,9102,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2070,"ELD79 / Libya zone 7",9001,4159,18242,9807,1,0,4499,8801,0,9102,8802,13,9102,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2071,"ELD79 / Libya zone 8",9001,4159,18243,9807,1,0,4499,8801,0,9102,8802,15,9102,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2072,"ELD79 / Libya zone 9",9001,4159,18244,9807,1,0,4499,8801,0,9102,8802,17,9102,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2073,"ELD79 / Libya zone 10",9001,4159,18245,9807,1,0,4499,8801,0,9102,8802,19,9102,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2074,"ELD79 / Libya zone 11",9001,4159,18246,9807,1,0,4499,8801,0,9102,8802,21,9102,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2075,"ELD79 / Libya zone 12",9001,4159,18247,9807,1,0,4499,8801,0,9102,8802,23,9102,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2076,"ELD79 / Libya zone 13",9001,4159,18248,9807,1,0,4499,8801,0,9102,8802,25,9102,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2077,"ELD79 / UTM zone 32N",9001,4159,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2078,"ELD79 / UTM zone 33N",9001,4159,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2079,"ELD79 / UTM zone 34N",9001,4159,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2080,"ELD79 / UTM zone 35N",9001,4159,16035,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2081,"Chos Malal 1914 / Argentina 2",9001,4160,18032,9807,1,0,4530,8801,-90,9102,8802,-69,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +2082,"Pampa del Castillo / Argentina 2",9001,4161,18032,9807,1,0,4530,8801,-90,9102,8802,-69,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +2083,"Hito XVIII 1963 / Argentina 2",9001,4254,18032,9807,1,0,4530,8801,-90,9102,8802,-69,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +2084,"Hito XVIII 1963 / UTM zone 19S",9001,4254,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2085,"NAD27 / Cuba Norte",9001,4267,18061,9801,1,1,4532,8801,22.21,9110,8802,-81,9110,8805,0.99993602,9201,8806,500000,9001,8807,280296.016,9001,,,,,,,,,,,,, +2086,"NAD27 / Cuba Sur",9001,4267,18062,9801,1,1,4532,8801,20.43,9110,8802,-76.5,9110,8805,0.99994848,9201,8806,500000,9001,8807,229126.939,9001,,,,,,,,,,,,, +2087,"ELD79 / TM 12 NE",9001,4159,16412,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2088,"Carthage / TM 11 NE",9001,4223,16411,9807,1,0,4400,8801,0,9102,8802,11,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2089,"Yemen NGN96 / UTM zone 38N",9001,4163,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2090,"Yemen NGN96 / UTM zone 39N",9001,4163,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2091,"South Yemen / Gauss Kruger zone 8",9001,4164,16208,9807,1,1,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +2092,"South Yemen / Gauss Kruger zone 9",9001,4164,16209,9807,1,1,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +2093,"Hanoi 1972 / GK 106 NE",9001,4147,16586,9807,1,0,4530,8801,0,9102,8802,106,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2094,"WGS 72BE / TM 106 NE",9001,4324,16506,9807,1,0,4400,8801,0,9102,8802,106,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2095,"Bissau / UTM zone 28N",9001,4165,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2096,"Korean 1985 / East Belt",9001,4162,18251,9807,1,0,4530,8801,38,9102,8802,129,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +2097,"Korean 1985 / Central Belt",9001,4162,18252,9807,1,0,4530,8801,38,9102,8802,127,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +2098,"Korean 1985 / West Belt",9001,4162,18253,9807,1,0,4530,8801,38,9102,8802,125,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +2099,"Qatar 1948 / Qatar Grid",9001,4286,19953,9806,1,0,4400,8801,25.22565,9110,8802,50.4541,9110,8806,100000,9001,8807,100000,9001,,,,,,,,,,,,,,,, +2100,"GGRS87 / Greek Grid",9001,4121,19930,9807,1,0,4400,8801,0,9102,8802,24,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2101,"Lake / Maracaibo Grid M1",9001,4249,18260,9801,1,0,4499,8801,10.1,9110,8802,-71.3620224,9110,8805,1,9201,8806,0,9001,8807,-52684.972,9001,,,,,,,,,,,,, +2102,"Lake / Maracaibo Grid",9001,4249,18261,9801,1,0,4499,8801,10.1,9110,8802,-71.3620224,9110,8805,1,9201,8806,200000,9001,8807,147315.028,9001,,,,,,,,,,,,, +2103,"Lake / Maracaibo Grid M3",9001,4249,18262,9801,1,0,4499,8801,10.1,9110,8802,-71.3620224,9110,8805,1,9201,8806,500000,9001,8807,447315.028,9001,,,,,,,,,,,,, +2104,"Lake / Maracaibo La Rosa Grid",9001,4249,18263,9801,1,0,4499,8801,10.1,9110,8802,-71.3620224,9110,8805,1,9201,8806,-17044,9001,8807,-23139.97,9001,,,,,,,,,,,,, +2105,"NZGD2000 / Mount Eden 2000",9001,4167,17931,9807,1,0,4500,8801,-36.5247,9110,8802,174.4551,9110,8805,0.9999,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2106,"NZGD2000 / Bay of Plenty 2000",9001,4167,17932,9807,1,0,4500,8801,-37.454,9110,8802,176.2758,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2107,"NZGD2000 / Poverty Bay 2000",9001,4167,17933,9807,1,0,4500,8801,-38.3728,9110,8802,177.5308,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2108,"NZGD2000 / Hawkes Bay 2000",9001,4167,17934,9807,1,0,4500,8801,-39.3903,9110,8802,176.4025,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2109,"NZGD2000 / Taranaki 2000",9001,4167,17935,9807,1,0,4500,8801,-39.0808,9110,8802,174.134,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2110,"NZGD2000 / Tuhirangi 2000",9001,4167,17936,9807,1,0,4500,8801,-39.3044,9110,8802,175.3824,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2111,"NZGD2000 / Wanganui 2000",9001,4167,17937,9807,1,0,4500,8801,-40.1431,9110,8802,175.2917,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2112,"NZGD2000 / Wairarapa 2000",9001,4167,17938,9807,1,0,4500,8801,-40.5531,9110,8802,175.385,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2113,"NZGD2000 / Wellington 2000",9001,4167,17939,9807,1,0,4500,8801,-41.1804,9110,8802,174.4635,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2114,"NZGD2000 / Collingwood 2000",9001,4167,17940,9807,1,0,4500,8801,-40.4253,9110,8802,172.4019,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2115,"NZGD2000 / Nelson 2000",9001,4167,17941,9807,1,0,4500,8801,-41.1628,9110,8802,173.1757,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2116,"NZGD2000 / Karamea 2000",9001,4167,17942,9807,1,0,4500,8801,-41.1723,9110,8802,172.0632,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2117,"NZGD2000 / Buller 2000",9001,4167,17943,9807,1,0,4500,8801,-41.4838,9110,8802,171.3452,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2118,"NZGD2000 / Grey 2000",9001,4167,17944,9807,1,0,4500,8801,-42.2001,9110,8802,171.3259,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2119,"NZGD2000 / Amuri 2000",9001,4167,17945,9807,1,0,4500,8801,-42.412,9110,8802,173.0036,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2120,"NZGD2000 / Marlborough 2000",9001,4167,17946,9807,1,0,4500,8801,-41.324,9110,8802,173.4807,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2121,"NZGD2000 / Hokitika 2000",9001,4167,17947,9807,1,0,4500,8801,-42.531,9110,8802,170.5847,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2122,"NZGD2000 / Okarito 2000",9001,4167,17948,9807,1,0,4500,8801,-43.0636,9110,8802,170.1539,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2123,"NZGD2000 / Jacksons Bay 2000",9001,4167,17949,9807,1,0,4500,8801,-43.584,9110,8802,168.3622,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2124,"NZGD2000 / Mount Pleasant 2000",9001,4167,17950,9807,1,0,4500,8801,-43.3526,9110,8802,172.4337,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2125,"NZGD2000 / Gawler 2000",9001,4167,17951,9807,1,0,4500,8801,-43.4455,9110,8802,171.2138,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2126,"NZGD2000 / Timaru 2000",9001,4167,17952,9807,1,0,4500,8801,-44.2407,9110,8802,171.0326,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2127,"NZGD2000 / Lindis Peak 2000",9001,4167,17953,9807,1,0,4500,8801,-44.4406,9110,8802,169.2803,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2128,"NZGD2000 / Mount Nicholas 2000",9001,4167,17954,9807,1,0,4500,8801,-45.0758,9110,8802,168.2355,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2129,"NZGD2000 / Mount York 2000",9001,4167,17955,9807,1,0,4500,8801,-45.3349,9110,8802,167.4419,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2130,"NZGD2000 / Observation Point 2000",9001,4167,17956,9807,1,0,4500,8801,-45.4858,9110,8802,170.3742,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2131,"NZGD2000 / North Taieri 2000",9001,4167,17957,9807,1,0,4500,8801,-45.5141,9110,8802,170.1657,9110,8805,0.99996,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2132,"NZGD2000 / Bluff 2000",9001,4167,17958,9807,1,0,4500,8801,-46.36,9110,8802,168.2034,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2133,"NZGD2000 / UTM zone 58S",9001,4167,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2134,"NZGD2000 / UTM zone 59S",9001,4167,16159,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2135,"NZGD2000 / UTM zone 60S",9001,4167,16160,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2136,"Accra / Ghana National Grid",9094,4168,19959,9807,1,0,4404,8801,4.4,9110,8802,-1,9110,8805,0.99975,9201,8806,900000,9094,8807,0,9094,,,,,,,,,,,,, +2137,"Accra / TM 1 NW",9001,4168,17001,9807,1,0,4400,8801,0,9102,8802,-1,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2138,"NAD27(CGQ77) / Quebec Lambert",9001,4609,19944,9802,1,0,4499,8821,44,9110,8822,-68.3,9110,8823,60,9110,8824,46,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +2139,"NAD83(CSRS98) / SCoPQ zone 2",9001,4140,17700,9807,1,1,4499,8801,0,9110,8802,-55.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2140,"NAD83(CSRS98) / MTM zone 3",9001,4140,17703,9807,1,1,4496,8801,0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2141,"NAD83(CSRS98) / MTM zone 4",9001,4140,17704,9807,1,1,4496,8801,0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2142,"NAD83(CSRS98) / MTM zone 5",9001,4140,17705,9807,1,1,4496,8801,0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2143,"NAD83(CSRS98) / MTM zone 6",9001,4140,17706,9807,1,1,4496,8801,0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2144,"NAD83(CSRS98) / MTM zone 7",9001,4140,17707,9807,1,1,4496,8801,0,9110,8802,-70.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2145,"NAD83(CSRS98) / MTM zone 8",9001,4140,17708,9807,1,1,4496,8801,0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2146,"NAD83(CSRS98) / MTM zone 9",9001,4140,17709,9807,1,1,4496,8801,0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2147,"NAD83(CSRS98) / MTM zone 10",9001,4140,17710,9807,1,1,4496,8801,0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2148,"NAD83(CSRS98) / UTM zone 21N",9001,4140,16021,9807,1,1,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2149,"NAD83(CSRS98) / UTM zone 18N",9001,4140,16018,9807,1,1,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2150,"NAD83(CSRS98) / UTM zone 17N",9001,4140,16017,9807,1,1,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2151,"NAD83(CSRS98) / UTM zone 13N",9001,4140,16013,9807,1,1,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2152,"NAD83(CSRS98) / UTM zone 12N",9001,4140,16012,9807,1,1,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2153,"NAD83(CSRS98) / UTM zone 11N",9001,4140,16011,9807,1,1,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2154,"RGF93 / Lambert-93",9001,4171,18085,9802,1,0,4499,8821,46.3,9110,8822,3,9110,8823,49,9110,8824,44,9110,8826,700000,9001,8827,6600000,9001,,,,,,,,,, +2155,"American Samoa 1962 / American Samoa Lambert",9003,4169,15300,9801,1,1,4497,8801,-14.16,9110,8802,170,9110,8805,1,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +2156,"NAD83(HARN) / UTM zone 59S",9001,4152,16159,9807,1,1,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2157,"IRENET95 / Irish Transverse Mercator",9001,4173,19962,9807,1,0,4400,8801,53.3,9110,8802,-8,9110,8805,0.99982,9201,8806,600000,9001,8807,750000,9001,,,,,,,,,,,,, +2158,"IRENET95 / UTM zone 29N",9001,4173,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2159,"Sierra Leone 1924 / New Colony Grid",9094,4174,19963,9807,1,0,4404,8801,6.4,9110,8802,-12,9110,8805,1,9201,8806,500000,9094,8807,0,9094,,,,,,,,,,,,, +2160,"Sierra Leone 1924 / New War Office Grid",9094,4174,19964,9807,1,0,4404,8801,6.4,9110,8802,-12,9110,8805,1,9201,8806,800000,9094,8807,600000,9094,,,,,,,,,,,,, +2161,"Sierra Leone 1968 / UTM zone 28N",9001,4175,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2162,"Sierra Leone 1968 / UTM zone 29N",9001,4175,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2163,US National Atlas Equal Area,9001,4052,3899,1027,1,0,4499,8801,45,9102,8802,-100,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +2164,"Locodjo 1965 / TM 5 NW",9001,4142,17005,9807,1,0,4400,8801,0,9102,8802,-5,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2165,"Abidjan 1987 / TM 5 NW",9001,4143,17005,9807,1,0,4400,8801,0,9102,8802,-5,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2166,"Pulkovo 1942(83) / Gauss Kruger zone 3",9001,4178,16263,9807,1,1,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +2167,"Pulkovo 1942(83) / Gauss Kruger zone 4",9001,4178,16264,9807,1,1,4530,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +2168,"Pulkovo 1942(83) / Gauss Kruger zone 5",9001,4178,16265,9807,1,1,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +2169,"Luxembourg 1930 / Gauss",9001,4181,19966,9807,1,0,4530,8801,49.5,9110,8802,6.1,9110,8805,1,9201,8806,80000,9001,8807,100000,9001,,,,,,,,,,,,, +2170,"MGI / Slovenia Grid",9001,4312,19967,9807,1,1,4530,8801,0,9110,8802,15,9110,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2171,"Pulkovo 1942(58) / Poland zone I",9001,4179,18281,9809,1,1,4530,8801,50.373,9110,8802,21.05,9110,8805,0.9998,9201,8806,4637000,9001,8807,5647000,9001,,,,,,,,,,,,, +2172,"Pulkovo 1942(58) / Poland zone II",9001,4179,18282,9809,1,0,4530,8801,53.0007,9110,8802,21.301,9110,8805,0.9998,9201,8806,4603000,9001,8807,5806000,9001,,,,,,,,,,,,, +2173,"Pulkovo 1942(58) / Poland zone III",9001,4179,18283,9809,1,0,4530,8801,53.35,9110,8802,17.003,9110,8805,0.9998,9201,8806,3501000,9001,8807,5999000,9001,,,,,,,,,,,,, +2174,"Pulkovo 1942(58) / Poland zone IV",9001,4179,18284,9809,1,0,4530,8801,51.4015,9110,8802,16.402,9110,8805,0.9998,9201,8806,3703000,9001,8807,5627000,9001,,,,,,,,,,,,, +2175,"Pulkovo 1942(58) / Poland zone V",9001,4179,18285,9807,1,0,4530,8801,0,9110,8802,18.573,9110,8805,0.999983,9201,8806,237000,9001,8807,-4700000,9001,,,,,,,,,,,,, +2176,"ETRS89 / Poland CS2000 zone 5",9001,4258,18305,9807,1,0,4531,8801,0,9102,8802,15,9102,8805,0.999923,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +2177,"ETRS89 / Poland CS2000 zone 6",9001,4258,18306,9807,1,0,4531,8801,0,9102,8802,18,9102,8805,0.999923,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +2178,"ETRS89 / Poland CS2000 zone 7",9001,4258,18307,9807,1,0,4531,8801,0,9102,8802,21,9102,8805,0.999923,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +2179,"ETRS89 / Poland CS2000 zone 8",9001,4258,18308,9807,1,0,4531,8801,0,9102,8802,24,9102,8805,0.999923,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +2180,"ETRS89 / Poland CS92",9001,4258,18300,9807,1,0,4531,8801,0,9102,8802,19,9102,8805,0.9993,9201,8806,500000,9001,8807,-5300000,9001,,,,,,,,,,,,, +2188,"Azores Occidental 1939 / UTM zone 25N",9001,4182,16025,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2189,"Azores Central 1948 / UTM zone 26N",9001,4183,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2190,"Azores Oriental 1940 / UTM zone 26N",9001,4184,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2191,"Madeira 1936 / UTM zone 28N",9001,4185,16028,9807,1,1,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2192,"ED50 / France EuroLambert",9001,4230,18086,9801,1,1,4499,8801,46.48,9110,8802,2.2014025,9110,8805,0.99987742,9201,8806,600000,9001,8807,2200000,9001,,,,,,,,,,,,, +2193,"NZGD2000 / New Zealand Transverse Mercator 2000",9001,4167,19971,9807,1,0,4500,8801,0,9102,8802,173,9102,8805,0.9996,9201,8806,1600000,9001,8807,10000000,9001,,,,,,,,,,,,, +2194,"American Samoa 1962 / American Samoa Lambert",9003,4169,15301,9801,1,1,4497,8801,-14.16,9110,8802,-170,9110,8805,1,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +2195,"NAD83(HARN) / UTM zone 2S",9001,4152,16102,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2196,"ETRS89 / Kp2000 Jutland",9001,4258,18401,9807,1,0,4400,8801,0,9110,8802,9.3,9110,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2197,"ETRS89 / Kp2000 Zealand",9001,4258,18402,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2198,"ETRS89 / Kp2000 Bornholm",9001,4258,18403,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,1,9201,8806,900000,9001,8807,0,9001,,,,,,,,,,,,, +2199,"Albanian 1987 / Gauss Kruger zone 4",9001,4191,16204,9807,1,1,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +2200,"ATS77 / New Brunswick Stereographic (ATS77)",9001,4122,19945,9809,1,0,4500,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,300000,9001,8807,800000,9001,,,,,,,,,,,,, +2201,"REGVEN / UTM zone 18N",9001,4189,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2202,"REGVEN / UTM zone 19N",9001,4189,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2203,"REGVEN / UTM zone 20N",9001,4189,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2204,"NAD27 / Tennessee",9003,4267,15302,9802,1,0,4497,8821,34.4,9110,8822,-86,9110,8823,35.15,9110,8824,36.25,9110,8826,2000000,9003,8827,100000,9003,,,,,,,,,, +2205,"NAD83 / Kentucky North",9001,4269,15303,9802,1,0,4499,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +2206,"ED50 / 3-degree Gauss-Kruger zone 9",9001,4230,16269,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +2207,"ED50 / 3-degree Gauss-Kruger zone 10",9001,4230,16270,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,10500000,9001,8807,0,9001,,,,,,,,,,,,, +2208,"ED50 / 3-degree Gauss-Kruger zone 11",9001,4230,16271,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,11500000,9001,8807,0,9001,,,,,,,,,,,,, +2209,"ED50 / 3-degree Gauss-Kruger zone 12",9001,4230,16272,9807,1,0,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,12500000,9001,8807,0,9001,,,,,,,,,,,,, +2210,"ED50 / 3-degree Gauss-Kruger zone 13",9001,4230,16273,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +2211,"ED50 / 3-degree Gauss-Kruger zone 14",9001,4230,16274,9807,1,0,4530,8801,0,9102,8802,42,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +2212,"ED50 / 3-degree Gauss-Kruger zone 15",9001,4230,16275,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +2213,"ETRS89 / TM 30 NE",9001,4258,16430,9807,1,0,4400,8801,0,9102,8802,30,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2214,"Douala 1948 / AOF west",9001,4192,18415,9807,1,1,4400,8801,0,9110,8802,10.3,9110,8805,0.999,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +2215,"Manoca 1962 / UTM zone 32N",9001,4193,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2216,"Qornoq 1927 / UTM zone 22N",9001,4194,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2217,"Qornoq 1927 / UTM zone 23N",9001,4194,16023,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2218,"Scoresbysund 1952 / Greenland zone 5 east",9001,4195,18425,9826,1,0,1031,8801,70.3,9110,8802,-24,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2219,"ATS77 / UTM zone 19N",9001,4122,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2220,"ATS77 / UTM zone 20N",9001,4122,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2221,"Scoresbysund 1952 / Greenland zone 6 east",9001,4195,18426,9826,1,0,1031,8801,67.3,9110,8802,-32,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2222,"NAD83 / Arizona East (ft)",9002,4269,15304,9807,1,0,4495,8801,31,9110,8802,-110.1,9110,8805,0.9999,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +2223,"NAD83 / Arizona Central (ft)",9002,4269,15305,9807,1,0,4495,8801,31,9110,8802,-111.55,9110,8805,0.9999,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +2224,"NAD83 / Arizona West (ft)",9002,4269,15306,9807,1,0,4495,8801,31,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +2225,"NAD83 / California zone 1 (ftUS)",9003,4269,15307,9802,1,0,4497,8821,39.2,9110,8822,-122,9110,8823,41.4,9110,8824,40,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2226,"NAD83 / California zone 2 (ftUS)",9003,4269,15308,9802,1,0,4497,8821,37.4,9110,8822,-122,9110,8823,39.5,9110,8824,38.2,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2227,"NAD83 / California zone 3 (ftUS)",9003,4269,15309,9802,1,0,4497,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2228,"NAD83 / California zone 4 (ftUS)",9003,4269,15310,9802,1,0,4497,8821,35.2,9110,8822,-119,9110,8823,37.15,9110,8824,36,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2229,"NAD83 / California zone 5 (ftUS)",9003,4269,15311,9802,1,0,4497,8821,33.3,9110,8822,-118,9110,8823,35.28,9110,8824,34.02,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2230,"NAD83 / California zone 6 (ftUS)",9003,4269,15312,9802,1,0,4497,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2231,"NAD83 / Colorado North (ftUS)",9003,4269,15313,9802,1,0,4497,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +2232,"NAD83 / Colorado Central (ftUS)",9003,4269,15314,9802,1,0,4497,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +2233,"NAD83 / Colorado South (ftUS)",9003,4269,15315,9802,1,0,4497,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +2234,"NAD83 / Connecticut (ftUS)",9003,4269,15316,9802,1,0,4497,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,1000000,9003,8827,500000,9003,,,,,,,,,, +2235,"NAD83 / Delaware (ftUS)",9003,4269,15317,9807,1,0,4497,8801,38,9110,8802,-75.25,9110,8805,0.999995,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2236,"NAD83 / Florida East (ftUS)",9003,4269,15318,9807,1,0,4497,8801,24.2,9110,8802,-81,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2237,"NAD83 / Florida West (ftUS)",9003,4269,15319,9807,1,0,4497,8801,24.2,9110,8802,-82,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2238,"NAD83 / Florida North (ftUS)",9003,4269,15320,9802,1,0,4497,8821,29,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2239,"NAD83 / Georgia East (ftUS)",9003,4269,15321,9807,1,0,4497,8801,30,9110,8802,-82.1,9110,8805,0.9999,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2240,"NAD83 / Georgia West (ftUS)",9003,4269,15322,9807,1,0,4497,8801,30,9110,8802,-84.1,9110,8805,0.9999,9201,8806,2296583.333,9003,8807,0,9003,,,,,,,,,,,,, +2241,"NAD83 / Idaho East (ftUS)",9003,4269,15323,9807,1,0,4497,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2242,"NAD83 / Idaho Central (ftUS)",9003,4269,15324,9807,1,0,4497,8801,41.4,9110,8802,-114,9110,8805,0.999947368,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +2243,"NAD83 / Idaho West (ftUS)",9003,4269,15325,9807,1,0,4497,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,2624666.667,9003,8807,0,9003,,,,,,,,,,,,, +2244,"NAD83 / Indiana East (ftUS)",9003,4269,15326,9807,1,1,4497,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,328083.333,9003,8807,818125,9003,,,,,,,,,,,,, +2245,"NAD83 / Indiana West (ftUS)",9003,4269,15327,9807,1,1,4497,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,2952750,9003,8807,818125,9003,,,,,,,,,,,,, +2246,"NAD83 / Kentucky North (ftUS)",9003,4269,15328,9802,1,0,4497,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +2247,"NAD83 / Kentucky South (ftUS)",9003,4269,15329,9802,1,0,4497,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,1640416.667,9003,8827,1640416.667,9003,,,,,,,,,, +2248,"NAD83 / Maryland (ftUS)",9003,4269,15330,9802,1,0,4497,8821,37.4,9110,8822,-77,9110,8823,39.27,9110,8824,38.18,9110,8826,1312333.333,9003,8827,0,9003,,,,,,,,,, +2249,"NAD83 / Massachusetts Mainland (ftUS)",9003,4269,15331,9802,1,0,4497,8821,41,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,656166.667,9003,8827,2460625,9003,,,,,,,,,, +2250,"NAD83 / Massachusetts Island (ftUS)",9003,4269,15332,9802,1,0,4497,8821,41,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +2251,"NAD83 / Michigan North (ft)",9002,4269,15333,9802,1,0,4495,8821,44.47,9110,8822,-87,9110,8823,47.05,9110,8824,45.29,9110,8826,26246719.16,9002,8827,0,9002,,,,,,,,,, +2252,"NAD83 / Michigan Central (ft)",9002,4269,15334,9802,1,0,4495,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,19685039.37,9002,8827,0,9002,,,,,,,,,, +2253,"NAD83 / Michigan South (ft)",9002,4269,15335,9802,1,0,4495,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,13123359.58,9002,8827,0,9002,,,,,,,,,, +2254,"NAD83 / Mississippi East (ftUS)",9003,4269,15336,9807,1,0,4497,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +2255,"NAD83 / Mississippi West (ftUS)",9003,4269,15337,9807,1,0,4497,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,2296583.333,9003,8807,0,9003,,,,,,,,,,,,, +2256,"NAD83 / Montana (ft)",9002,4269,15338,9802,1,0,4495,8821,44.15,9110,8822,-109.3,9110,8823,49,9110,8824,45,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +2257,"NAD83 / New Mexico East (ftUS)",9003,4269,15339,9807,1,0,4497,8801,31,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,541337.5,9003,8807,0,9003,,,,,,,,,,,,, +2258,"NAD83 / New Mexico Central (ftUS)",9003,4269,15340,9807,1,0,4497,8801,31,9110,8802,-106.15,9110,8805,0.9999,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +2259,"NAD83 / New Mexico West (ftUS)",9003,4269,15341,9807,1,0,4497,8801,31,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,2723091.667,9003,8807,0,9003,,,,,,,,,,,,, +2260,"NAD83 / New York East (ftUS)",9003,4269,15342,9807,1,0,4497,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125,9003,8807,0,9003,,,,,,,,,,,,, +2261,"NAD83 / New York Central (ftUS)",9003,4269,15343,9807,1,0,4497,8801,40,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,820208.333,9003,8807,0,9003,,,,,,,,,,,,, +2262,"NAD83 / New York West (ftUS)",9003,4269,15344,9807,1,0,4497,8801,40,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,1148291.667,9003,8807,0,9003,,,,,,,,,,,,, +2263,"NAD83 / New York Long Island (ftUS)",9003,4269,15345,9802,1,0,4497,8821,40.1,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,984250,9003,8827,0,9003,,,,,,,,,, +2264,"NAD83 / North Carolina (ftUS)",9003,4269,15346,9802,1,0,4497,8821,33.45,9110,8822,-79,9110,8823,36.1,9110,8824,34.2,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +2265,"NAD83 / North Dakota North (ft)",9002,4269,15347,9802,1,0,4495,8821,47,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +2266,"NAD83 / North Dakota South (ft)",9002,4269,15348,9802,1,0,4495,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +2267,"NAD83 / Oklahoma North (ftUS)",9003,4269,15349,9802,1,0,4497,8821,35,9110,8822,-98,9110,8823,36.46,9110,8824,35.34,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2268,"NAD83 / Oklahoma South (ftUS)",9003,4269,15350,9802,1,0,4497,8821,33.2,9110,8822,-98,9110,8823,35.14,9110,8824,33.56,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2269,"NAD83 / Oregon North (ft)",9002,4269,15351,9802,1,0,4495,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,8202099.738,9002,8827,0,9002,,,,,,,,,, +2270,"NAD83 / Oregon South (ft)",9002,4269,15352,9802,1,0,4495,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,4921259.843,9002,8827,0,9002,,,,,,,,,, +2271,"NAD83 / Pennsylvania North (ftUS)",9003,4269,15353,9802,1,0,4497,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2272,"NAD83 / Pennsylvania South (ftUS)",9003,4269,15354,9802,1,0,4497,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2273,"NAD83 / South Carolina (ft)",9002,4269,15355,9802,1,0,4495,8821,31.5,9110,8822,-81,9110,8823,34.5,9110,8824,32.3,9110,8826,2000000,9002,8827,0,9002,,,,,,,,,, +2274,"NAD83 / Tennessee (ftUS)",9003,4269,15356,9802,1,0,4497,8821,34.2,9110,8822,-86,9110,8823,36.25,9110,8824,35.15,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2275,"NAD83 / Texas North (ftUS)",9003,4269,15357,9802,1,0,4497,8821,34,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,656166.667,9003,8827,3280833.333,9003,,,,,,,,,, +2276,"NAD83 / Texas North Central (ftUS)",9003,4269,15358,9802,1,0,4497,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,1968500,9003,8827,6561666.667,9003,,,,,,,,,, +2277,"NAD83 / Texas Central (ftUS)",9003,4269,15359,9802,1,0,4497,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,2296583.333,9003,8827,9842500,9003,,,,,,,,,, +2278,"NAD83 / Texas South Central (ftUS)",9003,4269,15360,9802,1,0,4497,8821,27.5,9110,8822,-99,9110,8823,30.17,9110,8824,28.23,9110,8826,1968500,9003,8827,13123333.333,9003,,,,,,,,,, +2279,"NAD83 / Texas South (ftUS)",9003,4269,15361,9802,1,0,4497,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,984250,9003,8827,16404166.667,9003,,,,,,,,,, +2280,"NAD83 / Utah North (ft)",9002,4269,15362,9802,0,0,4495,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640419.948,9002,8827,3280839.895,9002,,,,,,,,,, +2281,"NAD83 / Utah Central (ft)",9002,4269,15363,9802,0,0,4495,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640419.948,9002,8827,6561679.79,9002,,,,,,,,,, +2282,"NAD83 / Utah South (ft)",9002,4269,15364,9802,0,0,4495,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640419.948,9002,8827,9842519.685,9002,,,,,,,,,, +2283,"NAD83 / Virginia North (ftUS)",9003,4269,15365,9802,1,0,4497,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,11482916.667,9003,8827,6561666.667,9003,,,,,,,,,, +2284,"NAD83 / Virginia South (ftUS)",9003,4269,15366,9802,1,0,4497,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,11482916.667,9003,8827,3280833.333,9003,,,,,,,,,, +2285,"NAD83 / Washington North (ftUS)",9003,4269,15367,9802,1,0,4497,8821,47,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +2286,"NAD83 / Washington South (ftUS)",9003,4269,15368,9802,1,0,4497,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +2287,"NAD83 / Wisconsin North (ftUS)",9003,4269,15369,9802,1,0,4497,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2288,"NAD83 / Wisconsin Central (ftUS)",9003,4269,15370,9802,1,0,4497,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2289,"NAD83 / Wisconsin South (ftUS)",9003,4269,15371,9802,1,0,4497,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2290,"ATS77 / Prince Edward Isl. Stereographic (ATS77)",9001,4122,19933,9809,1,0,4496,8801,47.15,9110,8802,-63,9110,8805,0.999912,9201,8806,700000,9001,8807,400000,9001,,,,,,,,,,,,, +2291,"NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83)",9001,4122,19960,9809,1,1,4496,8801,47.15,9110,8802,-63,9110,8805,0.999912,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2292,"NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83)",9001,4140,19960,9809,1,1,4496,8801,47.15,9110,8802,-63,9110,8805,0.999912,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2294,"ATS77 / MTM Nova Scotia zone 4",9001,4122,17794,9807,1,0,4400,8801,0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +2295,"ATS77 / MTM Nova Scotia zone 5",9001,4122,17795,9807,1,0,4400,8801,0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +2296,"Ammassalik 1958 / Greenland zone 7 east",9001,4196,18427,9826,1,0,1031,8801,64.3,9110,8802,-40,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2297,"Qornoq 1927 / Greenland zone 1 east",9001,4194,18421,9826,1,1,4501,8801,82.3,9110,8802,-40,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2298,"Qornoq 1927 / Greenland zone 2 east",9001,4194,18422,9826,1,1,4501,8801,79.3,9110,8802,-24,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2299,"Qornoq 1927 / Greenland zone 2 west",9001,4194,18432,9826,1,0,1031,8801,79.3,9110,8802,-64,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2300,"Qornoq 1927 / Greenland zone 3 east",9001,4194,18423,9826,1,1,4501,8801,76.3,9110,8802,-20,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2301,"Qornoq 1927 / Greenland zone 3 west",9001,4194,18433,9826,1,0,1031,8801,76.3,9110,8802,-64,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2302,"Qornoq 1927 / Greenland zone 4 east",9001,4194,18424,9826,1,1,4501,8801,73.3,9110,8802,-24,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2303,"Qornoq 1927 / Greenland zone 4 west",9001,4194,18434,9826,1,0,1031,8801,73.3,9110,8802,-52,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2304,"Qornoq 1927 / Greenland zone 5 west",9001,4194,18435,9826,1,0,1031,8801,70.3,9110,8802,-52,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2305,"Qornoq 1927 / Greenland zone 6 west",9001,4194,18436,9826,1,0,1031,8801,67.3,9110,8802,-52,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2306,"Qornoq 1927 / Greenland zone 7 west",9001,4194,18437,9826,1,0,1031,8801,64.3,9110,8802,-52,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2307,"Qornoq 1927 / Greenland zone 8 east",9001,4194,18428,9826,1,0,1031,8801,61.3,9110,8802,-48,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2308,"Batavia / TM 109 SE",9001,4211,16709,9807,1,0,4400,8801,0,9102,8802,109,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2309,"WGS 84 / TM 116 SE",9001,4326,16716,9807,1,0,4400,8801,0,9102,8802,116,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2310,"WGS 84 / TM 132 SE",9001,4326,16732,9807,1,0,4400,8801,0,9102,8802,132,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2311,"WGS 84 / TM 6 NE",9001,4326,16406,9807,1,0,4400,8801,0,9102,8802,6,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2312,"Garoua / UTM zone 33N",9001,4197,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2313,"Kousseri / UTM zone 33N",9001,4198,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2314,"Trinidad 1903 / Trinidad Grid (ftCla)",9005,4302,19975,9806,1,0,4403,8801,10.263,9110,8802,-61.2,9110,8806,283800,9005,8807,214500,9005,,,,,,,,,,,,,,,, +2315,"Campo Inchauspe / UTM zone 19S",9001,4221,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2316,"Campo Inchauspe / UTM zone 20S",9001,4221,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2317,"PSAD56 / ICN Regional",9001,4248,19976,9802,1,0,4499,8821,6,9102,8822,-66,9102,8823,9,9102,8824,3,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +2318,"Ain el Abd / Aramco Lambert",9001,4204,19977,9802,1,0,4400,8821,25.0522236,9110,8822,48,9102,8823,17,9102,8824,33,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +2319,"ED50 / TM27",9001,4230,16305,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2320,"ED50 / TM30",9001,4230,16370,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2321,"ED50 / TM33",9001,4230,16306,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2322,"ED50 / TM36",9001,4230,16372,9807,1,0,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2323,"ED50 / TM39",9001,4230,16307,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2324,"ED50 / TM42",9001,4230,16374,9807,1,0,4530,8801,0,9102,8802,42,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2325,"ED50 / TM45",9001,4230,16308,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2326,Hong Kong 1980 Grid System,9001,4611,19978,9807,1,0,4500,8801,22.184368,9110,8802,114.10428,9110,8805,1,9201,8806,836694.05,9001,8807,819069.8,9001,,,,,,,,,,,,, +2327,"Xian 1980 / Gauss-Kruger zone 13",9001,4610,16213,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +2328,"Xian 1980 / Gauss-Kruger zone 14",9001,4610,16214,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +2329,"Xian 1980 / Gauss-Kruger zone 15",9001,4610,16215,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +2330,"Xian 1980 / Gauss-Kruger zone 16",9001,4610,16216,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,16500000,9001,8807,0,9001,,,,,,,,,,,,, +2331,"Xian 1980 / Gauss-Kruger zone 17",9001,4610,16217,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,17500000,9001,8807,0,9001,,,,,,,,,,,,, +2332,"Xian 1980 / Gauss-Kruger zone 18",9001,4610,16218,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,18500000,9001,8807,0,9001,,,,,,,,,,,,, +2333,"Xian 1980 / Gauss-Kruger zone 19",9001,4610,16219,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +2334,"Xian 1980 / Gauss-Kruger zone 20",9001,4610,16220,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,20500000,9001,8807,0,9001,,,,,,,,,,,,, +2335,"Xian 1980 / Gauss-Kruger zone 21",9001,4610,16221,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,21500000,9001,8807,0,9001,,,,,,,,,,,,, +2336,"Xian 1980 / Gauss-Kruger zone 22",9001,4610,16222,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,22500000,9001,8807,0,9001,,,,,,,,,,,,, +2337,"Xian 1980 / Gauss-Kruger zone 23",9001,4610,16223,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,23500000,9001,8807,0,9001,,,,,,,,,,,,, +2338,"Xian 1980 / Gauss-Kruger CM 75E",9001,4610,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2339,"Xian 1980 / Gauss-Kruger CM 81E",9001,4610,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2340,"Xian 1980 / Gauss-Kruger CM 87E",9001,4610,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2341,"Xian 1980 / Gauss-Kruger CM 93E",9001,4610,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2342,"Xian 1980 / Gauss-Kruger CM 99E",9001,4610,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2343,"Xian 1980 / Gauss-Kruger CM 105E",9001,4610,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2344,"Xian 1980 / Gauss-Kruger CM 111E",9001,4610,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2345,"Xian 1980 / Gauss-Kruger CM 117E",9001,4610,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2346,"Xian 1980 / Gauss-Kruger CM 123E",9001,4610,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2347,"Xian 1980 / Gauss-Kruger CM 129E",9001,4610,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2348,"Xian 1980 / Gauss-Kruger CM 135E",9001,4610,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2349,"Xian 1980 / 3-degree Gauss-Kruger zone 25",9001,4610,16285,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +2350,"Xian 1980 / 3-degree Gauss-Kruger zone 26",9001,4610,16286,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,26500000,9001,8807,0,9001,,,,,,,,,,,,, +2351,"Xian 1980 / 3-degree Gauss-Kruger zone 27",9001,4610,16287,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,27500000,9001,8807,0,9001,,,,,,,,,,,,, +2352,"Xian 1980 / 3-degree Gauss-Kruger zone 28",9001,4610,16288,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,28500000,9001,8807,0,9001,,,,,,,,,,,,, +2353,"Xian 1980 / 3-degree Gauss-Kruger zone 29",9001,4610,16289,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,29500000,9001,8807,0,9001,,,,,,,,,,,,, +2354,"Xian 1980 / 3-degree Gauss-Kruger zone 30",9001,4610,16290,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,30500000,9001,8807,0,9001,,,,,,,,,,,,, +2355,"Xian 1980 / 3-degree Gauss-Kruger zone 31",9001,4610,16291,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +2356,"Xian 1980 / 3-degree Gauss-Kruger zone 32",9001,4610,16292,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +2357,"Xian 1980 / 3-degree Gauss-Kruger zone 33",9001,4610,16293,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,33500000,9001,8807,0,9001,,,,,,,,,,,,, +2358,"Xian 1980 / 3-degree Gauss-Kruger zone 34",9001,4610,16294,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,34500000,9001,8807,0,9001,,,,,,,,,,,,, +2359,"Xian 1980 / 3-degree Gauss-Kruger zone 35",9001,4610,16295,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,35500000,9001,8807,0,9001,,,,,,,,,,,,, +2360,"Xian 1980 / 3-degree Gauss-Kruger zone 36",9001,4610,16296,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,36500000,9001,8807,0,9001,,,,,,,,,,,,, +2361,"Xian 1980 / 3-degree Gauss-Kruger zone 37",9001,4610,16297,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,37500000,9001,8807,0,9001,,,,,,,,,,,,, +2362,"Xian 1980 / 3-degree Gauss-Kruger zone 38",9001,4610,16298,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,38500000,9001,8807,0,9001,,,,,,,,,,,,, +2363,"Xian 1980 / 3-degree Gauss-Kruger zone 39",9001,4610,16299,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,39500000,9001,8807,0,9001,,,,,,,,,,,,, +2364,"Xian 1980 / 3-degree Gauss-Kruger zone 40",9001,4610,16070,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,40500000,9001,8807,0,9001,,,,,,,,,,,,, +2365,"Xian 1980 / 3-degree Gauss-Kruger zone 41",9001,4610,16071,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,41500000,9001,8807,0,9001,,,,,,,,,,,,, +2366,"Xian 1980 / 3-degree Gauss-Kruger zone 42",9001,4610,16072,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,42500000,9001,8807,0,9001,,,,,,,,,,,,, +2367,"Xian 1980 / 3-degree Gauss-Kruger zone 43",9001,4610,16073,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,43500000,9001,8807,0,9001,,,,,,,,,,,,, +2368,"Xian 1980 / 3-degree Gauss-Kruger zone 44",9001,4610,16074,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,44500000,9001,8807,0,9001,,,,,,,,,,,,, +2369,"Xian 1980 / 3-degree Gauss-Kruger zone 45",9001,4610,16075,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,45500000,9001,8807,0,9001,,,,,,,,,,,,, +2370,"Xian 1980 / 3-degree Gauss-Kruger CM 75E",9001,4610,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2371,"Xian 1980 / 3-degree Gauss-Kruger CM 78E",9001,4610,16386,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2372,"Xian 1980 / 3-degree Gauss-Kruger CM 81E",9001,4610,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2373,"Xian 1980 / 3-degree Gauss-Kruger CM 84E",9001,4610,16388,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2374,"Xian 1980 / 3-degree Gauss-Kruger CM 87E",9001,4610,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2375,"Xian 1980 / 3-degree Gauss-Kruger CM 90E",9001,4610,16390,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2376,"Xian 1980 / 3-degree Gauss-Kruger CM 93E",9001,4610,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2377,"Xian 1980 / 3-degree Gauss-Kruger CM 96E",9001,4610,16392,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2378,"Xian 1980 / 3-degree Gauss-Kruger CM 99E",9001,4610,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2379,"Xian 1980 / 3-degree Gauss-Kruger CM 102E",9001,4610,16394,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2380,"Xian 1980 / 3-degree Gauss-Kruger CM 105E",9001,4610,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2381,"Xian 1980 / 3-degree Gauss-Kruger CM 108E",9001,4610,16396,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2382,"Xian 1980 / 3-degree Gauss-Kruger CM 111E",9001,4610,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2383,"Xian 1980 / 3-degree Gauss-Kruger CM 114E",9001,4610,16398,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2384,"Xian 1980 / 3-degree Gauss-Kruger CM 117E",9001,4610,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2385,"Xian 1980 / 3-degree Gauss-Kruger CM 120E",9001,4610,16170,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2386,"Xian 1980 / 3-degree Gauss-Kruger CM 123E",9001,4610,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2387,"Xian 1980 / 3-degree Gauss-Kruger CM 126E",9001,4610,16172,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2388,"Xian 1980 / 3-degree Gauss-Kruger CM 129E",9001,4610,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2389,"Xian 1980 / 3-degree Gauss-Kruger CM 132E",9001,4610,16174,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2390,"Xian 1980 / 3-degree Gauss-Kruger CM 135E",9001,4610,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2391,"KKJ / Finland zone 1",9001,4123,18191,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +2392,"KKJ / Finland zone 2",9001,4123,18192,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +2393,"KKJ / Finland Uniform Coordinate System",9001,4123,18193,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +2394,"KKJ / Finland zone 4",9001,4123,18194,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +2395,"South Yemen / Gauss-Kruger zone 8",9001,4164,16208,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +2396,"South Yemen / Gauss-Kruger zone 9",9001,4164,16209,9807,1,0,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +2397,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3",9001,4178,16263,9807,1,0,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01 +2398,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4",9001,4178,16264,9807,1,0,4530,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01 +2399,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5",9001,4178,16265,9807,1,0,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01 +2400,RT90 2.5 gon W,9001,4124,19929,9807,1,1,4530,8801,0,9110,8802,15.48298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +2401,"Beijing 1954 / 3-degree Gauss-Kruger zone 25",9001,4214,16285,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +2402,"Beijing 1954 / 3-degree Gauss-Kruger zone 26",9001,4214,16286,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,26500000,9001,8807,0,9001,,,,,,,,,,,,, +2403,"Beijing 1954 / 3-degree Gauss-Kruger zone 27",9001,4214,16287,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,27500000,9001,8807,0,9001,,,,,,,,,,,,, +2404,"Beijing 1954 / 3-degree Gauss-Kruger zone 28",9001,4214,16288,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,28500000,9001,8807,0,9001,,,,,,,,,,,,, +2405,"Beijing 1954 / 3-degree Gauss-Kruger zone 29",9001,4214,16289,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,29500000,9001,8807,0,9001,,,,,,,,,,,,, +2406,"Beijing 1954 / 3-degree Gauss-Kruger zone 30",9001,4214,16290,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,30500000,9001,8807,0,9001,,,,,,,,,,,,, +2407,"Beijing 1954 / 3-degree Gauss-Kruger zone 31",9001,4214,16291,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +2408,"Beijing 1954 / 3-degree Gauss-Kruger zone 32",9001,4214,16292,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +2409,"Beijing 1954 / 3-degree Gauss-Kruger zone 33",9001,4214,16293,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,33500000,9001,8807,0,9001,,,,,,,,,,,,, +2410,"Beijing 1954 / 3-degree Gauss-Kruger zone 34",9001,4214,16294,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,34500000,9001,8807,0,9001,,,,,,,,,,,,, +2411,"Beijing 1954 / 3-degree Gauss-Kruger zone 35",9001,4214,16295,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,35500000,9001,8807,0,9001,,,,,,,,,,,,, +2412,"Beijing 1954 / 3-degree Gauss-Kruger zone 36",9001,4214,16296,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,36500000,9001,8807,0,9001,,,,,,,,,,,,, +2413,"Beijing 1954 / 3-degree Gauss-Kruger zone 37",9001,4214,16297,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,37500000,9001,8807,0,9001,,,,,,,,,,,,, +2414,"Beijing 1954 / 3-degree Gauss-Kruger zone 38",9001,4214,16298,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,38500000,9001,8807,0,9001,,,,,,,,,,,,, +2415,"Beijing 1954 / 3-degree Gauss-Kruger zone 39",9001,4214,16299,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,39500000,9001,8807,0,9001,,,,,,,,,,,,, +2416,"Beijing 1954 / 3-degree Gauss-Kruger zone 40",9001,4214,16070,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,40500000,9001,8807,0,9001,,,,,,,,,,,,, +2417,"Beijing 1954 / 3-degree Gauss-Kruger zone 41",9001,4214,16071,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,41500000,9001,8807,0,9001,,,,,,,,,,,,, +2418,"Beijing 1954 / 3-degree Gauss-Kruger zone 42",9001,4214,16072,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,42500000,9001,8807,0,9001,,,,,,,,,,,,, +2419,"Beijing 1954 / 3-degree Gauss-Kruger zone 43",9001,4214,16073,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,43500000,9001,8807,0,9001,,,,,,,,,,,,, +2420,"Beijing 1954 / 3-degree Gauss-Kruger zone 44",9001,4214,16074,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,44500000,9001,8807,0,9001,,,,,,,,,,,,, +2421,"Beijing 1954 / 3-degree Gauss-Kruger zone 45",9001,4214,16075,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,45500000,9001,8807,0,9001,,,,,,,,,,,,, +2422,"Beijing 1954 / 3-degree Gauss-Kruger CM 75E",9001,4214,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2423,"Beijing 1954 / 3-degree Gauss-Kruger CM 78E",9001,4214,16386,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2424,"Beijing 1954 / 3-degree Gauss-Kruger CM 81E",9001,4214,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2425,"Beijing 1954 / 3-degree Gauss-Kruger CM 84E",9001,4214,16388,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2426,"Beijing 1954 / 3-degree Gauss-Kruger CM 87E",9001,4214,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2427,"Beijing 1954 / 3-degree Gauss-Kruger CM 90E",9001,4214,16390,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2428,"Beijing 1954 / 3-degree Gauss-Kruger CM 93E",9001,4214,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2429,"Beijing 1954 / 3-degree Gauss-Kruger CM 96E",9001,4214,16392,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2430,"Beijing 1954 / 3-degree Gauss-Kruger CM 99E",9001,4214,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2431,"Beijing 1954 / 3-degree Gauss-Kruger CM 102E",9001,4214,16394,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2432,"Beijing 1954 / 3-degree Gauss-Kruger CM 105E",9001,4214,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2433,"Beijing 1954 / 3-degree Gauss-Kruger CM 108E",9001,4214,16396,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2434,"Beijing 1954 / 3-degree Gauss-Kruger CM 111E",9001,4214,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2435,"Beijing 1954 / 3-degree Gauss-Kruger CM 114E",9001,4214,16398,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2436,"Beijing 1954 / 3-degree Gauss-Kruger CM 117E",9001,4214,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2437,"Beijing 1954 / 3-degree Gauss-Kruger CM 120E",9001,4214,16170,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2438,"Beijing 1954 / 3-degree Gauss-Kruger CM 123E",9001,4214,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2439,"Beijing 1954 / 3-degree Gauss-Kruger CM 126E",9001,4214,16172,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2440,"Beijing 1954 / 3-degree Gauss-Kruger CM 129E",9001,4214,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2441,"Beijing 1954 / 3-degree Gauss-Kruger CM 132E",9001,4214,16174,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2442,"Beijing 1954 / 3-degree Gauss-Kruger CM 135E",9001,4214,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2443,"JGD2000 / Japan Plane Rectangular CS I",9001,4612,17801,9807,1,0,4530,8801,33,9110,8802,129.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2444,"JGD2000 / Japan Plane Rectangular CS II",9001,4612,17802,9807,1,0,4530,8801,33,9110,8802,131,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2445,"JGD2000 / Japan Plane Rectangular CS III",9001,4612,17803,9807,1,0,4530,8801,36,9110,8802,132.1,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2446,"JGD2000 / Japan Plane Rectangular CS IV",9001,4612,17804,9807,1,0,4530,8801,33,9110,8802,133.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2447,"JGD2000 / Japan Plane Rectangular CS V",9001,4612,17805,9807,1,0,4530,8801,36,9110,8802,134.2,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2448,"JGD2000 / Japan Plane Rectangular CS VI",9001,4612,17806,9807,1,0,4530,8801,36,9110,8802,136,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2449,"JGD2000 / Japan Plane Rectangular CS VII",9001,4612,17807,9807,1,0,4530,8801,36,9110,8802,137.1,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2450,"JGD2000 / Japan Plane Rectangular CS VIII",9001,4612,17808,9807,1,0,4530,8801,36,9110,8802,138.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2451,"JGD2000 / Japan Plane Rectangular CS IX",9001,4612,17809,9807,1,0,4530,8801,36,9110,8802,139.5,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2452,"JGD2000 / Japan Plane Rectangular CS X",9001,4612,17810,9807,1,0,4530,8801,40,9110,8802,140.5,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2453,"JGD2000 / Japan Plane Rectangular CS XI",9001,4612,17811,9807,1,0,4530,8801,44,9110,8802,140.15,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2454,"JGD2000 / Japan Plane Rectangular CS XII",9001,4612,17812,9807,1,0,4530,8801,44,9110,8802,142.15,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2455,"JGD2000 / Japan Plane Rectangular CS XIII",9001,4612,17813,9807,1,0,4530,8801,44,9110,8802,144.15,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2456,"JGD2000 / Japan Plane Rectangular CS XIV",9001,4612,17814,9807,1,0,4530,8801,26,9110,8802,142,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2457,"JGD2000 / Japan Plane Rectangular CS XV",9001,4612,17815,9807,1,0,4530,8801,26,9110,8802,127.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2458,"JGD2000 / Japan Plane Rectangular CS XVI",9001,4612,17816,9807,1,0,4530,8801,26,9110,8802,124,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2459,"JGD2000 / Japan Plane Rectangular CS XVII",9001,4612,17817,9807,1,0,4530,8801,26,9110,8802,131,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2460,"JGD2000 / Japan Plane Rectangular CS XVIII",9001,4612,17818,9807,1,0,4530,8801,20,9110,8802,136,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2461,"JGD2000 / Japan Plane Rectangular CS XIX",9001,4612,17819,9807,1,0,4530,8801,26,9110,8802,154,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +2462,"Albanian 1987 / Gauss-Kruger zone 4",9001,4191,16204,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +2463,"Pulkovo 1995 / Gauss-Kruger CM 21E",9001,4200,16304,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2464,"Pulkovo 1995 / Gauss-Kruger CM 27E",9001,4200,16305,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2465,"Pulkovo 1995 / Gauss-Kruger CM 33E",9001,4200,16306,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2466,"Pulkovo 1995 / Gauss-Kruger CM 39E",9001,4200,16307,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2467,"Pulkovo 1995 / Gauss-Kruger CM 45E",9001,4200,16308,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2468,"Pulkovo 1995 / Gauss-Kruger CM 51E",9001,4200,16309,9807,1,0,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2469,"Pulkovo 1995 / Gauss-Kruger CM 57E",9001,4200,16310,9807,1,0,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2470,"Pulkovo 1995 / Gauss-Kruger CM 63E",9001,4200,16311,9807,1,0,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2471,"Pulkovo 1995 / Gauss-Kruger CM 69E",9001,4200,16312,9807,1,0,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2472,"Pulkovo 1995 / Gauss-Kruger CM 75E",9001,4200,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2473,"Pulkovo 1995 / Gauss-Kruger CM 81E",9001,4200,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2474,"Pulkovo 1995 / Gauss-Kruger CM 87E",9001,4200,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2475,"Pulkovo 1995 / Gauss-Kruger CM 93E",9001,4200,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2476,"Pulkovo 1995 / Gauss-Kruger CM 99E",9001,4200,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2477,"Pulkovo 1995 / Gauss-Kruger CM 105E",9001,4200,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2478,"Pulkovo 1995 / Gauss-Kruger CM 111E",9001,4200,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2479,"Pulkovo 1995 / Gauss-Kruger CM 117E",9001,4200,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2480,"Pulkovo 1995 / Gauss-Kruger CM 123E",9001,4200,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2481,"Pulkovo 1995 / Gauss-Kruger CM 129E",9001,4200,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2482,"Pulkovo 1995 / Gauss-Kruger CM 135E",9001,4200,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2483,"Pulkovo 1995 / Gauss-Kruger CM 141E",9001,4200,16324,9807,1,0,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2484,"Pulkovo 1995 / Gauss-Kruger CM 147E",9001,4200,16325,9807,1,0,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2485,"Pulkovo 1995 / Gauss-Kruger CM 153E",9001,4200,16326,9807,1,0,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2486,"Pulkovo 1995 / Gauss-Kruger CM 159E",9001,4200,16327,9807,1,0,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2487,"Pulkovo 1995 / Gauss-Kruger CM 165E",9001,4200,16328,9807,1,0,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2488,"Pulkovo 1995 / Gauss-Kruger CM 171E",9001,4200,16329,9807,1,0,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2489,"Pulkovo 1995 / Gauss-Kruger CM 177E",9001,4200,16330,9807,1,0,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2490,"Pulkovo 1995 / Gauss-Kruger CM 177W",9001,4200,16331,9807,1,0,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2491,"Pulkovo 1995 / Gauss-Kruger CM 171W",9001,4200,16332,9807,1,0,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2492,"Pulkovo 1942 / Gauss-Kruger CM 9E",9001,4284,16302,9807,1,1,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2493,"Pulkovo 1942 / Gauss-Kruger CM 15E",9001,4284,16303,9807,1,1,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2494,"Pulkovo 1942 / Gauss-Kruger CM 21E",9001,4284,16304,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2495,"Pulkovo 1942 / Gauss-Kruger CM 27E",9001,4284,16305,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2496,"Pulkovo 1942 / Gauss-Kruger CM 33E",9001,4284,16306,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2497,"Pulkovo 1942 / Gauss-Kruger CM 39E",9001,4284,16307,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2498,"Pulkovo 1942 / Gauss-Kruger CM 45E",9001,4284,16308,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2499,"Pulkovo 1942 / Gauss-Kruger CM 51E",9001,4284,16309,9807,1,0,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2500,"Pulkovo 1942 / Gauss-Kruger CM 57E",9001,4284,16310,9807,1,0,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2501,"Pulkovo 1942 / Gauss-Kruger CM 63E",9001,4284,16311,9807,1,0,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2502,"Pulkovo 1942 / Gauss-Kruger CM 69E",9001,4284,16312,9807,1,0,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2503,"Pulkovo 1942 / Gauss-Kruger CM 75E",9001,4284,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2504,"Pulkovo 1942 / Gauss-Kruger CM 81E",9001,4284,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2505,"Pulkovo 1942 / Gauss-Kruger CM 87E",9001,4284,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2506,"Pulkovo 1942 / Gauss-Kruger CM 93E",9001,4284,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2507,"Pulkovo 1942 / Gauss-Kruger CM 99E",9001,4284,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2508,"Pulkovo 1942 / Gauss-Kruger CM 105E",9001,4284,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2509,"Pulkovo 1942 / Gauss-Kruger CM 111E",9001,4284,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2510,"Pulkovo 1942 / Gauss-Kruger CM 117E",9001,4284,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2511,"Pulkovo 1942 / Gauss-Kruger CM 123E",9001,4284,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2512,"Pulkovo 1942 / Gauss-Kruger CM 129E",9001,4284,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2513,"Pulkovo 1942 / Gauss-Kruger CM 135E",9001,4284,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2514,"Pulkovo 1942 / Gauss-Kruger CM 141E",9001,4284,16324,9807,1,0,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2515,"Pulkovo 1942 / Gauss-Kruger CM 147E",9001,4284,16325,9807,1,0,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2516,"Pulkovo 1942 / Gauss-Kruger CM 153E",9001,4284,16326,9807,1,0,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2517,"Pulkovo 1942 / Gauss-Kruger CM 159E",9001,4284,16327,9807,1,0,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2518,"Pulkovo 1942 / Gauss-Kruger CM 165E",9001,4284,16328,9807,1,0,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2519,"Pulkovo 1942 / Gauss-Kruger CM 171E",9001,4284,16329,9807,1,0,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2520,"Pulkovo 1942 / Gauss-Kruger CM 177E",9001,4284,16330,9807,1,0,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2521,"Pulkovo 1942 / Gauss-Kruger CM 177W",9001,4284,16331,9807,1,0,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2522,"Pulkovo 1942 / Gauss-Kruger CM 171W",9001,4284,16332,9807,1,0,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2523,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 7",9001,4284,16267,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +2524,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 8",9001,4284,16268,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +2525,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 9",9001,4284,16269,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +2526,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 10",9001,4284,16270,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,10500000,9001,8807,0,9001,,,,,,,,,,,,, +2527,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 11",9001,4284,16271,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,11500000,9001,8807,0,9001,,,,,,,,,,,,, +2528,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 12",9001,4284,16272,9807,1,0,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,12500000,9001,8807,0,9001,,,,,,,,,,,,, +2529,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 13",9001,4284,16273,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +2530,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 14",9001,4284,16274,9807,1,0,4530,8801,0,9102,8802,42,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +2531,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 15",9001,4284,16275,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +2532,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 16",9001,4284,16276,9807,1,0,4530,8801,0,9102,8802,48,9102,8805,1,9201,8806,16500000,9001,8807,0,9001,,,,,,,,,,,,, +2533,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 17",9001,4284,16277,9807,1,0,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,17500000,9001,8807,0,9001,,,,,,,,,,,,, +2534,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 18",9001,4284,16278,9807,1,0,4530,8801,0,9102,8802,54,9102,8805,1,9201,8806,18500000,9001,8807,0,9001,,,,,,,,,,,,, +2535,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 19",9001,4284,16279,9807,1,0,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +2536,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 20",9001,4284,16280,9807,1,0,4530,8801,0,9102,8802,60,9102,8805,1,9201,8806,20500000,9001,8807,0,9001,,,,,,,,,,,,, +2537,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 21",9001,4284,16281,9807,1,0,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,21500000,9001,8807,0,9001,,,,,,,,,,,,, +2538,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 22",9001,4284,16282,9807,1,0,4530,8801,0,9102,8802,66,9102,8805,1,9201,8806,22500000,9001,8807,0,9001,,,,,,,,,,,,, +2539,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 23",9001,4284,16283,9807,1,0,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,23500000,9001,8807,0,9001,,,,,,,,,,,,, +2540,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 24",9001,4284,16284,9807,1,0,4530,8801,0,9102,8802,72,9102,8805,1,9201,8806,24500000,9001,8807,0,9001,,,,,,,,,,,,, +2541,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 25",9001,4284,16285,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +2542,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 26",9001,4284,16286,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,26500000,9001,8807,0,9001,,,,,,,,,,,,, +2543,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 27",9001,4284,16287,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,27500000,9001,8807,0,9001,,,,,,,,,,,,, +2544,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 28",9001,4284,16288,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,28500000,9001,8807,0,9001,,,,,,,,,,,,, +2545,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 29",9001,4284,16289,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,29500000,9001,8807,0,9001,,,,,,,,,,,,, +2546,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 30",9001,4284,16290,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,30500000,9001,8807,0,9001,,,,,,,,,,,,, +2547,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 31",9001,4284,16291,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +2548,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 32",9001,4284,16292,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +2549,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 33",9001,4284,16293,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,33500000,9001,8807,0,9001,,,,,,,,,,,,, +2550,"Samboja / UTM zone 50S",9001,4125,16150,9807,1,1,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2551,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 34",9001,4284,16294,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,34500000,9001,8807,0,9001,,,,,,,,,,,,, +2552,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 35",9001,4284,16295,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,35500000,9001,8807,0,9001,,,,,,,,,,,,, +2553,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 36",9001,4284,16296,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,36500000,9001,8807,0,9001,,,,,,,,,,,,, +2554,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 37",9001,4284,16297,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,37500000,9001,8807,0,9001,,,,,,,,,,,,, +2555,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 38",9001,4284,16298,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,38500000,9001,8807,0,9001,,,,,,,,,,,,, +2556,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 39",9001,4284,16299,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,39500000,9001,8807,0,9001,,,,,,,,,,,,, +2557,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 40",9001,4284,16070,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,40500000,9001,8807,0,9001,,,,,,,,,,,,, +2558,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 41",9001,4284,16071,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,41500000,9001,8807,0,9001,,,,,,,,,,,,, +2559,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 42",9001,4284,16072,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,42500000,9001,8807,0,9001,,,,,,,,,,,,, +2560,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 43",9001,4284,16073,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,43500000,9001,8807,0,9001,,,,,,,,,,,,, +2561,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 44",9001,4284,16074,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,44500000,9001,8807,0,9001,,,,,,,,,,,,, +2562,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 45",9001,4284,16075,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,45500000,9001,8807,0,9001,,,,,,,,,,,,, +2563,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 46",9001,4284,16076,9807,1,0,4530,8801,0,9102,8802,138,9102,8805,1,9201,8806,46500000,9001,8807,0,9001,,,,,,,,,,,,, +2564,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 47",9001,4284,16077,9807,1,0,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,47500000,9001,8807,0,9001,,,,,,,,,,,,, +2565,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 48",9001,4284,16078,9807,1,0,4530,8801,0,9102,8802,144,9102,8805,1,9201,8806,48500000,9001,8807,0,9001,,,,,,,,,,,,, +2566,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 49",9001,4284,16079,9807,1,0,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,49500000,9001,8807,0,9001,,,,,,,,,,,,, +2567,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 50",9001,4284,16080,9807,1,0,4530,8801,0,9102,8802,150,9102,8805,1,9201,8806,50500000,9001,8807,0,9001,,,,,,,,,,,,, +2568,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 51",9001,4284,16081,9807,1,0,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,51500000,9001,8807,0,9001,,,,,,,,,,,,, +2569,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 52",9001,4284,16082,9807,1,0,4530,8801,0,9102,8802,156,9102,8805,1,9201,8806,52500000,9001,8807,0,9001,,,,,,,,,,,,, +2570,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 53",9001,4284,16083,9807,1,0,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,53500000,9001,8807,0,9001,,,,,,,,,,,,, +2571,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 54",9001,4284,16084,9807,1,0,4530,8801,0,9102,8802,162,9102,8805,1,9201,8806,54500000,9001,8807,0,9001,,,,,,,,,,,,, +2572,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 55",9001,4284,16085,9807,1,0,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,55500000,9001,8807,0,9001,,,,,,,,,,,,, +2573,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 56",9001,4284,16086,9807,1,0,4530,8801,0,9102,8802,168,9102,8805,1,9201,8806,56500000,9001,8807,0,9001,,,,,,,,,,,,, +2574,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 57",9001,4284,16087,9807,1,0,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,57500000,9001,8807,0,9001,,,,,,,,,,,,, +2575,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 58",9001,4284,16088,9807,1,0,4530,8801,0,9102,8802,174,9102,8805,1,9201,8806,58500000,9001,8807,0,9001,,,,,,,,,,,,, +2576,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 59",9001,4284,16089,9807,1,0,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,59500000,9001,8807,0,9001,,,,,,,,,,,,, +2577,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 60",9001,4284,16090,9807,1,1,4530,8801,0,9102,8802,180,9102,8805,1,9201,8806,60000000,9001,8807,0,9001,,,,,,,,,,,,, +2578,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 61",9001,4284,16091,9807,1,0,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,61500000,9001,8807,0,9001,,,,,,,,,,,,, +2579,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 62",9001,4284,16092,9807,1,0,4530,8801,0,9102,8802,-174,9102,8805,1,9201,8806,62500000,9001,8807,0,9001,,,,,,,,,,,,, +2580,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 63",9001,4284,16093,9807,1,0,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,63500000,9001,8807,0,9001,,,,,,,,,,,,, +2581,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 64",9001,4284,16094,9807,1,0,4530,8801,0,9102,8802,-168,9102,8805,1,9201,8806,64500000,9001,8807,0,9001,,,,,,,,,,,,, +2582,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E",9001,4284,16304,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2583,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E",9001,4284,16368,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2584,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E",9001,4284,16305,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2585,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E",9001,4284,16370,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2586,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E",9001,4284,16306,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2587,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E",9001,4284,16372,9807,1,0,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2588,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E",9001,4284,16307,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2589,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E",9001,4284,16374,9807,1,0,4530,8801,0,9102,8802,42,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2590,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E",9001,4284,16308,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2591,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E",9001,4284,16376,9807,1,0,4530,8801,0,9102,8802,48,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2592,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E",9001,4284,16309,9807,1,0,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2593,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E",9001,4284,16378,9807,1,0,4530,8801,0,9102,8802,54,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2594,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E",9001,4284,16310,9807,1,0,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2595,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E",9001,4284,16380,9807,1,0,4530,8801,0,9102,8802,60,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2596,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E",9001,4284,16311,9807,1,0,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2597,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E",9001,4284,16382,9807,1,0,4530,8801,0,9102,8802,66,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2598,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E",9001,4284,16312,9807,1,0,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2599,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E",9001,4284,16384,9807,1,0,4530,8801,0,9102,8802,72,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2600,Lietuvos Koordinoei Sistema 1994,9001,4669,19934,9807,1,1,4530,8801,0,9102,8802,24,9102,8805,0.9998,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2601,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E",9001,4284,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2602,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E",9001,4284,16386,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2603,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E",9001,4284,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2604,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E",9001,4284,16388,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2605,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E",9001,4284,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2606,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E",9001,4284,16390,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2607,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E",9001,4284,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2608,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E",9001,4284,16392,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2609,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E",9001,4284,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2610,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E",9001,4284,16394,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2611,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E",9001,4284,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2612,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E",9001,4284,16396,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2613,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E",9001,4284,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2614,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E",9001,4284,16398,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2615,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E",9001,4284,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2616,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E",9001,4284,16170,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2617,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E",9001,4284,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2618,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E",9001,4284,16172,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2619,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E",9001,4284,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2620,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E",9001,4284,16174,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2621,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E",9001,4284,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2622,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E",9001,4284,16176,9807,1,0,4530,8801,0,9102,8802,138,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2623,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E",9001,4284,16324,9807,1,0,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2624,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E",9001,4284,16178,9807,1,0,4530,8801,0,9102,8802,144,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2625,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E",9001,4284,16325,9807,1,0,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2626,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E",9001,4284,16180,9807,1,0,4530,8801,0,9102,8802,150,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2627,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E",9001,4284,16326,9807,1,0,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2628,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E",9001,4284,16182,9807,1,0,4530,8801,0,9102,8802,156,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2629,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E",9001,4284,16327,9807,1,0,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2630,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E",9001,4284,16184,9807,1,0,4530,8801,0,9102,8802,162,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2631,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E",9001,4284,16328,9807,1,0,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2632,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E",9001,4284,16186,9807,1,0,4530,8801,0,9102,8802,168,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2633,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E",9001,4284,16329,9807,1,0,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2634,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E",9001,4284,16188,9807,1,0,4530,8801,0,9102,8802,174,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2635,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E",9001,4284,16330,9807,1,0,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2636,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E",9001,4284,16190,9807,1,0,4530,8801,0,9102,8802,180,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2637,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W",9001,4284,16331,9807,1,0,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2638,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W",9001,4284,16192,9807,1,0,4530,8801,0,9102,8802,-174,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2639,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W",9001,4284,16332,9807,1,0,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2640,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W",9001,4284,16194,9807,1,0,4530,8801,0,9102,8802,-168,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2641,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 7",9001,4200,16267,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +2642,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 8",9001,4200,16268,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +2643,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 9",9001,4200,16269,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +2644,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 10",9001,4200,16270,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,10500000,9001,8807,0,9001,,,,,,,,,,,,, +2645,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 11",9001,4200,16271,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,11500000,9001,8807,0,9001,,,,,,,,,,,,, +2646,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 12",9001,4200,16272,9807,1,0,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,12500000,9001,8807,0,9001,,,,,,,,,,,,, +2647,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 13",9001,4200,16273,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +2648,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 14",9001,4200,16274,9807,1,0,4530,8801,0,9102,8802,42,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +2649,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 15",9001,4200,16275,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +2650,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 16",9001,4200,16276,9807,1,0,4530,8801,0,9102,8802,48,9102,8805,1,9201,8806,16500000,9001,8807,0,9001,,,,,,,,,,,,, +2651,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 17",9001,4200,16277,9807,1,0,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,17500000,9001,8807,0,9001,,,,,,,,,,,,, +2652,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 18",9001,4200,16278,9807,1,0,4530,8801,0,9102,8802,54,9102,8805,1,9201,8806,18500000,9001,8807,0,9001,,,,,,,,,,,,, +2653,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 19",9001,4200,16279,9807,1,0,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +2654,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 20",9001,4200,16280,9807,1,0,4530,8801,0,9102,8802,60,9102,8805,1,9201,8806,20500000,9001,8807,0,9001,,,,,,,,,,,,, +2655,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 21",9001,4200,16281,9807,1,0,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,21500000,9001,8807,0,9001,,,,,,,,,,,,, +2656,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 22",9001,4200,16282,9807,1,0,4530,8801,0,9102,8802,66,9102,8805,1,9201,8806,22500000,9001,8807,0,9001,,,,,,,,,,,,, +2657,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 23",9001,4200,16283,9807,1,0,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,23500000,9001,8807,0,9001,,,,,,,,,,,,, +2658,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 24",9001,4200,16284,9807,1,0,4530,8801,0,9102,8802,72,9102,8805,1,9201,8806,24500000,9001,8807,0,9001,,,,,,,,,,,,, +2659,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 25",9001,4200,16285,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +2660,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 26",9001,4200,16286,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,26500000,9001,8807,0,9001,,,,,,,,,,,,, +2661,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 27",9001,4200,16287,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,27500000,9001,8807,0,9001,,,,,,,,,,,,, +2662,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 28",9001,4200,16288,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,28500000,9001,8807,0,9001,,,,,,,,,,,,, +2663,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 29",9001,4200,16289,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,29500000,9001,8807,0,9001,,,,,,,,,,,,, +2664,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 30",9001,4200,16290,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,30500000,9001,8807,0,9001,,,,,,,,,,,,, +2665,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 31",9001,4200,16291,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +2666,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 32",9001,4200,16292,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +2667,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 33",9001,4200,16293,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,33500000,9001,8807,0,9001,,,,,,,,,,,,, +2668,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 34",9001,4200,16294,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,34500000,9001,8807,0,9001,,,,,,,,,,,,, +2669,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 35",9001,4200,16295,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,35500000,9001,8807,0,9001,,,,,,,,,,,,, +2670,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 36",9001,4200,16296,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,36500000,9001,8807,0,9001,,,,,,,,,,,,, +2671,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 37",9001,4200,16297,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,37500000,9001,8807,0,9001,,,,,,,,,,,,, +2672,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 38",9001,4200,16298,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,38500000,9001,8807,0,9001,,,,,,,,,,,,, +2673,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 39",9001,4200,16299,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,39500000,9001,8807,0,9001,,,,,,,,,,,,, +2674,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 40",9001,4200,16070,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,40500000,9001,8807,0,9001,,,,,,,,,,,,, +2675,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 41",9001,4200,16071,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,41500000,9001,8807,0,9001,,,,,,,,,,,,, +2676,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 42",9001,4200,16072,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,42500000,9001,8807,0,9001,,,,,,,,,,,,, +2677,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 43",9001,4200,16073,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,43500000,9001,8807,0,9001,,,,,,,,,,,,, +2678,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 44",9001,4200,16074,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,44500000,9001,8807,0,9001,,,,,,,,,,,,, +2679,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 45",9001,4200,16075,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,45500000,9001,8807,0,9001,,,,,,,,,,,,, +2680,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 46",9001,4200,16076,9807,1,0,4530,8801,0,9102,8802,138,9102,8805,1,9201,8806,46500000,9001,8807,0,9001,,,,,,,,,,,,, +2681,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 47",9001,4200,16077,9807,1,0,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,47500000,9001,8807,0,9001,,,,,,,,,,,,, +2682,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 48",9001,4200,16078,9807,1,0,4530,8801,0,9102,8802,144,9102,8805,1,9201,8806,48500000,9001,8807,0,9001,,,,,,,,,,,,, +2683,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 49",9001,4200,16079,9807,1,0,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,49500000,9001,8807,0,9001,,,,,,,,,,,,, +2684,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 50",9001,4200,16080,9807,1,0,4530,8801,0,9102,8802,150,9102,8805,1,9201,8806,50500000,9001,8807,0,9001,,,,,,,,,,,,, +2685,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 51",9001,4200,16081,9807,1,0,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,51500000,9001,8807,0,9001,,,,,,,,,,,,, +2686,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 52",9001,4200,16082,9807,1,0,4530,8801,0,9102,8802,156,9102,8805,1,9201,8806,52500000,9001,8807,0,9001,,,,,,,,,,,,, +2687,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 53",9001,4200,16083,9807,1,0,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,53500000,9001,8807,0,9001,,,,,,,,,,,,, +2688,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 54",9001,4200,16084,9807,1,0,4530,8801,0,9102,8802,162,9102,8805,1,9201,8806,54500000,9001,8807,0,9001,,,,,,,,,,,,, +2689,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 55",9001,4200,16085,9807,1,0,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,55500000,9001,8807,0,9001,,,,,,,,,,,,, +2690,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 56",9001,4200,16086,9807,1,0,4530,8801,0,9102,8802,168,9102,8805,1,9201,8806,56500000,9001,8807,0,9001,,,,,,,,,,,,, +2691,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 57",9001,4200,16087,9807,1,0,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,57500000,9001,8807,0,9001,,,,,,,,,,,,, +2692,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 58",9001,4200,16088,9807,1,0,4530,8801,0,9102,8802,174,9102,8805,1,9201,8806,58500000,9001,8807,0,9001,,,,,,,,,,,,, +2693,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 59",9001,4200,16089,9807,1,0,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,59500000,9001,8807,0,9001,,,,,,,,,,,,, +2694,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 60",9001,4200,16090,9807,1,1,4530,8801,0,9102,8802,180,9102,8805,1,9201,8806,60000000,9001,8807,0,9001,,,,,,,,,,,,, +2695,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 61",9001,4200,16091,9807,1,0,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,61500000,9001,8807,0,9001,,,,,,,,,,,,, +2696,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 62",9001,4200,16092,9807,1,0,4530,8801,0,9102,8802,-174,9102,8805,1,9201,8806,62500000,9001,8807,0,9001,,,,,,,,,,,,, +2697,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 63",9001,4200,16093,9807,1,0,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,63500000,9001,8807,0,9001,,,,,,,,,,,,, +2698,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 64",9001,4200,16094,9807,1,0,4530,8801,0,9102,8802,-168,9102,8805,1,9201,8806,64500000,9001,8807,0,9001,,,,,,,,,,,,, +2699,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E",9001,4200,16304,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2700,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E",9001,4200,16368,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2701,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E",9001,4200,16305,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2702,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E",9001,4200,16370,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2703,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E",9001,4200,16306,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2704,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E",9001,4200,16372,9807,1,0,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2705,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E",9001,4200,16307,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2706,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E",9001,4200,16374,9807,1,0,4530,8801,0,9102,8802,42,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2707,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E",9001,4200,16308,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2708,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E",9001,4200,16376,9807,1,0,4530,8801,0,9102,8802,48,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2709,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E",9001,4200,16309,9807,1,0,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2710,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E",9001,4200,16378,9807,1,0,4530,8801,0,9102,8802,54,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2711,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E",9001,4200,16310,9807,1,0,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2712,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E",9001,4200,16380,9807,1,0,4530,8801,0,9102,8802,60,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2713,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E",9001,4200,16311,9807,1,0,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2714,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E",9001,4200,16382,9807,1,0,4530,8801,0,9102,8802,66,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2715,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E",9001,4200,16312,9807,1,0,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2716,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E",9001,4200,16384,9807,1,0,4530,8801,0,9102,8802,72,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2717,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E",9001,4200,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2718,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E",9001,4200,16386,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2719,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E",9001,4200,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2720,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E",9001,4200,16388,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2721,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E",9001,4200,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2722,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E",9001,4200,16390,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2723,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E",9001,4200,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2724,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E",9001,4200,16392,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2725,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E",9001,4200,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2726,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E",9001,4200,16394,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2727,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E",9001,4200,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2728,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E",9001,4200,16396,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2729,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E",9001,4200,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2730,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E",9001,4200,16398,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2731,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E",9001,4200,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2732,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E",9001,4200,16170,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2733,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E",9001,4200,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2734,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E",9001,4200,16172,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2735,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E",9001,4200,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2736,"Tete / UTM zone 36S",9001,4127,16136,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2737,"Tete / UTM zone 37S",9001,4127,16137,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2738,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E",9001,4200,16174,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2739,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E",9001,4200,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2740,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E",9001,4200,16176,9807,1,0,4530,8801,0,9102,8802,138,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2741,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E",9001,4200,16324,9807,1,0,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2742,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E",9001,4200,16178,9807,1,0,4530,8801,0,9102,8802,144,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2743,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E",9001,4200,16325,9807,1,0,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2744,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E",9001,4200,16180,9807,1,0,4530,8801,0,9102,8802,150,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2745,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E",9001,4200,16326,9807,1,0,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2746,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E",9001,4200,16182,9807,1,0,4530,8801,0,9102,8802,156,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2747,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E",9001,4200,16327,9807,1,0,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2748,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E",9001,4200,16184,9807,1,0,4530,8801,0,9102,8802,162,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2749,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E",9001,4200,16328,9807,1,0,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2750,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E",9001,4200,16186,9807,1,0,4530,8801,0,9102,8802,168,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2751,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E",9001,4200,16329,9807,1,0,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2752,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E",9001,4200,16188,9807,1,0,4530,8801,0,9102,8802,174,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2753,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E",9001,4200,16330,9807,1,0,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2754,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E",9001,4200,16190,9807,1,0,4530,8801,0,9102,8802,180,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2755,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W",9001,4200,16331,9807,1,0,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2756,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W",9001,4200,16192,9807,1,0,4530,8801,0,9102,8802,-174,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2757,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W",9001,4200,16332,9807,1,0,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2758,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W",9001,4200,16194,9807,1,0,4530,8801,0,9102,8802,-168,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2759,"NAD83(HARN) / Alabama East",9001,4152,10131,9807,1,0,4499,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2760,"NAD83(HARN) / Alabama West",9001,4152,10132,9807,1,0,4499,8801,30,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,600000,9001,8807,0,9001,,,,,,,,,,,,, +2761,"NAD83(HARN) / Arizona East",9001,4152,10231,9807,1,0,4499,8801,31,9110,8802,-110.1,9110,8805,0.9999,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +2762,"NAD83(HARN) / Arizona Central",9001,4152,10232,9807,1,0,4499,8801,31,9110,8802,-111.55,9110,8805,0.9999,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +2763,"NAD83(HARN) / Arizona West",9001,4152,10233,9807,1,0,4499,8801,31,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +2764,"NAD83(HARN) / Arkansas North",9001,4152,10331,9802,1,0,4499,8821,34.2,9110,8822,-92,9110,8823,36.14,9110,8824,34.56,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +2765,"NAD83(HARN) / Arkansas South",9001,4152,10332,9802,1,0,4499,8821,32.4,9110,8822,-92,9110,8823,34.46,9110,8824,33.18,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +2766,"NAD83(HARN) / California zone 1",9001,4152,10431,9802,1,0,4499,8821,39.2,9110,8822,-122,9110,8823,41.4,9110,8824,40,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +2767,"NAD83(HARN) / California zone 2",9001,4152,10432,9802,1,0,4499,8821,37.4,9110,8822,-122,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +2768,"NAD83(HARN) / California zone 3",9001,4152,10433,9802,1,0,4499,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +2769,"NAD83(HARN) / California zone 4",9001,4152,10434,9802,1,0,4499,8821,35.2,9110,8822,-119,9110,8823,37.15,9110,8824,36,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +2770,"NAD83(HARN) / California zone 5",9001,4152,10435,9802,1,0,4499,8821,33.3,9110,8822,-118,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +2771,"NAD83(HARN) / California zone 6",9001,4152,10436,9802,1,0,4499,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +2772,"NAD83(HARN) / Colorado North",9001,4152,10531,9802,1,0,4499,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +2773,"NAD83(HARN) / Colorado Central",9001,4152,10532,9802,1,0,4499,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +2774,"NAD83(HARN) / Colorado South",9001,4152,10533,9802,1,0,4499,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +2775,"NAD83(HARN) / Connecticut",9001,4152,10630,9802,1,0,4499,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,304800.6096,9001,8827,152400.3048,9001,,,,,,,,,, +2776,"NAD83(HARN) / Delaware",9001,4152,10730,9807,1,0,4499,8801,38,9110,8802,-75.25,9110,8805,0.999995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2777,"NAD83(HARN) / Florida East",9001,4152,10931,9807,1,0,4499,8801,24.2,9110,8802,-81,9110,8805,0.999941177,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2778,"NAD83(HARN) / Florida West",9001,4152,10932,9807,1,0,4499,8801,24.2,9110,8802,-82,9110,8805,0.999941177,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2779,"NAD83(HARN) / Florida North",9001,4152,10933,9802,1,0,4499,8821,29,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2780,"NAD83(HARN) / Georgia East",9001,4152,11031,9807,1,0,4499,8801,30,9110,8802,-82.1,9110,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2781,"NAD83(HARN) / Georgia West",9001,4152,11032,9807,1,0,4499,8801,30,9110,8802,-84.1,9110,8805,0.9999,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +2782,"NAD83(HARN) / Hawaii zone 1",9001,4152,15131,9807,1,0,4499,8801,18.5,9110,8802,-155.3,9110,8805,0.999966667,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2783,"NAD83(HARN) / Hawaii zone 2",9001,4152,15132,9807,1,0,4499,8801,20.2,9110,8802,-156.4,9110,8805,0.999966667,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2784,"NAD83(HARN) / Hawaii zone 3",9001,4152,15133,9807,1,0,4499,8801,21.1,9110,8802,-158,9110,8805,0.99999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2785,"NAD83(HARN) / Hawaii zone 4",9001,4152,15134,9807,1,0,4499,8801,21.5,9110,8802,-159.3,9110,8805,0.99999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2786,"NAD83(HARN) / Hawaii zone 5",9001,4152,15135,9807,1,0,4499,8801,21.4,9110,8802,-160.1,9110,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2787,"NAD83(HARN) / Idaho East",9001,4152,11131,9807,1,0,4499,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2788,"NAD83(HARN) / Idaho Central",9001,4152,11132,9807,1,0,4499,8801,41.4,9110,8802,-114,9110,8805,0.999947368,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2789,"NAD83(HARN) / Idaho West",9001,4152,11133,9807,1,0,4499,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,800000,9001,8807,0,9001,,,,,,,,,,,,, +2790,"NAD83(HARN) / Illinois East",9001,4152,11231,9807,1,0,4499,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +2791,"NAD83(HARN) / Illinois West",9001,4152,11232,9807,1,0,4499,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +2792,"NAD83(HARN) / Indiana East",9001,4152,11331,9807,1,0,4499,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,100000,9001,8807,250000,9001,,,,,,,,,,,,, +2793,"NAD83(HARN) / Indiana West",9001,4152,11332,9807,1,0,4499,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,900000,9001,8807,250000,9001,,,,,,,,,,,,, +2794,"NAD83(HARN) / Iowa North",9001,4152,11431,9802,1,0,4499,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,1500000,9001,8827,1000000,9001,,,,,,,,,, +2795,"NAD83(HARN) / Iowa South",9001,4152,11432,9802,1,0,4499,8821,40,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +2796,"NAD83(HARN) / Kansas North",9001,4152,11531,9802,1,0,4499,8821,38.2,9110,8822,-98,9110,8823,39.47,9110,8824,38.43,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +2797,"NAD83(HARN) / Kansas South",9001,4152,11532,9802,1,0,4499,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +2798,"NAD83(HARN) / Kentucky North",9001,4152,15303,9802,1,0,4499,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +2799,"NAD83(HARN) / Kentucky South",9001,4152,11632,9802,1,0,4499,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,500000,9001,8827,500000,9001,,,,,,,,,, +2800,"NAD83(HARN) / Louisiana North",9001,4152,11731,9802,1,0,4499,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +2801,"NAD83(HARN) / Louisiana South",9001,4152,11732,9802,1,0,4499,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +2802,"NAD83(HARN) / Maine East",9001,4152,11831,9807,1,0,4499,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +2803,"NAD83(HARN) / Maine West",9001,4152,11832,9807,1,0,4499,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,900000,9001,8807,0,9001,,,,,,,,,,,,, +2804,"NAD83(HARN) / Maryland",9001,4152,11930,9802,1,0,4499,8821,37.4,9110,8822,-77,9110,8823,39.27,9110,8824,38.18,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +2805,"NAD83(HARN) / Massachusetts Mainland",9001,4152,12031,9802,1,0,4499,8821,41,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,200000,9001,8827,750000,9001,,,,,,,,,, +2806,"NAD83(HARN) / Massachusetts Island",9001,4152,12032,9802,1,0,4499,8821,41,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +2807,"NAD83(HARN) / Michigan North",9001,4152,12141,9802,1,0,4499,8821,44.47,9110,8822,-87,9110,8823,47.05,9110,8824,45.29,9110,8826,8000000,9001,8827,0,9001,,,,,,,,,, +2808,"NAD83(HARN) / Michigan Central",9001,4152,12142,9802,1,0,4499,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,6000000,9001,8827,0,9001,,,,,,,,,, +2809,"NAD83(HARN) / Michigan South",9001,4152,12143,9802,1,0,4499,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,4000000,9001,8827,0,9001,,,,,,,,,, +2810,"NAD83(HARN) / Minnesota North",9001,4152,12231,9802,1,0,4499,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +2811,"NAD83(HARN) / Minnesota Central",9001,4152,12232,9802,1,0,4499,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +2812,"NAD83(HARN) / Minnesota South",9001,4152,12233,9802,1,0,4499,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +2813,"NAD83(HARN) / Mississippi East",9001,4152,12331,9807,1,0,4499,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +2814,"NAD83(HARN) / Mississippi West",9001,4152,12332,9807,1,0,4499,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +2815,"NAD83(HARN) / Missouri East",9001,4152,12431,9807,1,0,4499,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +2816,"NAD83(HARN) / Missouri Central",9001,4152,12432,9807,1,0,4499,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2817,"NAD83(HARN) / Missouri West",9001,4152,12433,9807,1,0,4499,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,850000,9001,8807,0,9001,,,,,,,,,,,,, +2818,"NAD83(HARN) / Montana",9001,4152,12530,9802,1,0,4499,8821,44.15,9110,8822,-109.3,9110,8823,49,9110,8824,45,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2819,"NAD83(HARN) / Nebraska",9001,4152,12630,9802,1,0,4499,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +2820,"NAD83(HARN) / Nevada East",9001,4152,12731,9807,1,0,4499,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,200000,9001,8807,8000000,9001,,,,,,,,,,,,, +2821,"NAD83(HARN) / Nevada Central",9001,4152,12732,9807,1,0,4499,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000,9001,8807,6000000,9001,,,,,,,,,,,,, +2822,"NAD83(HARN) / Nevada West",9001,4152,12733,9807,1,0,4499,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,800000,9001,8807,4000000,9001,,,,,,,,,,,,, +2823,"NAD83(HARN) / New Hampshire",9001,4152,12830,9807,1,0,4499,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +2824,"NAD83(HARN) / New Jersey",9001,4152,12930,9807,1,0,4499,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +2825,"NAD83(HARN) / New Mexico East",9001,4152,13031,9807,1,0,4499,8801,31,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,165000,9001,8807,0,9001,,,,,,,,,,,,, +2826,"NAD83(HARN) / New Mexico Central",9001,4152,13032,9807,1,0,4499,8801,31,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2827,"NAD83(HARN) / New Mexico West",9001,4152,13033,9807,1,0,4499,8801,31,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,830000,9001,8807,0,9001,,,,,,,,,,,,, +2828,"NAD83(HARN) / New York East",9001,4152,13131,9807,1,0,4499,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +2829,"NAD83(HARN) / New York Central",9001,4152,13132,9807,1,0,4499,8801,40,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +2830,"NAD83(HARN) / New York West",9001,4152,13133,9807,1,0,4499,8801,40,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,350000,9001,8807,0,9001,,,,,,,,,,,,, +2831,"NAD83(HARN) / New York Long Island",9001,4152,13134,9802,1,0,4499,8821,40.1,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,300000,9001,8827,0,9001,,,,,,,,,, +2832,"NAD83(HARN) / North Dakota North",9001,4152,13331,9802,1,0,4499,8821,47,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2833,"NAD83(HARN) / North Dakota South",9001,4152,13332,9802,1,0,4499,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2834,"NAD83(HARN) / Ohio North",9001,4152,13431,9802,1,0,4499,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2835,"NAD83(HARN) / Ohio South",9001,4152,13432,9802,1,0,4499,8821,38,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2836,"NAD83(HARN) / Oklahoma North",9001,4152,13531,9802,1,0,4499,8821,35,9110,8822,-98,9110,8823,36.46,9110,8824,35.34,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2837,"NAD83(HARN) / Oklahoma South",9001,4152,13532,9802,1,0,4499,8821,33.2,9110,8822,-98,9110,8823,35.14,9110,8824,33.56,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2838,"NAD83(HARN) / Oregon North",9001,4152,13631,9802,1,0,4499,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,2500000,9001,8827,0,9001,,,,,,,,,, +2839,"NAD83(HARN) / Oregon South",9001,4152,13632,9802,1,0,4499,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,1500000,9001,8827,0,9001,,,,,,,,,, +2840,"NAD83(HARN) / Rhode Island",9001,4152,13830,9807,1,0,4499,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,100000,9001,8807,0,9001,,,,,,,,,,,,, +2841,"NAD83(HARN) / South Dakota North",9001,4152,14031,9802,1,0,4499,8821,43.5,9110,8822,-100,9110,8823,45.41,9110,8824,44.25,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2842,"NAD83(HARN) / South Dakota South",9001,4152,14032,9802,1,0,4499,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2843,"NAD83(HARN) / Tennessee",9001,4152,14130,9802,1,0,4499,8821,34.2,9110,8822,-86,9110,8823,36.25,9110,8824,35.15,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2844,"NAD83(HARN) / Texas North",9001,4152,14231,9802,1,0,4499,8821,34,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,200000,9001,8827,1000000,9001,,,,,,,,,, +2845,"NAD83(HARN) / Texas North Central",9001,4152,14232,9802,1,0,4499,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,600000,9001,8827,2000000,9001,,,,,,,,,, +2846,"NAD83(HARN) / Texas Central",9001,4152,14233,9802,1,0,4499,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,700000,9001,8827,3000000,9001,,,,,,,,,, +2847,"NAD83(HARN) / Texas South Central",9001,4152,14234,9802,1,0,4499,8821,27.5,9110,8822,-99,9110,8823,30.17,9110,8824,28.23,9110,8826,600000,9001,8827,4000000,9001,,,,,,,,,, +2848,"NAD83(HARN) / Texas South",9001,4152,14235,9802,1,0,4499,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,300000,9001,8827,5000000,9001,,,,,,,,,, +2849,"NAD83(HARN) / Utah North",9001,4152,14331,9802,1,0,4499,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,500000,9001,8827,1000000,9001,,,,,,,,,, +2850,"NAD83(HARN) / Utah Central",9001,4152,14332,9802,1,0,4499,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,500000,9001,8827,2000000,9001,,,,,,,,,, +2851,"NAD83(HARN) / Utah South",9001,4152,14333,9802,1,0,4499,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,500000,9001,8827,3000000,9001,,,,,,,,,, +2852,"NAD83(HARN) / Vermont",9001,4152,14430,9807,1,0,4499,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2853,"NAD83(HARN) / Virginia North",9001,4152,14531,9802,1,0,4499,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,3500000,9001,8827,2000000,9001,,,,,,,,,, +2854,"NAD83(HARN) / Virginia South",9001,4152,14532,9802,1,0,4499,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,3500000,9001,8827,1000000,9001,,,,,,,,,, +2855,"NAD83(HARN) / Washington North",9001,4152,14631,9802,1,0,4499,8821,47,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +2856,"NAD83(HARN) / Washington South",9001,4152,14632,9802,1,0,4499,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +2857,"NAD83(HARN) / West Virginia North",9001,4152,14731,9802,1,0,4499,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2858,"NAD83(HARN) / West Virginia South",9001,4152,14732,9802,1,0,4499,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2859,"NAD83(HARN) / Wisconsin North",9001,4152,14831,9802,1,0,4499,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2860,"NAD83(HARN) / Wisconsin Central",9001,4152,14832,9802,1,0,4499,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2861,"NAD83(HARN) / Wisconsin South",9001,4152,14833,9802,1,0,4499,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +2862,"NAD83(HARN) / Wyoming East",9001,4152,14931,9807,1,0,4499,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +2863,"NAD83(HARN) / Wyoming East Central",9001,4152,14932,9807,1,0,4499,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,400000,9001,8807,100000,9001,,,,,,,,,,,,, +2864,"NAD83(HARN) / Wyoming West Central",9001,4152,14933,9807,1,0,4499,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,600000,9001,8807,0,9001,,,,,,,,,,,,, +2865,"NAD83(HARN) / Wyoming West",9001,4152,14934,9807,1,0,4499,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,800000,9001,8807,100000,9001,,,,,,,,,,,,, +2866,"NAD83(HARN) / Puerto Rico and Virgin Is.",9001,4152,15230,9802,1,0,4499,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,200000,9001,8827,200000,9001,,,,,,,,,, +2867,"NAD83(HARN) / Arizona East (ft)",9002,4152,15304,9807,1,0,4495,8801,31,9110,8802,-110.1,9110,8805,0.9999,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +2868,"NAD83(HARN) / Arizona Central (ft)",9002,4152,15305,9807,1,0,4495,8801,31,9110,8802,-111.55,9110,8805,0.9999,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +2869,"NAD83(HARN) / Arizona West (ft)",9002,4152,15306,9807,1,0,4495,8801,31,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +2870,"NAD83(HARN) / California zone 1 (ftUS)",9003,4152,15307,9802,1,0,4497,8821,39.2,9110,8822,-122,9110,8823,41.4,9110,8824,40,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2871,"NAD83(HARN) / California zone 2 (ftUS)",9003,4152,15308,9802,1,0,4497,8821,37.4,9110,8822,-122,9110,8823,39.5,9110,8824,38.2,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2872,"NAD83(HARN) / California zone 3 (ftUS)",9003,4152,15309,9802,1,0,4497,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2873,"NAD83(HARN) / California zone 4 (ftUS)",9003,4152,15310,9802,1,0,4497,8821,35.2,9110,8822,-119,9110,8823,37.15,9110,8824,36,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2874,"NAD83(HARN) / California zone 5 (ftUS)",9003,4152,15311,9802,1,0,4497,8821,33.3,9110,8822,-118,9110,8823,35.28,9110,8824,34.02,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2875,"NAD83(HARN) / California zone 6 (ftUS)",9003,4152,15312,9802,1,0,4497,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +2876,"NAD83(HARN) / Colorado North (ftUS)",9003,4152,15313,9802,1,0,4497,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +2877,"NAD83(HARN) / Colorado Central (ftUS)",9003,4152,15314,9802,1,0,4497,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +2878,"NAD83(HARN) / Colorado South (ftUS)",9003,4152,15315,9802,1,0,4497,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +2879,"NAD83(HARN) / Connecticut (ftUS)",9003,4152,15316,9802,1,0,4497,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,1000000,9003,8827,500000,9003,,,,,,,,,, +2880,"NAD83(HARN) / Delaware (ftUS)",9003,4152,15317,9807,1,0,4497,8801,38,9110,8802,-75.25,9110,8805,0.999995,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2881,"NAD83(HARN) / Florida East (ftUS)",9003,4152,15318,9807,1,0,4497,8801,24.2,9110,8802,-81,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2882,"NAD83(HARN) / Florida West (ftUS)",9003,4152,15319,9807,1,0,4497,8801,24.2,9110,8802,-82,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2883,"NAD83(HARN) / Florida North (ftUS)",9003,4152,15320,9802,1,0,4497,8821,29,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2884,"NAD83(HARN) / Georgia East (ftUS)",9003,4152,15321,9807,1,0,4497,8801,30,9110,8802,-82.1,9110,8805,0.9999,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2885,"NAD83(HARN) / Georgia West (ftUS)",9003,4152,15322,9807,1,0,4497,8801,30,9110,8802,-84.1,9110,8805,0.9999,9201,8806,2296583.333,9003,8807,0,9003,,,,,,,,,,,,, +2886,"NAD83(HARN) / Idaho East (ftUS)",9003,4152,15323,9807,1,0,4497,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +2887,"NAD83(HARN) / Idaho Central (ftUS)",9003,4152,15324,9807,1,0,4497,8801,41.4,9110,8802,-114,9110,8805,0.999947368,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +2888,"NAD83(HARN) / Idaho West (ftUS)",9003,4152,15325,9807,1,0,4497,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,2624666.667,9003,8807,0,9003,,,,,,,,,,,,, +2889,"NAD83(HARN) / Indiana East (ftUS)",9003,4152,15326,9807,1,1,4497,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,328083.333,9003,8807,818125,9003,,,,,,,,,,,,, +2890,"NAD83(HARN) / Indiana West (ftUS)",9003,4152,15327,9807,1,1,4497,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,2952750,9003,8807,818125,9003,,,,,,,,,,,,, +2891,"NAD83(HARN) / Kentucky North (ftUS)",9003,4152,15328,9802,1,0,4497,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +2892,"NAD83(HARN) / Kentucky South (ftUS)",9003,4152,15329,9802,1,0,4497,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,1640416.667,9003,8827,1640416.667,9003,,,,,,,,,, +2893,"NAD83(HARN) / Maryland (ftUS)",9003,4152,15330,9802,1,0,4497,8821,37.4,9110,8822,-77,9110,8823,39.27,9110,8824,38.18,9110,8826,1312333.333,9003,8827,0,9003,,,,,,,,,, +2894,"NAD83(HARN) / Massachusetts Mainland (ftUS)",9003,4152,15331,9802,1,0,4497,8821,41,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,656166.667,9003,8827,2460625,9003,,,,,,,,,, +2895,"NAD83(HARN) / Massachusetts Island (ftUS)",9003,4152,15332,9802,1,0,4497,8821,41,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +2896,"NAD83(HARN) / Michigan North (ft)",9002,4152,15333,9802,1,0,4495,8821,44.47,9110,8822,-87,9110,8823,47.05,9110,8824,45.29,9110,8826,26246719.16,9002,8827,0,9002,,,,,,,,,, +2897,"NAD83(HARN) / Michigan Central (ft)",9002,4152,15334,9802,1,0,4495,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,19685039.37,9002,8827,0,9002,,,,,,,,,, +2898,"NAD83(HARN) / Michigan South (ft)",9002,4152,15335,9802,1,0,4495,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,13123359.58,9002,8827,0,9002,,,,,,,,,, +2899,"NAD83(HARN) / Mississippi East (ftUS)",9003,4152,15336,9807,1,0,4497,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +2900,"NAD83(HARN) / Mississippi West (ftUS)",9003,4152,15337,9807,1,0,4497,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,2296583.333,9003,8807,0,9003,,,,,,,,,,,,, +2901,"NAD83(HARN) / Montana (ft)",9002,4152,15338,9802,1,0,4495,8821,44.15,9110,8822,-109.3,9110,8823,49,9110,8824,45,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +2902,"NAD83(HARN) / New Mexico East (ftUS)",9003,4152,15339,9807,1,0,4497,8801,31,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,541337.5,9003,8807,0,9003,,,,,,,,,,,,, +2903,"NAD83(HARN) / New Mexico Central (ftUS)",9003,4152,15340,9807,1,0,4497,8801,31,9110,8802,-106.15,9110,8805,0.9999,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +2904,"NAD83(HARN) / New Mexico West (ftUS)",9003,4152,15341,9807,1,0,4497,8801,31,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,2723091.667,9003,8807,0,9003,,,,,,,,,,,,, +2905,"NAD83(HARN) / New York East (ftUS)",9003,4152,15342,9807,1,0,4497,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125,9003,8807,0,9003,,,,,,,,,,,,, +2906,"NAD83(HARN) / New York Central (ftUS)",9003,4152,15343,9807,1,0,4497,8801,40,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,820208.333,9003,8807,0,9003,,,,,,,,,,,,, +2907,"NAD83(HARN) / New York West (ftUS)",9003,4152,15344,9807,1,0,4497,8801,40,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,1148291.667,9003,8807,0,9003,,,,,,,,,,,,, +2908,"NAD83(HARN) / New York Long Island (ftUS)",9003,4152,15345,9802,1,0,4497,8821,40.1,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,984250,9003,8827,0,9003,,,,,,,,,, +2909,"NAD83(HARN) / North Dakota North (ft)",9002,4152,15347,9802,1,0,4495,8821,47,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +2910,"NAD83(HARN) / North Dakota South (ft)",9002,4152,15348,9802,1,0,4495,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +2911,"NAD83(HARN) / Oklahoma North (ftUS)",9003,4152,15349,9802,1,0,4497,8821,35,9110,8822,-98,9110,8823,36.46,9110,8824,35.34,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2912,"NAD83(HARN) / Oklahoma South (ftUS)",9003,4152,15350,9802,1,0,4497,8821,33.2,9110,8822,-98,9110,8823,35.14,9110,8824,33.56,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2913,"NAD83(HARN) / Oregon North (ft)",9002,4152,15351,9802,1,0,4495,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,8202099.738,9002,8827,0,9002,,,,,,,,,, +2914,"NAD83(HARN) / Oregon South (ft)",9002,4152,15352,9802,1,0,4495,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,4921259.843,9002,8827,0,9002,,,,,,,,,, +2915,"NAD83(HARN) / Tennessee (ftUS)",9003,4152,15356,9802,1,0,4497,8821,34.2,9110,8822,-86,9110,8823,36.25,9110,8824,35.15,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2916,"NAD83(HARN) / Texas North (ftUS)",9003,4152,15357,9802,1,0,4497,8821,34,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,656166.667,9003,8827,3280833.333,9003,,,,,,,,,, +2917,"NAD83(HARN) / Texas North Central (ftUS)",9003,4152,15358,9802,1,0,4497,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,1968500,9003,8827,6561666.667,9003,,,,,,,,,, +2918,"NAD83(HARN) / Texas Central (ftUS)",9003,4152,15359,9802,1,0,4497,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,2296583.333,9003,8827,9842500,9003,,,,,,,,,, +2919,"NAD83(HARN) / Texas South Central (ftUS)",9003,4152,15360,9802,1,0,4497,8821,27.5,9110,8822,-99,9110,8823,30.17,9110,8824,28.23,9110,8826,1968500,9003,8827,13123333.333,9003,,,,,,,,,, +2920,"NAD83(HARN) / Texas South (ftUS)",9003,4152,15361,9802,1,0,4497,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,984250,9003,8827,16404166.667,9003,,,,,,,,,, +2921,"NAD83(HARN) / Utah North (ft)",9002,4152,15362,9802,0,0,4495,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640419.948,9002,8827,3280839.895,9002,,,,,,,,,, +2922,"NAD83(HARN) / Utah Central (ft)",9002,4152,15363,9802,0,0,4495,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640419.948,9002,8827,6561679.79,9002,,,,,,,,,, +2923,"NAD83(HARN) / Utah South (ft)",9002,4152,15364,9802,0,0,4495,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640419.948,9002,8827,9842519.685,9002,,,,,,,,,, +2924,"NAD83(HARN) / Virginia North (ftUS)",9003,4152,15365,9802,1,0,4497,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,11482916.667,9003,8827,6561666.667,9003,,,,,,,,,, +2925,"NAD83(HARN) / Virginia South (ftUS)",9003,4152,15366,9802,1,0,4497,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,11482916.667,9003,8827,3280833.333,9003,,,,,,,,,, +2926,"NAD83(HARN) / Washington North (ftUS)",9003,4152,15367,9802,1,0,4497,8821,47,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +2927,"NAD83(HARN) / Washington South (ftUS)",9003,4152,15368,9802,1,0,4497,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +2928,"NAD83(HARN) / Wisconsin North (ftUS)",9003,4152,15369,9802,1,0,4497,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2929,"NAD83(HARN) / Wisconsin Central (ftUS)",9003,4152,15370,9802,1,0,4497,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2930,"NAD83(HARN) / Wisconsin South (ftUS)",9003,4152,15371,9802,1,0,4497,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +2931,"Beduaram / TM 13 NE",9001,4213,16413,9807,1,0,4499,8801,0,9102,8802,13,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2932,"QND95 / Qatar National Grid",9001,4614,19919,9807,1,0,4400,8801,24.27,9110,8802,51.13,9110,8805,0.99999,9201,8806,200000,9001,8807,300000,9001,,,,,,,,,,,,, +2933,"Segara / UTM zone 50S",9001,4613,16150,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2934,"Segara (Jakarta) / NEIEZ",9001,4820,19905,9804,1,1,4499,8801,0,9102,8802,110,9102,8805,0.997,9201,8806,3900000,9001,8807,900000,9001,,,,,,,,,,,,, +2935,"Pulkovo 1942 / CS63 zone A1",9001,4284,18441,9807,1,0,4530,8801,0.07,9110,8802,41.32,9110,8805,1,9201,8806,1300000,9001,8807,0,9001,,,,,,,,,,,,, +2936,"Pulkovo 1942 / CS63 zone A2",9001,4284,18442,9807,1,0,4530,8801,0.07,9110,8802,44.32,9110,8805,1,9201,8806,2300000,9001,8807,0,9001,,,,,,,,,,,,, +2937,"Pulkovo 1942 / CS63 zone A3",9001,4284,18443,9807,1,0,4530,8801,0.07,9110,8802,47.32,9110,8805,1,9201,8806,3300000,9001,8807,0,9001,,,,,,,,,,,,, +2938,"Pulkovo 1942 / CS63 zone A4",9001,4284,18444,9807,1,0,4530,8801,0.07,9110,8802,50.32,9110,8805,1,9201,8806,4300000,9001,8807,0,9001,,,,,,,,,,,,, +2939,"Pulkovo 1942 / CS63 zone K2",9001,4284,18446,9807,1,0,4530,8801,0.08,9110,8802,50.46,9110,8805,1,9201,8806,2300000,9001,8807,0,9001,,,,,,,,,,,,, +2940,"Pulkovo 1942 / CS63 zone K3",9001,4284,18447,9807,1,0,4530,8801,0.08,9110,8802,53.46,9110,8805,1,9201,8806,3300000,9001,8807,0,9001,,,,,,,,,,,,, +2941,"Pulkovo 1942 / CS63 zone K4",9001,4284,18448,9807,1,0,4530,8801,0.08,9110,8802,56.46,9110,8805,1,9201,8806,4300000,9001,8807,0,9001,,,,,,,,,,,,, +2942,"Porto Santo / UTM zone 28N",9001,4615,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2943,"Selvagem Grande / UTM zone 28N",9001,4616,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2944,"NAD83(CSRS) / SCoPQ zone 2",9001,4617,17700,9807,1,1,4499,8801,0,9110,8802,-55.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2945,"NAD83(CSRS) / MTM zone 3",9001,4617,17703,9807,1,0,4496,8801,0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2946,"NAD83(CSRS) / MTM zone 4",9001,4617,17704,9807,1,0,4496,8801,0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2947,"NAD83(CSRS) / MTM zone 5",9001,4617,17705,9807,1,0,4496,8801,0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2948,"NAD83(CSRS) / MTM zone 6",9001,4617,17706,9807,1,0,4496,8801,0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2949,"NAD83(CSRS) / MTM zone 7",9001,4617,17707,9807,1,0,4496,8801,0,9110,8802,-70.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2950,"NAD83(CSRS) / MTM zone 8",9001,4617,17708,9807,1,0,4496,8801,0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2951,"NAD83(CSRS) / MTM zone 9",9001,4617,17709,9807,1,0,4496,8801,0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2952,"NAD83(CSRS) / MTM zone 10",9001,4617,17710,9807,1,0,4496,8801,0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +2953,"NAD83(CSRS) / New Brunswick Stereographic",9001,4617,19946,9809,1,0,4500,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,2500000,9001,8807,7500000,9001,,,,,,,,,,,,, +2954,"NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83)",9001,4617,19960,9809,1,0,4496,8801,47.15,9110,8802,-63,9110,8805,0.999912,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +2955,"NAD83(CSRS) / UTM zone 11N",9001,4617,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2956,"NAD83(CSRS) / UTM zone 12N",9001,4617,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2957,"NAD83(CSRS) / UTM zone 13N",9001,4617,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2958,"NAD83(CSRS) / UTM zone 17N",9001,4617,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2959,"NAD83(CSRS) / UTM zone 18N",9001,4617,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2960,"NAD83(CSRS) / UTM zone 19N",9001,4617,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2961,"NAD83(CSRS) / UTM zone 20N",9001,4617,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2962,"NAD83(CSRS) / UTM zone 21N",9001,4617,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2963,"Lisbon 1890 (Lisbon) / Portugal Bonne",9001,4904,19979,9828,1,0,6509,8801,39.4,9110,8802,1,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +2964,"NAD27 / Alaska Albers",9003,4267,15020,9822,1,0,4497,8821,50,9102,8822,-154,9102,8823,55,9102,8824,65,9102,8826,0,9003,8827,0,9003,,,,,,,,,, +2965,"NAD83 / Indiana East (ftUS)",9003,4269,15372,9807,1,0,4497,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,328083.333,9003,8807,820208.333,9003,,,,,,,,,,,,, +2966,"NAD83 / Indiana West (ftUS)",9003,4269,15373,9807,1,0,4497,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,2952750,9003,8807,820208.333,9003,,,,,,,,,,,,, +2967,"NAD83(HARN) / Indiana East (ftUS)",9003,4152,15372,9807,1,0,4497,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,328083.333,9003,8807,820208.333,9003,,,,,,,,,,,,, +2968,"NAD83(HARN) / Indiana West (ftUS)",9003,4152,15373,9807,1,0,4497,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,2952750,9003,8807,820208.333,9003,,,,,,,,,,,,, +2969,"Fort Marigot / UTM zone 20N",9001,4621,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2970,"Guadeloupe 1948 / UTM zone 20N",9001,4622,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2971,"CSG67 / UTM zone 22N",9001,4623,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2972,"RGFG95 / UTM zone 22N",9001,4624,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2973,"Martinique 1938 / UTM zone 20N",9001,4625,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2975,"RGR92 / UTM zone 40S",9001,4627,16140,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2976,"Tahiti 52 / UTM zone 6S",9001,4628,16106,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2977,"Tahaa 54 / UTM zone 5S",9001,4629,16105,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2978,"IGN72 Nuku Hiva / UTM zone 7S",9001,4630,16107,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2979,"K0 1949 / UTM zone 42S",9001,4631,16142,9807,1,1,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2980,"Combani 1950 / UTM zone 38S",9001,4632,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2981,"IGN56 Lifou / UTM zone 58S",9001,4633,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2982,"IGN72 Grand Terre / UTM zone 58S",9001,4634,16158,9807,1,1,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2983,"ST87 Ouvea / UTM zone 58S",9001,4635,16158,9807,1,1,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2984,"RGNC 1991 / Lambert New Caledonia",9001,4645,19981,9802,1,1,4499,8821,-21.3,9110,8822,166,9110,8823,-20.4,9110,8824,-22.2,9110,8826,400000,9001,8827,300000,9001,,,,,,,,,, +2985,"Petrels 1972 / Terre Adelie Polar Stereographic",9001,4636,19983,9830,1,0,1025,8826,300000,9001,8827,200000,9001,8832,-67,9102,8833,140,9102,,,,,,,,,,,,,,,, +2986,"Perroud 1950 / Terre Adelie Polar Stereographic",9001,4637,19983,9830,1,0,1025,8826,300000,9001,8827,200000,9001,8832,-67,9102,8833,140,9102,,,,,,,,,,,,,,,, +2987,"Saint Pierre et Miquelon 1950 / UTM zone 21N",9001,4638,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2988,"MOP78 / UTM zone 1S",9001,4639,16101,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2989,"RRAF 1991 / UTM zone 20N",9001,4640,16020,9807,1,1,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +2990,"Reunion 1947 / TM Reunion",9001,4626,19982,9807,1,1,4499,8801,-21.07,9110,8802,55.32,9110,8805,1,9201,8806,50000,9001,8807,160000,9001,,,,,,,,,,,,, +2991,"NAD83 / Oregon LCC (m)",9001,4269,13633,9802,1,0,4499,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +2992,"NAD83 / Oregon GIC Lambert (ft)",9002,4269,15374,9802,1,0,4495,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,1312335.958,9002,8827,0,9002,,,,,,,,,, +2993,"NAD83(HARN) / Oregon LCC (m)",9001,4152,13633,9802,1,0,4499,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +2994,"NAD83(HARN) / Oregon GIC Lambert (ft)",9002,4152,15374,9802,1,0,4495,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,1312335.958,9002,8827,0,9002,,,,,,,,,, +2995,"IGN53 Mare / UTM zone 58S",9001,4641,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2996,"ST84 Ile des Pins / UTM zone 58S",9001,4642,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2997,"ST71 Belep / UTM zone 58S",9001,4643,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2998,"NEA74 Noumea / UTM zone 58S",9001,4644,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +2999,"Grand Comoros / UTM zone 38S",9001,4646,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3000,"Segara / NEIEZ",9001,4613,19905,9804,1,0,4499,8801,0,9102,8802,110,9102,8805,0.997,9201,8806,3900000,9001,8807,900000,9001,,,,,,,,,,,,, +3001,"Batavia / NEIEZ",9001,4211,19905,9804,1,0,4499,8801,0,9102,8802,110,9102,8805,0.997,9201,8806,3900000,9001,8807,900000,9001,,,,,,,,,,,,, +3002,"Makassar / NEIEZ",9001,4257,19905,9804,1,0,4499,8801,0,9102,8802,110,9102,8805,0.997,9201,8806,3900000,9001,8807,900000,9001,,,,,,,,,,,,, +3003,"Monte Mario / Italy zone 1",9001,4265,18121,9807,1,0,4499,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3004,"Monte Mario / Italy zone 2",9001,4265,18122,9807,1,0,4499,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,2520000,9001,8807,0,9001,,,,,,,,,,,,, +3005,"NAD83 / BC Albers",9001,4269,19984,9822,1,0,4400,8821,45,9102,8822,-126,9102,8823,50,9110,8824,58.3,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +3006,SWEREF99 TM,9001,4619,17333,9807,1,0,4500,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3007,SWEREF99 12 00,9001,4619,17321,9807,1,0,4500,8801,0,9102,8802,12,9102,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3008,SWEREF99 13 30,9001,4619,17322,9807,1,0,4500,8801,0,9110,8802,13.3,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3009,SWEREF99 15 00,9001,4619,17323,9807,1,0,4500,8801,0,9102,8802,15,9102,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3010,SWEREF99 16 30,9001,4619,17324,9807,1,0,4500,8801,0,9110,8802,16.3,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3011,SWEREF99 18 00,9001,4619,17325,9807,1,0,4500,8801,0,9102,8802,18,9102,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3012,SWEREF99 14 15,9001,4619,17326,9807,1,0,4500,8801,0,9110,8802,14.15,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3013,SWEREF99 15 45,9001,4619,17327,9807,1,0,4500,8801,0,9110,8802,15.45,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3014,SWEREF99 17 15,9001,4619,17328,9807,1,0,4500,8801,0,9110,8802,17.15,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3015,SWEREF99 18 45,9001,4619,17329,9807,1,0,4500,8801,0,9110,8802,18.45,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3016,SWEREF99 20 15,9001,4619,17330,9807,1,0,4500,8801,0,9110,8802,20.15,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3017,SWEREF99 21 45,9001,4619,17331,9807,1,0,4500,8801,0,9110,8802,21.45,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3018,SWEREF99 23 15,9001,4619,17332,9807,1,0,4500,8801,0,9110,8802,23.15,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3019,RT90 7.5 gon V,9001,4124,17334,9807,1,0,4530,8801,0,9110,8802,11.18298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3020,RT90 5 gon V,9001,4124,17335,9807,1,0,4530,8801,0,9110,8802,13.33298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3021,RT90 2.5 gon V,9001,4124,19929,9807,1,0,4530,8801,0,9110,8802,15.48298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3022,RT90 0 gon,9001,4124,17336,9807,1,0,4530,8801,0,9110,8802,18.03298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3023,RT90 2.5 gon O,9001,4124,17337,9807,1,0,4530,8801,0,9110,8802,20.18298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3024,RT90 5 gon O,9001,4124,17338,9807,1,0,4530,8801,0,9110,8802,22.33298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3025,RT38 7.5 gon V,9001,4308,17334,9807,1,0,4530,8801,0,9110,8802,11.18298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3026,RT38 5 gon V,9001,4308,17335,9807,1,0,4530,8801,0,9110,8802,13.33298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3027,RT38 2.5 gon V,9001,4308,19929,9807,1,0,4530,8801,0,9110,8802,15.48298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3028,RT38 0 gon,9001,4308,17336,9807,1,0,4530,8801,0,9110,8802,18.03298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3029,RT38 2.5 gon O,9001,4308,17337,9807,1,0,4530,8801,0,9110,8802,20.18298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3030,RT38 5 gon O,9001,4308,17338,9807,1,0,4530,8801,0,9110,8802,22.33298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +3031,"WGS 84 / Antarctic Polar Stereographic",9001,4326,19992,9829,1,0,4490,8806,0,9001,8807,0,9001,8832,-71,9102,8833,0,9102,,,,,,,,,,,,,,,, +3032,"WGS 84 / Australian Antarctic Polar Stereographic",9001,4326,19993,9829,1,0,4489,8806,6000000,9001,8807,6000000,9001,8832,-71,9102,8833,70,9102,,,,,,,,,,,,,,,, +3033,"WGS 84 / Australian Antarctic Lambert",9001,4326,19994,9802,1,0,4400,8821,-50,9110,8822,70,9110,8823,-68.3,9110,8824,-74.3,9110,8826,6000000,9001,8827,6000000,9001,,,,,,,,,, +3034,"ETRS89 / LCC Europe",9001,4258,19985,9802,1,0,4500,8821,52,9102,8822,10,9102,8823,35,9102,8824,65,9102,8826,4000000,9001,8827,2800000,9001,,,,,,,,,, +3035,"ETRS89 / LAEA Europe",9001,4258,19986,9820,1,0,4532,8801,52,9102,8802,10,9102,8806,4321000,9001,8807,3210000,9001,,,,,,,,,,,,,,,, +3036,"Moznet / UTM zone 36S",9001,4130,16136,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3037,"Moznet / UTM zone 37S",9001,4130,16137,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3038,"ETRS89 / TM26",9001,4258,16026,9807,1,1,4500,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3039,"ETRS89 / TM27",9001,4258,16027,9807,1,1,4500,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3040,"ETRS89 / UTM zone 28N (N-E)",9001,4258,16028,9807,1,0,4500,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3041,"ETRS89 / UTM zone 29N (N-E)",9001,4258,16029,9807,1,0,4500,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3042,"ETRS89 / UTM zone 30N (N-E)",9001,4258,16030,9807,1,0,4500,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3043,"ETRS89 / UTM zone 31N (N-E)",9001,4258,16031,9807,1,0,4500,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3044,"ETRS89 / UTM zone 32N (N-E)",9001,4258,16032,9807,1,0,4500,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3045,"ETRS89 / UTM zone 33N (N-E)",9001,4258,16033,9807,1,0,4500,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3046,"ETRS89 / UTM zone 34N (N-E)",9001,4258,16034,9807,1,0,4500,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3047,"ETRS89 / UTM zone 35N (N-E)",9001,4258,16035,9807,1,0,4500,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3048,"ETRS89 / UTM zone 36N (N-E)",9001,4258,16036,9807,1,0,4500,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3049,"ETRS89 / UTM zone 37N (N-E)",9001,4258,16037,9807,1,0,4500,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3050,"ETRS89 / TM38",9001,4258,16038,9807,1,1,4500,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3051,"ETRS89 / TM39",9001,4258,16039,9807,1,1,4500,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3052,"Reykjavik 1900 / Lambert 1900",9001,4657,19987,9826,1,0,4491,8801,65,9110,8802,-19.011965,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3053,"Hjorsey 1955 / Lambert 1955",9001,4658,19988,9826,1,0,4491,8801,65,9102,8802,-18,9102,8805,1,9201,8806,500000,9001,8807,500000,9001,,,,,,,,,,,,, +3054,"Hjorsey 1955 / UTM zone 26N",9001,4658,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3055,"Hjorsey 1955 / UTM zone 27N",9001,4658,16027,9807,1,0,4400,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3056,"Hjorsey 1955 / UTM zone 28N",9001,4658,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3057,"ISN93 / Lambert 1993",9001,4659,19989,9802,1,0,4499,8821,65,9110,8822,-19,9110,8823,64.15,9110,8824,65.45,9110,8826,500000,9001,8827,500000,9001,,,,,,,,,, +3058,"Helle 1954 / Jan Mayen Grid",9001,4660,19991,9807,1,0,4531,8801,0,9110,8802,-8.3,9110,8805,1,9201,8806,50000,9001,8807,-7800000,9001,,,,,,,,,,,,, +3059,"LKS92 / Latvia TM",9001,4661,19990,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,0.9996,9201,8806,500000,9001,8807,-6000000,9001,,,,,,,,,,,,, +3060,"IGN72 Grande Terre / UTM zone 58S",9001,4662,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3061,"Porto Santo 1995 / UTM zone 28N",9001,4663,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3062,"Azores Oriental 1995 / UTM zone 26N",9001,4664,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3063,"Azores Central 1995 / UTM zone 26N",9001,4665,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3064,"IGM95 / UTM zone 32N",9001,4670,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3065,"IGM95 / UTM zone 33N",9001,4670,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3066,"ED50 / Jordan TM",9001,4230,19995,9807,1,0,4400,8801,0,9102,8802,37,9102,8805,0.9998,9201,8806,500000,9001,8807,-3000000,9001,,,,,,,,,,,,, +3067,"ETRS89 / TM35FIN(E,N)",9001,4258,16065,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3068,"DHDN / Soldner Berlin",9001,4314,19996,9806,1,0,4531,8801,52.25071338,9110,8802,13.37379332,9110,8806,40000,9001,8807,10000,9001,,,,,,,,,,,,,,,, +3069,"NAD27 / Wisconsin Transverse Mercator",9001,4267,14811,9807,1,0,4499,8801,0,9102,8802,-90,9102,8805,0.9996,9201,8806,500000,9001,8807,-4500000,9001,,,,,,,,,,,,, +3070,"NAD83 / Wisconsin Transverse Mercator",9001,4269,14841,9807,1,0,4499,8801,0,9102,8802,-90,9102,8805,0.9996,9201,8806,520000,9001,8807,-4480000,9001,,,,,,,,,,,,, +3071,"NAD83(HARN) / Wisconsin Transverse Mercator",9001,4152,14841,9807,1,0,4499,8801,0,9102,8802,-90,9102,8805,0.9996,9201,8806,520000,9001,8807,-4480000,9001,,,,,,,,,,,,, +3072,"NAD83 / Maine CS2000 East",9001,4269,11851,9807,1,0,4499,8801,43.5,9110,8802,-67.523,9110,8805,0.99998,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +3073,"NAD83 / Maine CS2000 Central",9001,4269,11852,9807,1,1,4499,8801,43,9110,8802,-69.073,9110,8805,0.99998,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3074,"NAD83 / Maine CS2000 West",9001,4269,11853,9807,1,0,4499,8801,42.5,9110,8802,-70.223,9110,8805,0.99998,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +3075,"NAD83(HARN) / Maine CS2000 East",9001,4152,11851,9807,1,0,4499,8801,43.5,9110,8802,-67.523,9110,8805,0.99998,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +3076,"NAD83(HARN) / Maine CS2000 Central",9001,4152,11852,9807,1,1,4499,8801,43,9110,8802,-69.073,9110,8805,0.99998,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3077,"NAD83(HARN) / Maine CS2000 West",9001,4152,11853,9807,1,0,4499,8801,42.5,9110,8802,-70.223,9110,8805,0.99998,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +3078,"NAD83 / Michigan Oblique Mercator",9001,4269,12150,9812,1,0,4499,8806,2546731.496,9001,8807,-4354009.816,9001,8811,45.1833,9110,8812,-86,9110,8813,337.25556,9102,8814,337.25556,9102,8815,0.9996,9201,,,,,,, +3079,"NAD83(HARN) / Michigan Oblique Mercator",9001,4152,12150,9812,1,0,4499,8806,2546731.496,9001,8807,-4354009.816,9001,8811,45.1833,9110,8812,-86,9110,8813,337.25556,9102,8814,337.25556,9102,8815,0.9996,9201,,,,,,, +3080,"NAD27 / Shackleford",9002,4267,14252,9802,1,0,4495,8821,31.1,9110,8822,-100,9110,8823,27.25,9110,8824,34.55,9110,8826,3000000,9002,8827,3000000,9002,,,,,,,,,, +3081,"NAD83 / Texas State Mapping System",9001,4269,14251,9802,1,0,4499,8821,31.1,9110,8822,-100,9110,8823,27.25,9110,8824,34.55,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +3082,"NAD83 / Texas Centric Lambert Conformal",9001,4269,14253,9802,1,0,4499,8821,18,9110,8822,-100,9110,8823,27.3,9110,8824,35,9110,8826,1500000,9001,8827,5000000,9001,,,,,,,,,, +3083,"NAD83 / Texas Centric Albers Equal Area",9001,4269,14254,9822,1,0,4499,8821,18,9110,8822,-100,9110,8823,27.3,9110,8824,35,9110,8826,1500000,9001,8827,6000000,9001,,,,,,,,,, +3084,"NAD83(HARN) / Texas Centric Lambert Conformal",9001,4152,14253,9802,1,0,4499,8821,18,9110,8822,-100,9110,8823,27.3,9110,8824,35,9110,8826,1500000,9001,8827,5000000,9001,,,,,,,,,, +3085,"NAD83(HARN) / Texas Centric Albers Equal Area",9001,4152,14254,9822,1,0,4499,8821,18,9110,8822,-100,9110,8823,27.3,9110,8824,35,9110,8826,1500000,9001,8827,6000000,9001,,,,,,,,,, +3086,"NAD83 / Florida GDL Albers",9001,4269,10934,9822,1,0,4499,8821,24,9110,8822,-84,9110,8823,24,9110,8824,31.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +3087,"NAD83(HARN) / Florida GDL Albers",9001,4152,10934,9822,1,0,4499,8821,24,9110,8822,-84,9110,8823,24,9110,8824,31.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +3088,"NAD83 / Kentucky Single Zone",9001,4269,11630,9802,1,0,4499,8821,36.2,9110,8822,-85.45,9110,8823,37.05,9110,8824,38.4,9110,8826,1500000,9001,8827,1000000,9001,,,,,,,,,, +3089,"NAD83 / Kentucky Single Zone (ftUS)",9003,4269,15375,9802,1,0,4497,8821,36.2,9110,8822,-85.45,9110,8823,37.05,9110,8824,38.4,9110,8826,4921250,9003,8827,3280833.333,9003,,,,,,,,,, +3090,"NAD83(HARN) / Kentucky Single Zone",9001,4152,11630,9802,1,0,4499,8821,36.2,9110,8822,-85.45,9110,8823,37.05,9110,8824,38.4,9110,8826,1500000,9001,8827,1000000,9001,,,,,,,,,, +3091,"NAD83(HARN) / Kentucky Single Zone (ftUS)",9003,4152,15375,9802,1,0,4497,8821,36.2,9110,8822,-85.45,9110,8823,37.05,9110,8824,38.4,9110,8826,4921250,9003,8827,3280833.333,9003,,,,,,,,,, +3092,"Tokyo / UTM zone 51N",9001,4301,16051,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3093,"Tokyo / UTM zone 52N",9001,4301,16052,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3094,"Tokyo / UTM zone 53N",9001,4301,16053,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3095,"Tokyo / UTM zone 54N",9001,4301,16054,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3096,"Tokyo / UTM zone 55N",9001,4301,16055,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3097,"JGD2000 / UTM zone 51N",9001,4612,16051,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3098,"JGD2000 / UTM zone 52N",9001,4612,16052,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3099,"JGD2000 / UTM zone 53N",9001,4612,16053,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3100,"JGD2000 / UTM zone 54N",9001,4612,16054,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3101,"JGD2000 / UTM zone 55N",9001,4612,16055,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3102,"American Samoa 1962 / American Samoa Lambert",9003,4169,15376,9801,1,0,4497,8801,-14.16,9110,8802,-170,9110,8805,1,9201,8806,500000,9003,8807,312234.65,9003,,,,,,,,,,,,, +3103,"Mauritania 1999 / UTM zone 28N",9001,4681,16028,9807,1,1,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3104,"Mauritania 1999 / UTM zone 29N",9001,4681,16029,9807,1,1,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3105,"Mauritania 1999 / UTM zone 30N",9001,4681,16030,9807,1,1,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3106,"Gulshan 303 / Bangladesh Transverse Mercator",9001,4682,16490,9807,1,0,4400,8801,0,9102,8802,90,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3107,"GDA94 / SA Lambert",9001,4283,17359,9802,1,0,4400,8821,-32,9102,8822,135,9102,8823,-28,9102,8824,-36,9102,8826,1000000,9001,8827,2000000,9001,,,,,,,,,, +3108,"ETRS89 / Guernsey Grid",9001,4258,19998,9807,1,0,4400,8801,49.3,9110,8802,-2.25,9110,8805,0.999997,9201,8806,47000,9001,8807,50000,9001,,,,,,,,,,,,, +3109,"ETRS89 / Jersey Transverse Mercator",9001,4258,19999,9807,1,0,4400,8801,49.225,9102,8802,-2.135,9102,8805,0.9999999,9201,8806,40000,9001,8807,70000,9001,,,,,,,,,,,,, +3110,"AGD66 / Vicgrid66",9001,4202,17360,9802,1,0,4400,8821,-37,9102,8822,145,9102,8823,-36,9102,8824,-38,9102,8826,2500000,9001,8827,4500000,9001,,,,,,,,,, +3111,"GDA94 / Vicgrid",9001,4283,17361,9802,1,0,4400,8821,-37,9102,8822,145,9102,8823,-36,9102,8824,-38,9102,8826,2500000,9001,8827,2500000,9001,,,,,,,,,, +3112,"GDA94 / Geoscience Australia Lambert",9001,4283,17362,9802,1,0,4400,8821,0,9102,8822,134,9102,8823,-18,9102,8824,-36,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3113,"GDA94 / BCSG02",9001,4283,17363,9807,1,0,4400,8801,-28,9102,8802,153,9102,8805,0.99999,9201,8806,50000,9001,8807,100000,9001,,,,,,,,,,,,, +3114,"MAGNA-SIRGAS / Colombia Far West zone",9001,4686,18055,9807,1,0,4500,8801,4.35463215,9110,8802,-80.04390285,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +3115,"MAGNA-SIRGAS / Colombia West zone",9001,4686,18056,9807,1,0,4500,8801,4.35463215,9110,8802,-77.04390285,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +3116,"MAGNA-SIRGAS / Colombia Bogota zone",9001,4686,18057,9807,1,0,4500,8801,4.35463215,9110,8802,-74.04390285,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +3117,"MAGNA-SIRGAS / Colombia East Central zone",9001,4686,18058,9807,1,0,4500,8801,4.35463215,9110,8802,-71.04390285,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +3118,"MAGNA-SIRGAS / Colombia East zone",9001,4686,18059,9807,1,0,4500,8801,4.35463215,9110,8802,-68.04390285,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +3119,"Douala 1948 / AEF west",9001,4192,18415,9807,1,0,4400,8801,0,9110,8802,10.3,9110,8805,0.999,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +3120,"Pulkovo 1942(58) / Poland zone I",9001,4179,18280,9809,1,0,4530,8801,50.373,9110,8802,21.05,9110,8805,0.9998,9201,8806,4637000,9001,8807,5467000,9001,,,,,,,,,,,,, +3121,"PRS92 / Philippines zone 1",9001,4683,18171,9807,1,0,4499,8801,0,9102,8802,117,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3122,"PRS92 / Philippines zone 2",9001,4683,18172,9807,1,0,4499,8801,0,9102,8802,119,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3123,"PRS92 / Philippines zone 3",9001,4683,18173,9807,1,0,4499,8801,0,9102,8802,121,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3124,"PRS92 / Philippines zone 4",9001,4683,18174,9807,1,0,4499,8801,0,9102,8802,123,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3125,"PRS92 / Philippines zone 5",9001,4683,18175,9807,1,0,4499,8801,0,9102,8802,125,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3126,"ETRS89 / ETRS-GK19FIN",9001,4258,18183,9807,1,0,4500,8801,0,9102,8802,19,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3127,"ETRS89 / ETRS-GK20FIN",9001,4258,18184,9807,1,0,4500,8801,0,9102,8802,20,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3128,"ETRS89 / ETRS-GK21FIN",9001,4258,18185,9807,1,0,4500,8801,0,9102,8802,21,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3129,"ETRS89 / ETRS-GK22FIN",9001,4258,18186,9807,1,0,4500,8801,0,9102,8802,22,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3130,"ETRS89 / ETRS-GK23FIN",9001,4258,18187,9807,1,0,4500,8801,0,9102,8802,23,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3131,"ETRS89 / ETRS-GK24FIN",9001,4258,18188,9807,1,0,4500,8801,0,9102,8802,24,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3132,"ETRS89 / ETRS-GK25FIN",9001,4258,18189,9807,1,0,4500,8801,0,9102,8802,25,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3133,"ETRS89 / ETRS-GK26FIN",9001,4258,18190,9807,1,0,4500,8801,0,9102,8802,26,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3134,"ETRS89 / ETRS-GK27FIN",9001,4258,18195,9807,1,0,4500,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3135,"ETRS89 / ETRS-GK28FIN",9001,4258,18196,9807,1,0,4500,8801,0,9102,8802,28,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3136,"ETRS89 / ETRS-GK29FIN",9001,4258,18197,9807,1,0,4500,8801,0,9102,8802,29,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3137,"ETRS89 / ETRS-GK30FIN",9001,4258,18198,9807,1,0,4500,8801,0,9102,8802,30,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3138,"ETRS89 / ETRS-GK31FIN",9001,4258,18199,9807,1,0,4500,8801,0,9102,8802,31,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3139,"Vanua Levu 1915 / Vanua Levu Grid",9098,4748,19878,9833,1,0,4533,8801,-16.15,9110,8802,179.2,9110,8806,1251331.8,9098,8807,1662888.5,9098,,,,,,,,,,,,,,,, +3140,"Viti Levu 1912 / Viti Levu Grid",9098,4752,19879,9806,1,0,4533,8801,-18,9102,8802,178,9102,8806,544000,9098,8807,704000,9098,,,,,,,,,,,,,,,, +3141,"Fiji 1956 / UTM zone 60S",9001,4721,16160,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3142,"Fiji 1956 / UTM zone 1S",9001,4721,16101,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3143,"Fiji 1986 / Fiji Map Grid",9001,4720,19880,9807,1,1,4400,8801,-17,9110,8802,178.45,9110,8805,0.99985,9001,8806,2000000,9001,8807,4000000,9001,,,,,,,,,,,,, +3144,"FD54 / Faroe Lambert",9001,4741,19870,9826,1,0,1031,8801,62,9102,8802,-9,9102,8805,1,9201,8806,500000,9001,8807,500000,9001,,,,,,,,,,,,, +3145,"ETRS89 / Faroe Lambert",9001,4258,19870,9826,1,0,1031,8801,62,9102,8802,-9,9102,8805,1,9201,8806,500000,9001,8807,500000,9001,,,,,,,,,,,,, +3146,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 6",9001,4284,16266,9807,1,1,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +3147,"Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E",9001,4284,16366,9807,1,1,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3148,"Indian 1960 / UTM zone 48N",9001,4131,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3149,"Indian 1960 / UTM zone 49N",9001,4131,16049,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3150,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 6",9001,4200,16266,9807,1,1,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +3151,"Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E",9001,4200,16366,9807,1,1,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3152,ST74,9001,4619,19876,9807,1,0,4531,8801,0,9110,8802,18.0328044,9110,8805,0.99999425,9201,8806,100178.1808,9001,8807,-6500614.7836,9001,,,,,,,,,,,,, +3153,"NAD83(CSRS) / BC Albers",9001,4617,19984,9822,1,0,4400,8821,45,9102,8822,-126,9102,8823,50,9110,8824,58.3,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +3154,"NAD83(CSRS) / UTM zone 7N",9001,4617,16007,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3155,"NAD83(CSRS) / UTM zone 8N",9001,4617,16008,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3156,"NAD83(CSRS) / UTM zone 9N",9001,4617,16009,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3157,"NAD83(CSRS) / UTM zone 10N",9001,4617,16010,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3158,"NAD83(CSRS) / UTM zone 14N",9001,4617,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3159,"NAD83(CSRS) / UTM zone 15N",9001,4617,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3160,"NAD83(CSRS) / UTM zone 16N",9001,4617,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3161,"NAD83 / Ontario MNR Lambert",9001,4269,19875,9802,1,0,4400,8821,0,9102,8822,-85,9102,8823,44.5,9102,8824,53.5,9102,8826,930000,9001,8827,6430000,9001,,,,,,,,,, +3162,"NAD83(CSRS) / Ontario MNR Lambert",9001,4617,19875,9802,1,0,4400,8821,0,9102,8822,-85,9102,8823,44.5,9102,8824,53.5,9102,8826,930000,9001,8827,6430000,9001,,,,,,,,,, +3163,"RGNC91-93 / Lambert New Caledonia",9001,4749,19981,9802,1,0,4499,8821,-21.3,9110,8822,166,9110,8823,-20.4,9110,8824,-22.2,9110,8826,400000,9001,8827,300000,9001,,,,,,,,,, +3164,"ST87 Ouvea / UTM zone 58S",9001,4750,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3165,"NEA74 Noumea / Noumea Lambert",9001,4644,19873,9802,1,0,4499,8821,-22.16108903,9110,8822,166.26327327,9110,8823,-22.14408903,9110,8824,-22.17408903,9110,8826,0.66,9001,8827,1.02,9001,,,,,,,,,, +3166,"NEA74 Noumea / Noumea Lambert 2",9001,4644,19874,9802,1,0,4499,8821,-22.1611,9110,8822,166.2633,9110,8823,-22.1441,9110,8824,-22.1741,9110,8826,8.313,9001,8827,-2.354,9001,,,,,,,,,, +3167,"Kertau (RSO) / RSO Malaya (ch)",9301,4751,19871,9812,1,0,4410,8806,40000,9301,8807,0,9301,8811,4,9110,8812,102.15,9110,8813,323.01328458,9110,8814,323.07483685,9110,8815,0.99984,9201,,,,,,, +3168,"Kertau (RSO) / RSO Malaya (m)",9001,4751,19872,9812,1,0,4400,8806,804670.24,9001,8807,0,9001,8811,4,9110,8812,102.15,9110,8813,323.01328458,9110,8814,323.07483685,9110,8815,0.99984,9201,,,,,,, +3169,"RGNC91-93 / UTM zone 57S",9001,4749,16157,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3170,"RGNC91-93 / UTM zone 58S",9001,4749,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3171,"RGNC91-93 / UTM zone 59S",9001,4749,16159,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3172,"IGN53 Mare / UTM zone 59S",9001,4641,16159,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3173,"fk89 / Faroe Lambert FK89",9001,4753,19877,9826,1,0,1031,8801,62,9102,8802,-9,9102,8805,1,9201,8806,700000,9001,8807,700000,9001,,,,,,,,,,,,, +3174,"NAD83 / Great Lakes Albers",9001,4269,15397,9822,1,0,4499,8821,45.568977,9102,8822,-84.455955,9102,8823,42.122774,9102,8824,49.01518,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +3175,"NAD83 / Great Lakes and St Lawrence Albers",9001,4269,15398,9822,1,0,4499,8821,45.568977,9102,8822,-83.248627,9102,8823,42.122774,9102,8824,49.01518,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +3176,"Indian 1960 / TM 106 NE",9001,4131,16506,9807,1,0,4400,8801,0,9102,8802,106,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3177,"LGD2006 / Libya TM",9001,4754,18319,9807,1,0,4499,8801,0,9102,8802,17,9102,8805,0.9965,9201,8806,1000000,9001,8807,0,9001,,,,,,,,,,,,, +3178,"GR96 / UTM zone 18N",9001,4747,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3179,"GR96 / UTM zone 19N",9001,4747,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3180,"GR96 / UTM zone 20N",9001,4747,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3181,"GR96 / UTM zone 21N",9001,4747,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3182,"GR96 / UTM zone 22N",9001,4747,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3183,"GR96 / UTM zone 23N",9001,4747,16023,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3184,"GR96 / UTM zone 24N",9001,4747,16024,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3185,"GR96 / UTM zone 25N",9001,4747,16025,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3186,"GR96 / UTM zone 26N",9001,4747,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3187,"GR96 / UTM zone 27N",9001,4747,16027,9807,1,0,4400,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3188,"GR96 / UTM zone 28N",9001,4747,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3189,"GR96 / UTM zone 29N",9001,4747,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3190,"LGD2006 / Libya TM zone 5",9001,4754,18310,9807,1,0,4499,8801,0,9102,8802,9,9102,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3191,"LGD2006 / Libya TM zone 6",9001,4754,18311,9807,1,0,4499,8801,0,9102,8802,11,9102,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3192,"LGD2006 / Libya TM zone 7",9001,4754,18312,9807,1,0,4499,8801,0,9102,8802,13,9102,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3193,"LGD2006 / Libya TM zone 8",9001,4754,18313,9807,1,0,4499,8801,0,9102,8802,15,9102,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3194,"LGD2006 / Libya TM zone 9",9001,4754,18314,9807,1,0,4499,8801,0,9102,8802,17,9102,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3195,"LGD2006 / Libya TM zone 10",9001,4754,18315,9807,1,0,4499,8801,0,9102,8802,19,9102,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3196,"LGD2006 / Libya TM zone 11",9001,4754,18316,9807,1,0,4499,8801,0,9102,8802,21,9102,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3197,"LGD2006 / Libya TM zone 12",9001,4754,18317,9807,1,0,4499,8801,0,9102,8802,23,9102,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3198,"LGD2006 / Libya TM zone 13",9001,4754,18318,9807,1,0,4499,8801,0,9102,8802,25,9102,8805,0.99995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3199,"LGD2006 / UTM zone 32N",9001,4754,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3200,"FD58 / Iraq zone",9001,4132,19906,9801,1,0,4400,8801,32.3,9110,8802,45,9110,8805,0.9987864078,9201,8806,1500000,9001,8807,1166200,9001,,,,,,,,,,,,, +3201,"LGD2006 / UTM zone 33N",9001,4754,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3202,"LGD2006 / UTM zone 34N",9001,4754,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3203,"LGD2006 / UTM zone 35N",9001,4754,16035,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3204,"WGS 84 / SCAR IMW SP19-20",9001,4326,17204,9802,1,0,4400,8821,-90,9102,8822,-66,9102,8823,-60.4,9110,8824,-63.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3205,"WGS 84 / SCAR IMW SP21-22",9001,4326,17205,9802,1,0,4400,8821,-90,9102,8822,-54,9102,8823,-60.4,9110,8824,-63.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3206,"WGS 84 / SCAR IMW SP23-24",9001,4326,17206,9802,1,0,4400,8821,-90,9102,8822,-42,9102,8823,-60.4,9110,8824,-63.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3207,"WGS 84 / SCAR IMW SQ01-02",9001,4326,17207,9802,1,0,4400,8821,-90,9102,8822,-174,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3208,"WGS 84 / SCAR IMW SQ19-20",9001,4326,17208,9802,1,0,4400,8821,-90,9102,8822,-66,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3209,"WGS 84 / SCAR IMW SQ21-22",9001,4326,17209,9802,1,0,4400,8821,-90,9102,8822,-54,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3210,"WGS 84 / SCAR IMW SQ37-38",9001,4326,17210,9802,1,0,4400,8821,-90,9102,8822,42,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3211,"WGS 84 / SCAR IMW SQ39-40",9001,4326,17211,9802,1,0,4400,8821,-90,9102,8822,54,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3212,"WGS 84 / SCAR IMW SQ41-42",9001,4326,17212,9802,1,0,4400,8821,-90,9102,8822,66,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3213,"WGS 84 / SCAR IMW SQ43-44",9001,4326,17213,9802,1,0,4400,8821,-90,9102,8822,78,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3214,"WGS 84 / SCAR IMW SQ45-46",9001,4326,17214,9802,1,0,4400,8821,-90,9102,8822,90,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3215,"WGS 84 / SCAR IMW SQ47-48",9001,4326,17215,9802,1,0,4400,8821,-90,9102,8822,102,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3216,"WGS 84 / SCAR IMW SQ49-50",9001,4326,17216,9802,1,0,4400,8821,-90,9102,8822,114,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3217,"WGS 84 / SCAR IMW SQ51-52",9001,4326,17217,9802,1,0,4400,8821,-90,9102,8822,126,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3218,"WGS 84 / SCAR IMW SQ53-54",9001,4326,17218,9802,1,0,4400,8821,-90,9102,8822,138,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3219,"WGS 84 / SCAR IMW SQ55-56",9001,4326,17219,9802,1,0,4400,8821,-90,9102,8822,150,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3220,"WGS 84 / SCAR IMW SQ57-58",9001,4326,17220,9802,1,0,4400,8821,-90,9102,8822,162,9102,8823,-64.4,9110,8824,-67.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3221,"WGS 84 / SCAR IMW SR13-14",9001,4326,17221,9802,1,0,4400,8821,-90,9102,8822,-102,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3222,"WGS 84 / SCAR IMW SR15-16",9001,4326,17222,9802,1,0,4400,8821,-90,9102,8822,-90,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3223,"WGS 84 / SCAR IMW SR17-18",9001,4326,17223,9802,1,0,4400,8821,-90,9102,8822,-78,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3224,"WGS 84 / SCAR IMW SR19-20",9001,4326,17224,9802,1,0,4400,8821,-90,9102,8822,-66,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3225,"WGS 84 / SCAR IMW SR27-28",9001,4326,17225,9802,1,0,4400,8821,-90,9102,8822,-18,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3226,"WGS 84 / SCAR IMW SR29-30",9001,4326,17226,9802,1,0,4400,8821,-90,9102,8822,-6,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3227,"WGS 84 / SCAR IMW SR31-32",9001,4326,17227,9802,1,0,4400,8821,-90,9102,8822,6,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3228,"WGS 84 / SCAR IMW SR33-34",9001,4326,17228,9802,1,0,4400,8821,-90,9102,8822,18,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3229,"WGS 84 / SCAR IMW SR35-36",9001,4326,17229,9802,1,0,4400,8821,-90,9102,8822,30,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3230,"WGS 84 / SCAR IMW SR37-38",9001,4326,17230,9802,1,0,4400,8821,-90,9102,8822,42,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3231,"WGS 84 / SCAR IMW SR39-40",9001,4326,17231,9802,1,0,4400,8821,-90,9102,8822,54,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3232,"WGS 84 / SCAR IMW SR41-42",9001,4326,17232,9802,1,0,4400,8821,-90,9102,8822,66,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3233,"WGS 84 / SCAR IMW SR43-44",9001,4326,17233,9802,1,0,4400,8821,-90,9102,8822,78,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3234,"WGS 84 / SCAR IMW SR45-46",9001,4326,17234,9802,1,0,4400,8821,-90,9102,8822,90,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3235,"WGS 84 / SCAR IMW SR47-48",9001,4326,17235,9802,1,0,4400,8821,-90,9102,8822,102,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3236,"WGS 84 / SCAR IMW SR49-50",9001,4326,17236,9802,1,0,4400,8821,-90,9102,8822,114,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3237,"WGS 84 / SCAR IMW SR51-52",9001,4326,17237,9802,1,0,4400,8821,-90,9102,8822,126,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3238,"WGS 84 / SCAR IMW SR53-54",9001,4326,17238,9802,1,0,4400,8821,-90,9102,8822,138,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3239,"WGS 84 / SCAR IMW SR55-56",9001,4326,17239,9802,1,0,4400,8821,-90,9102,8822,150,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3240,"WGS 84 / SCAR IMW SR57-58",9001,4326,17240,9802,1,0,4400,8821,-90,9102,8822,162,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3241,"WGS 84 / SCAR IMW SR59-60",9001,4326,17241,9802,1,0,4400,8821,-90,9102,8822,174,9102,8823,-68.4,9110,8824,-71.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3242,"WGS 84 / SCAR IMW SS04-06",9001,4326,17242,9802,1,0,4400,8821,-90,9102,8822,-153,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3243,"WGS 84 / SCAR IMW SS07-09",9001,4326,17243,9802,1,0,4400,8821,-90,9102,8822,-135,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3244,"WGS 84 / SCAR IMW SS10-12",9001,4326,17244,9802,1,0,4400,8821,-90,9102,8822,-117,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3245,"WGS 84 / SCAR IMW SS13-15",9001,4326,17245,9802,1,0,4400,8821,-90,9102,8822,-99,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3246,"WGS 84 / SCAR IMW SS16-18",9001,4326,17246,9802,1,0,4400,8821,-90,9102,8822,-81,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3247,"WGS 84 / SCAR IMW SS19-21",9001,4326,17247,9802,1,0,4400,8821,-90,9102,8822,-63,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3248,"WGS 84 / SCAR IMW SS25-27",9001,4326,17248,9802,1,0,4400,8821,-90,9102,8822,-27,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3249,"WGS 84 / SCAR IMW SS28-30",9001,4326,17249,9802,1,0,4400,8821,-90,9102,8822,-9,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3250,"WGS 84 / SCAR IMW SS31-33",9001,4326,17250,9802,1,0,4400,8821,-90,9102,8822,9,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3251,"WGS 84 / SCAR IMW SS34-36",9001,4326,17251,9802,1,0,4400,8821,-90,9102,8822,27,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3252,"WGS 84 / SCAR IMW SS37-39",9001,4326,17252,9802,1,0,4400,8821,-90,9102,8822,45,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3253,"WGS 84 / SCAR IMW SS40-42",9001,4326,17253,9802,1,0,4400,8821,-90,9102,8822,63,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3254,"WGS 84 / SCAR IMW SS43-45",9001,4326,17254,9802,1,0,4400,8821,-90,9102,8822,81,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3255,"WGS 84 / SCAR IMW SS46-48",9001,4326,17255,9802,1,0,4400,8821,-90,9102,8822,99,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3256,"WGS 84 / SCAR IMW SS49-51",9001,4326,17256,9802,1,0,4400,8821,-90,9102,8822,117,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3257,"WGS 84 / SCAR IMW SS52-54",9001,4326,17257,9802,1,0,4400,8821,-90,9102,8822,135,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3258,"WGS 84 / SCAR IMW SS55-57",9001,4326,17258,9802,1,0,4400,8821,-90,9102,8822,153,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3259,"WGS 84 / SCAR IMW SS58-60",9001,4326,17259,9802,1,0,4400,8821,-90,9102,8822,171,9102,8823,-72.4,9110,8824,-75.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3260,"WGS 84 / SCAR IMW ST01-04",9001,4326,17260,9802,1,0,4400,8821,-90,9102,8822,-168,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3261,"WGS 84 / SCAR IMW ST05-08",9001,4326,17261,9802,1,0,4400,8821,-90,9102,8822,-144,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3262,"WGS 84 / SCAR IMW ST09-12",9001,4326,17262,9802,1,0,4400,8821,-90,9102,8822,-120,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3263,"WGS 84 / SCAR IMW ST13-16",9001,4326,17263,9802,1,0,4400,8821,-90,9102,8822,-96,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3264,"WGS 84 / SCAR IMW ST17-20",9001,4326,17264,9802,1,0,4400,8821,-90,9102,8822,-72,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3265,"WGS 84 / SCAR IMW ST21-24",9001,4326,17265,9802,1,0,4400,8821,-90,9102,8822,-48,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3266,"WGS 84 / SCAR IMW ST25-28",9001,4326,17266,9802,1,0,4400,8821,-90,9102,8822,-24,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3267,"WGS 84 / SCAR IMW ST29-32",9001,4326,17267,9802,1,0,4400,8821,-90,9102,8822,0,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3268,"WGS 84 / SCAR IMW ST33-36",9001,4326,17268,9802,1,0,4400,8821,-90,9102,8822,24,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3269,"WGS 84 / SCAR IMW ST37-40",9001,4326,17269,9802,1,0,4400,8821,-90,9102,8822,48,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3270,"WGS 84 / SCAR IMW ST41-44",9001,4326,17270,9802,1,0,4400,8821,-90,9102,8822,72,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3271,"WGS 84 / SCAR IMW ST45-48",9001,4326,17271,9802,1,0,4400,8821,-90,9102,8822,96,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3272,"WGS 84 / SCAR IMW ST49-52",9001,4326,17272,9802,1,0,4400,8821,-90,9102,8822,120,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3273,"WGS 84 / SCAR IMW ST53-56",9001,4326,17273,9802,1,0,4400,8821,-90,9102,8822,144,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3274,"WGS 84 / SCAR IMW ST57-60",9001,4326,17274,9802,1,0,4400,8821,-90,9102,8822,168,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3275,"WGS 84 / SCAR IMW SU01-05",9001,4326,17275,9829,1,0,4471,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,-165,9102,,,,,,,,,,,,,,,, +3276,"WGS 84 / SCAR IMW SU06-10",9001,4326,17276,9829,1,0,4473,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,-135,9102,,,,,,,,,,,,,,,, +3277,"WGS 84 / SCAR IMW SU11-15",9001,4326,17277,9829,1,0,4474,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,-105,9102,,,,,,,,,,,,,,,, +3278,"WGS 84 / SCAR IMW SU16-20",9001,4326,17278,9829,1,0,4476,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,-75,9102,,,,,,,,,,,,,,,, +3279,"WGS 84 / SCAR IMW SU21-25",9001,4326,17279,9829,1,0,4477,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,-45,9102,,,,,,,,,,,,,,,, +3280,"WGS 84 / SCAR IMW SU26-30",9001,4326,17280,9829,1,0,4479,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,-15,9102,,,,,,,,,,,,,,,, +3281,"WGS 84 / SCAR IMW SU31-35",9001,4326,17281,9829,1,0,4480,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,15,9102,,,,,,,,,,,,,,,, +3282,"WGS 84 / SCAR IMW SU36-40",9001,4326,17282,9829,1,0,4482,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,45,9102,,,,,,,,,,,,,,,, +3283,"WGS 84 / SCAR IMW SU41-45",9001,4326,17283,9829,1,0,4483,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,75,9102,,,,,,,,,,,,,,,, +3284,"WGS 84 / SCAR IMW SU46-50",9001,4326,17284,9829,1,0,4485,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,105,9102,,,,,,,,,,,,,,,, +3285,"WGS 84 / SCAR IMW SU51-55",9001,4326,17285,9829,1,0,4486,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,135,9102,,,,,,,,,,,,,,,, +3286,"WGS 84 / SCAR IMW SU56-60",9001,4326,17286,9829,1,0,4488,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,165,9102,,,,,,,,,,,,,,,, +3287,"WGS 84 / SCAR IMW SV01-10",9001,4326,17287,9829,1,0,4472,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,-150,9102,,,,,,,,,,,,,,,, +3288,"WGS 84 / SCAR IMW SV11-20",9001,4326,17288,9829,1,0,4475,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,-90,9102,,,,,,,,,,,,,,,, +3289,"WGS 84 / SCAR IMW SV21-30",9001,4326,17289,9829,1,0,4478,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,-30,9102,,,,,,,,,,,,,,,, +3290,"WGS 84 / SCAR IMW SV31-40",9001,4326,17290,9829,1,0,4481,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,30,9102,,,,,,,,,,,,,,,, +3291,"WGS 84 / SCAR IMW SV41-50",9001,4326,17291,9829,1,0,4484,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,90,9102,,,,,,,,,,,,,,,, +3292,"WGS 84 / SCAR IMW SV51-60",9001,4326,17292,9829,1,0,4487,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,150,9102,,,,,,,,,,,,,,,, +3293,"WGS 84 / SCAR IMW SW01-60",9001,4326,17293,9829,1,0,4490,8806,0,9001,8807,0,9001,8832,-80.1419,9110,8833,0,9102,,,,,,,,,,,,,,,, +3294,"WGS 84 / USGS Transantarctic Mountains",9001,4326,17294,9802,1,0,4400,8821,-78,9102,8822,162,9102,8823,-76.4,9110,8824,-79.2,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3295,"Guam 1963 / Yap Islands",9001,4675,15399,9832,1,0,4499,8801,9.324815,9110,8802,138.100748,9110,8806,40000,9001,8807,60000,9001,,,,,,,,,,,,,,,, +3296,"RGPF / UTM zone 5S",9001,4687,16105,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3297,"RGPF / UTM zone 6S",9001,4687,16106,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3298,"RGPF / UTM zone 7S",9001,4687,16107,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3299,"RGPF / UTM zone 8S",9001,4687,16108,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3300,Estonian Coordinate System of 1992,9001,4133,19938,9802,1,0,4530,8821,57.310319415,9110,8822,24,9110,8823,59.2,9110,8824,58,9110,8826,500000,9001,8827,6375000,9001,,,,,,,,,, +3301,Estonian Coordinate System of 1997,9001,4180,19938,9802,1,0,4530,8821,57.310319415,9110,8822,24,9110,8823,59.2,9110,8824,58,9110,8826,500000,9001,8827,6375000,9001,,,,,,,,,, +3302,"IGN63 Hiva Oa / UTM zone 7S",9001,4689,16107,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3303,"Fatu Iva 72 / UTM zone 7S",9001,4688,16107,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3304,"Tahiti 79 / UTM zone 6S",9001,4690,16106,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3305,"Moorea 87 / UTM zone 6S",9001,4691,16106,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3306,"Maupiti 83 / UTM zone 5S",9001,4692,16105,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3307,"Nakhl-e Ghanem / UTM zone 39N",9001,4693,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3308,"GDA94 / NSW Lambert",9001,4283,17364,9802,1,0,4400,8821,-33.25,9102,8822,147,9102,8823,-30.75,9102,8824,-35.75,9102,8826,9300000,9001,8827,4500000,9001,,,,,,,,,, +3309,"NAD27 / California Albers",9001,4267,10420,9822,1,0,4499,8821,0,9102,8822,-120,9102,8823,34,9102,8824,40.5,9102,8826,0,9001,8827,-4000000,9001,,,,,,,,,, +3310,"NAD83 / California Albers",9001,4269,10420,9822,1,0,4499,8821,0,9102,8822,-120,9102,8823,34,9102,8824,40.5,9102,8826,0,9001,8827,-4000000,9001,,,,,,,,,, +3311,"NAD83(HARN) / California Albers",9001,4152,10420,9822,1,0,4499,8821,0,9102,8822,-120,9102,8823,34,9102,8824,40.5,9102,8826,0,9001,8827,-4000000,9001,,,,,,,,,, +3312,"CSG67 / UTM zone 21N",9001,4623,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3313,"RGFG95 / UTM zone 21N",9001,4624,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3314,"Katanga 1955 / Katanga Lambert",9001,4695,17401,9802,1,1,4400,8821,0,9102,8822,26,9102,8823,-6.5,9102,8824,-11.5,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3315,"Katanga 1955 / Katanga TM",9001,4695,17402,9807,1,1,4400,8801,-9,9102,8802,26,9102,8805,0.9998,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3316,"Kasai 1953 / Congo TM zone 22",9001,4696,17422,9807,1,0,4400,8801,0,9102,8802,22,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3317,"Kasai 1953 / Congo TM zone 24",9001,4696,17424,9807,1,0,4400,8801,0,9102,8802,24,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3318,"IGC 1962 / Congo TM zone 12",9001,4697,17412,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3319,"IGC 1962 / Congo TM zone 14",9001,4697,17414,9807,1,0,4400,8801,0,9102,8802,14,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3320,"IGC 1962 / Congo TM zone 16",9001,4697,17416,9807,1,0,4400,8801,0,9102,8802,16,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3321,"IGC 1962 / Congo TM zone 18",9001,4697,17418,9807,1,0,4400,8801,0,9102,8802,18,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3322,"IGC 1962 / Congo TM zone 20",9001,4697,17420,9807,1,0,4400,8801,0,9102,8802,20,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3323,"IGC 1962 / Congo TM zone 22",9001,4697,17422,9807,1,0,4400,8801,0,9102,8802,22,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3324,"IGC 1962 / Congo TM zone 24",9001,4697,17424,9807,1,0,4400,8801,0,9102,8802,24,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3325,"IGC 1962 / Congo TM zone 26",9001,4697,17426,9807,1,0,4400,8801,0,9102,8802,26,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3326,"IGC 1962 / Congo TM zone 28",9001,4697,17428,9807,1,0,4400,8801,0,9102,8802,28,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3327,"IGC 1962 / Congo TM zone 30",9001,4697,17430,9807,1,0,4400,8801,0,9102,8802,30,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3328,"Pulkovo 1942(58) / GUGiK-80",9001,4179,18286,9809,1,0,4530,8801,52.1,9110,8802,19.1,9110,8805,0.999714,9201,8806,500000,9001,8807,500000,9001,,,,,,,,,,,,, +3329,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5",9001,4179,16265,9807,1,0,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +3330,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6",9001,4179,16266,9807,1,0,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +3331,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7",9001,4179,16267,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +3332,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8",9001,4179,16268,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +3333,"Pulkovo 1942(58) / Gauss-Kruger zone 3",9001,4179,16203,9807,1,0,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +3334,"Pulkovo 1942(58) / Gauss-Kruger zone 4",9001,4179,16204,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +3335,"Pulkovo 1942(58) / Gauss-Kruger zone 5",9001,4179,16205,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +3336,"IGN 1962 Kerguelen / UTM zone 42S",9001,4698,16142,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3337,"Le Pouce 1934 / Mauritius Grid",9001,4699,19899,9801,1,0,4400,8801,-20.114225,9110,8802,57.311858,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +3338,"NAD83 / Alaska Albers",9001,4269,15021,9822,1,0,4499,8821,50,9102,8822,-154,9102,8823,55,9102,8824,65,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3339,"IGCB 1955 / Congo TM zone 12",9001,4701,17412,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3340,"IGCB 1955 / Congo TM zone 14",9001,4701,17414,9807,1,0,4400,8801,0,9102,8802,14,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3341,"IGCB 1955 / Congo TM zone 16",9001,4701,17416,9807,1,0,4400,8801,0,9102,8802,16,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3342,"IGCB 1955 / UTM zone 33S",9001,4701,16133,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3343,"Mauritania 1999 / UTM zone 28N",9001,4702,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3344,"Mauritania 1999 / UTM zone 29N",9001,4702,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3345,"Mauritania 1999 / UTM zone 30N",9001,4702,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3346,"LKS94 / Lithuania TM",9001,4669,19934,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,0.9998,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3347,"NAD83 / Statistics Canada Lambert",9001,4269,19897,9802,1,0,4400,8821,63.390675,9102,8822,-91.52,9110,8823,49,9102,8824,77,9102,8826,6200000,9001,8827,3000000,9001,,,,,,,,,, +3348,"NAD83(CSRS) / Statistics Canada Lambert",9001,4617,19897,9802,1,0,4400,8821,63.390675,9102,8822,-91.52,9110,8823,49,9102,8824,77,9102,8826,6200000,9001,8827,3000000,9001,,,,,,,,,, +3349,"WGS 84 / PDC Mercator",9001,4326,19898,9804,1,1,4400,8801,0,9102,8802,-150,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3350,"Pulkovo 1942 / CS63 zone C0",9001,4284,18450,9807,1,0,4530,8801,0.06,9110,8802,21.57,9110,8805,1,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +3351,"Pulkovo 1942 / CS63 zone C1",9001,4284,18451,9807,1,0,4530,8801,0.06,9110,8802,24.57,9110,8805,1,9201,8806,1250000,9001,8807,0,9001,,,,,,,,,,,,, +3352,"Pulkovo 1942 / CS63 zone C2",9001,4284,18452,9807,1,0,4530,8801,0.06,9110,8802,27.57,9110,8805,1,9201,8806,2250000,9001,8807,0,9001,,,,,,,,,,,,, +3353,"Mhast (onshore) / UTM zone 32S",9001,4704,16132,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3354,"Mhast (offshore) / UTM zone 32S",9001,4705,16132,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3355,"Egypt Gulf of Suez S-650 TL / Red Belt",9001,4706,18072,9807,1,0,4400,8801,30,9102,8802,31,9102,8805,1,9201,8806,615000,9001,8807,810000,9001,,,,,,,,,,,,, +3356,"Grand Cayman 1959 / UTM zone 17N",9001,4723,16017,9807,1,1,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3357,"Little Cayman 1961 / UTM zone 17N",9001,4726,16017,9807,1,1,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3358,"NAD83(HARN) / North Carolina",9001,4152,13230,9802,1,0,4499,8821,33.45,9110,8822,-79,9110,8823,36.1,9110,8824,34.2,9110,8826,609601.22,9001,8827,0,9001,,,,,,,,,, +3359,"NAD83(HARN) / North Carolina (ftUS)",9002,4152,15346,9802,1,1,4495,8821,33.45,9110,8822,-79,9110,8823,36.1,9110,8824,34.2,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +3360,"NAD83(HARN) / South Carolina",9001,4152,13930,9802,1,0,4499,8821,31.5,9110,8822,-81,9110,8823,34.5,9110,8824,32.3,9110,8826,609600,9001,8827,0,9001,,,,,,,,,, +3361,"NAD83(HARN) / South Carolina (ft)",9002,4152,15355,9802,1,0,4495,8821,31.5,9110,8822,-81,9110,8823,34.5,9110,8824,32.3,9110,8826,2000000,9002,8827,0,9002,,,,,,,,,, +3362,"NAD83(HARN) / Pennsylvania North",9001,4152,13731,9802,1,0,4499,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3363,"NAD83(HARN) / Pennsylvania North (ftUS)",9003,4152,15353,9802,1,0,4497,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3364,"NAD83(HARN) / Pennsylvania South",9001,4152,13732,9802,1,0,4499,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3365,"NAD83(HARN) / Pennsylvania South (ftUS)",9003,4152,15354,9802,1,0,4497,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3366,Hong Kong 1963 Grid System,9001,4738,19896,9806,1,1,4500,8801,22.184368,9110,8802,114.10428,9110,8806,132033.92,9005,8807,62565.96,9005,,,,,,,,,,,,,,,, +3367,"IGN Astro 1960 / UTM zone 28N",9001,4700,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3368,"IGN Astro 1960 / UTM zone 29N",9001,4700,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3369,"IGN Astro 1960 / UTM zone 30N",9001,4700,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3370,"NAD27 / UTM zone 59N",9001,4267,16059,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3371,"NAD27 / UTM zone 60N",9001,4267,16060,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3372,"NAD83 / UTM zone 59N",9001,4269,16059,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3373,"NAD83 / UTM zone 60N",9001,4269,16060,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3374,"FD54 / UTM zone 29N",9001,4741,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3375,"GDM2000 / Peninsula RSO",9001,4742,19895,9812,1,0,4400,8806,804671,9001,8807,0,9001,8811,4,9110,8812,102.15,9110,8813,323.013286728,9110,8814,323.07483685,9110,8815,0.99984,9201,,,,,,, +3376,"GDM2000 / East Malaysia BRSO",9001,4742,19894,9812,1,0,4400,8806,0,9001,8807,0,9001,8811,4,9110,8812,115,9110,8813,53.185691582,9110,8814,53.07483685,9110,8815,0.99984,9201,,,,,,, +3377,"GDM2000 / Johor Grid",9001,4742,19893,9806,1,0,4400,8801,2.071804708,9110,8802,103.254057045,9110,8806,-14810.562,9001,8807,8758.32,9001,,,,,,,,,,,,,,,, +3378,"GDM2000 / Sembilan and Melaka Grid",9001,4742,19892,9806,1,0,4400,8801,2.405645149,9110,8802,101.582965815,9110,8806,3673.785,9001,8807,-4240.573,9001,,,,,,,,,,,,,,,, +3379,"GDM2000 / Pahang Grid",9001,4742,19891,9806,1,0,4400,8801,3.460979712,9110,8802,102.220587634,9110,8806,-7368.228,9001,8807,6485.858,9001,,,,,,,,,,,,,,,, +3380,"GDM2000 / Selangor Grid",9001,4742,19890,9806,1,0,4400,8801,3.410473658,9110,8802,101.232078849,9110,8806,-34836.161,9001,8807,56464.049,9001,,,,,,,,,,,,,,,, +3381,"GDM2000 / Terengganu Grid",9001,4742,19889,9806,1,0,4400,8801,4.583462672,9110,8802,103.041299225,9110,8806,19594.245,9001,8807,3371.895,9001,,,,,,,,,,,,,,,, +3382,"GDM2000 / Pinang Grid",9001,4742,19888,9806,1,0,4400,8801,5.251746315,9110,8802,100.203975707,9110,8806,-23.414,9001,8807,62.283,9001,,,,,,,,,,,,,,,, +3383,"GDM2000 / Kedah and Perlis Grid",9001,4742,19887,9806,1,0,4400,8801,5.575282177,9110,8802,100.3810936,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3384,"GDM2000 / Perak Grid",9001,4742,19886,9806,1,0,4400,8801,4.513262688,9110,8802,100.485547811,9110,8806,-1.769,9001,8807,133454.779,9001,,,,,,,,,,,,,,,, +3385,"GDM2000 / Kelantan Grid",9001,4742,19885,9806,1,0,4400,8801,5.582115717,9110,8802,102.174287001,9110,8806,13227.851,9001,8807,8739.894,9001,,,,,,,,,,,,,,,, +3386,"KKJ / Finland zone 0",9001,4123,18180,9807,1,0,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3387,"KKJ / Finland zone 5",9001,4123,18205,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +3388,"Pulkovo 1942 / Caspian Sea Mercator",9001,4284,19884,9805,1,0,4534,8802,51,9102,8806,0,9001,8807,0,9001,8823,42,9102,,,,,,,,,,,,,,,, +3389,"Pulkovo 1942 / 3-degree Gauss-Kruger zone 60",9001,4284,16099,9807,1,0,4530,8801,0,9102,8802,180,9102,8805,1,9201,8806,60500000,9001,8807,0,9001,,,,,,,,,,,,, +3390,"Pulkovo 1995 / 3-degree Gauss-Kruger zone 60",9001,4200,16099,9807,1,0,4530,8801,0,9102,8802,180,9102,8805,1,9201,8806,60500000,9001,8807,0,9001,,,,,,,,,,,,, +3391,"Karbala 1979 / UTM zone 37N",9001,4743,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3392,"Karbala 1979 / UTM zone 38N",9001,4743,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3393,"Karbala 1979 / UTM zone 39N",9001,4743,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3394,"Nahrwan 1934 / Iraq zone",9001,4744,19906,9801,1,0,4400,8801,32.3,9110,8802,45,9110,8805,0.9987864078,9201,8806,1500000,9001,8807,1166200,9001,,,,,,,,,,,,, +3395,"WGS 84 / World Mercator",9001,4326,19883,9804,1,0,4400,8801,0,9102,8802,0,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3396,"PD/83 / 3-degree Gauss-Kruger zone 3",9001,4746,16263,9807,1,0,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +3397,"PD/83 / 3-degree Gauss-Kruger zone 4",9001,4746,16264,9807,1,0,4530,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +3398,"RD/83 / 3-degree Gauss-Kruger zone 4",9001,4745,16264,9807,1,0,4530,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +3399,"RD/83 / 3-degree Gauss-Kruger zone 5",9001,4745,16265,9807,1,0,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +3400,"NAD83 / Alberta 10-TM (Forest)",9001,4269,19881,9807,1,0,4400,8801,0,9102,8802,-115,9102,8805,0.9992,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3401,"NAD83 / Alberta 10-TM (Resource)",9001,4269,19882,9807,1,0,4400,8801,0,9102,8802,-115,9102,8805,0.9992,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3402,"NAD83(CSRS) / Alberta 10-TM (Forest)",9001,4617,19881,9807,1,0,4400,8801,0,9102,8802,-115,9102,8805,0.9992,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3403,"NAD83(CSRS) / Alberta 10-TM (Resource)",9001,4617,19882,9807,1,0,4400,8801,0,9102,8802,-115,9102,8805,0.9992,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3404,"NAD83(HARN) / North Carolina (ftUS)",9003,4152,15346,9802,1,0,4497,8821,33.45,9110,8822,-79,9110,8823,36.1,9110,8824,34.2,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +3405,"VN-2000 / UTM zone 48N",9001,4756,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3406,"VN-2000 / UTM zone 49N",9001,4756,16049,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3407,Hong Kong 1963 Grid System,9005,4738,19896,9806,1,0,4502,8801,22.184368,9110,8802,114.10428,9110,8806,132033.92,9005,8807,62565.96,9005,,,,,,,,,,,,,,,, +3408,NSIDC EASE-Grid North,9001,4053,3897,1027,1,0,4469,8801,90,9102,8802,0,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3409,NSIDC EASE-Grid South,9001,4053,3898,1027,1,0,4470,8801,-90,9102,8802,0,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3410,NSIDC EASE-Grid Global,9001,4053,19869,9834,1,0,4499,8802,0,9102,8806,0,9001,8807,0,9001,8823,30,9102,,,,,,,,,,,,,,,, +3411,NSIDC Sea Ice Polar Stereographic North,9001,4054,19865,9829,1,0,4468,8806,0,9001,8807,0,9001,8832,70,9102,8833,-45,9102,,,,,,,,,,,,,,,, +3412,NSIDC Sea Ice Polar Stereographic South,9001,4054,19866,9829,1,0,4470,8806,0,9001,8807,0,9001,8832,-70,9102,8833,0,9102,,,,,,,,,,,,,,,, +3413,"WGS 84 / NSIDC Sea Ice Polar Stereographic North",9001,4326,19865,9829,1,0,4468,8806,0,9001,8807,0,9001,8832,70,9102,8833,-45,9102,,,,,,,,,,,,,,,, +3414,"SVY21 / Singapore TM",9001,4757,19864,9807,1,0,4500,8801,1.22,9110,8802,103.5,9110,8805,1,9201,8806,28001.642,9001,8807,38744.572,9001,,,,,,,,,,,,, +3415,"WGS 72BE / South China Sea Lambert",9001,4324,19863,9802,1,0,4400,8821,21,9102,8822,114,9102,8823,18,9102,8824,24,9102,8826,500000,9001,8827,500000,9001,,,,,,,,,, +3416,"ETRS89 / Austria Lambert",9001,4258,19947,9802,1,0,4530,8821,47.3,9110,8822,13.2,9110,8823,49,9110,8824,46,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +3417,"NAD83 / Iowa North (ftUS)",9003,4269,15377,9802,1,0,4497,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,4921250,9003,8827,3280833.3333,9003,,,,,,,,,, +3418,"NAD83 / Iowa South (ftUS)",9003,4269,15378,9802,1,0,4497,8821,40,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +3419,"NAD83 / Kansas North (ftUS)",9003,4269,15379,9802,1,0,4497,8821,38.2,9110,8822,-98,9110,8823,39.47,9110,8824,38.43,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +3420,"NAD83 / Kansas South (ftUS)",9003,4269,15380,9802,1,0,4497,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,1312333.3333,9003,8827,1312333.3333,9003,,,,,,,,,, +3421,"NAD83 / Nevada East (ftUS)",9003,4269,15381,9807,1,0,4497,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,656166.6667,9003,8807,26246666.6667,9003,,,,,,,,,,,,, +3422,"NAD83 / Nevada Central (ftUS)",9003,4269,15382,9807,1,0,4497,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,1640416.6667,9003,8807,19685000,9003,,,,,,,,,,,,, +3423,"NAD83 / Nevada West (ftUS)",9003,4269,15383,9807,1,0,4497,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,2624666.6667,9003,8807,13123333.3333,9003,,,,,,,,,,,,, +3424,"NAD83 / New Jersey (ftUS)",9003,4269,15384,9807,1,0,4497,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125,9003,8807,0,9003,,,,,,,,,,,,, +3425,"NAD83(HARN) / Iowa North (ftUS)",9003,4152,15377,9802,1,0,4497,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,4921250,9003,8827,3280833.3333,9003,,,,,,,,,, +3426,"NAD83(HARN) / Iowa South (ftUS)",9003,4152,15378,9802,1,0,4497,8821,40,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +3427,"NAD83(HARN) / Kansas North (ftUS)",9003,4152,15379,9802,1,0,4497,8821,38.2,9110,8822,-98,9110,8823,39.47,9110,8824,38.43,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +3428,"NAD83(HARN) / Kansas South (ftUS)",9003,4152,15380,9802,1,0,4497,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,1312333.3333,9003,8827,1312333.3333,9003,,,,,,,,,, +3429,"NAD83(HARN) / Nevada East (ftUS)",9003,4152,15381,9807,1,0,4497,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,656166.6667,9003,8807,26246666.6667,9003,,,,,,,,,,,,, +3430,"NAD83(HARN) / Nevada Central (ftUS)",9003,4152,15382,9807,1,0,4497,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,1640416.6667,9003,8807,19685000,9003,,,,,,,,,,,,, +3431,"NAD83(HARN) / Nevada West (ftUS)",9003,4152,15383,9807,1,0,4497,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,2624666.6667,9003,8807,13123333.3333,9003,,,,,,,,,,,,, +3432,"NAD83(HARN) / New Jersey (ftUS)",9003,4152,15384,9807,1,0,4497,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125,9003,8807,0,9003,,,,,,,,,,,,, +3433,"NAD83 / Arkansas North (ftUS)",9003,4269,15385,9802,1,0,4497,8821,34.2,9110,8822,-92,9110,8823,36.14,9110,8824,34.56,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +3434,"NAD83 / Arkansas South (ftUS)",9003,4269,15386,9802,1,0,4497,8821,32.4,9110,8822,-92,9110,8823,34.46,9110,8824,33.18,9110,8826,1312333.3333,9003,8827,1312333.3333,9003,,,,,,,,,, +3435,"NAD83 / Illinois East (ftUS)",9003,4269,15387,9807,1,0,4497,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +3436,"NAD83 / Illinois West (ftUS)",9003,4269,15388,9807,1,0,4497,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,2296583.3333,9003,8807,0,9003,,,,,,,,,,,,, +3437,"NAD83 / New Hampshire (ftUS)",9003,4269,15389,9807,1,0,4497,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +3438,"NAD83 / Rhode Island (ftUS)",9003,4269,15390,9807,1,0,4497,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,328083.3333,9003,8807,0,9003,,,,,,,,,,,,, +3439,"PSD93 / UTM zone 39N",9001,4134,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3440,"PSD93 / UTM zone 40N",9001,4134,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3441,"NAD83(HARN) / Arkansas North (ftUS)",9003,4152,15385,9802,1,0,4497,8821,34.2,9110,8822,-92,9110,8823,36.14,9110,8824,34.56,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +3442,"NAD83(HARN) / Arkansas South (ftUS)",9003,4152,15386,9802,1,0,4497,8821,32.4,9110,8822,-92,9110,8823,34.46,9110,8824,33.18,9110,8826,1312333.3333,9003,8827,1312333.3333,9003,,,,,,,,,, +3443,"NAD83(HARN) / Illinois East (ftUS)",9003,4152,15387,9807,1,0,4497,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +3444,"NAD83(HARN) / Illinois West (ftUS)",9003,4152,15388,9807,1,0,4497,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,2296583.3333,9003,8807,0,9003,,,,,,,,,,,,, +3445,"NAD83(HARN) / New Hampshire (ftUS)",9003,4152,15389,9807,1,0,4497,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +3446,"NAD83(HARN) / Rhode Island (ftUS)",9003,4152,15390,9807,1,0,4497,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,328083.3333,9003,8807,0,9003,,,,,,,,,,,,, +3447,"ETRS89 / Belgian Lambert 2005",9001,4258,19862,9802,1,0,4499,8821,50.4752134,9110,8822,4.2133177,9110,8823,49.5,9110,8824,51.1,9110,8826,150328,9001,8827,166262,9001,,,,,,,,,, +3448,"JAD2001 / Jamaica Metric Grid",9001,4758,19860,9801,1,0,4400,8801,18,9102,8802,-77,9102,8805,1,9201,8806,750000,9001,8807,650000,9001,,,,,,,,,,,,, +3449,"JAD2001 / UTM zone 17N",9001,4758,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3450,"JAD2001 / UTM zone 18N",9001,4758,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3451,"NAD83 / Louisiana North (ftUS)",9003,4269,15391,9802,1,0,4497,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,3280833.3333,9003,8827,0,9003,,,,,,,,,, +3452,"NAD83 / Louisiana South (ftUS)",9003,4269,15392,9802,1,0,4497,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,3280833.3333,9003,8827,0,9003,,,,,,,,,, +3453,"NAD83 / Louisiana Offshore (ftUS)",9003,4269,15393,9802,1,0,4497,8821,25.3,9110,8822,-91.2,9110,8823,27.5,9110,8824,26.1,9110,8826,3280833.3333,9003,8827,0,9003,,,,,,,,,, +3454,"NAD83 / South Dakota North (ftUS)",9003,4269,15395,9802,1,1,4497,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3455,"NAD83 / South Dakota South (ftUS)",9003,4269,15395,9802,1,0,4497,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3456,"NAD83(HARN) / Louisiana North (ftUS)",9003,4152,15391,9802,1,0,4497,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,3280833.3333,9003,8827,0,9003,,,,,,,,,, +3457,"NAD83(HARN) / Louisiana South (ftUS)",9003,4152,15392,9802,1,0,4497,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,3280833.3333,9003,8827,0,9003,,,,,,,,,, +3458,"NAD83(HARN) / South Dakota North (ftUS)",9003,4152,15394,9802,1,0,4497,8821,43.5,9110,8822,-100,9110,8823,45.41,9110,8824,44.25,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3459,"NAD83(HARN) / South Dakota South (ftUS)",9003,4152,15395,9802,1,0,4497,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3460,"Fiji 1986 / Fiji Map Grid",9001,4720,19859,9807,1,0,4400,8801,-17,9110,8802,178.45,9110,8805,0.99985,9201,8806,2000000,9001,8807,4000000,9001,,,,,,,,,,,,, +3461,"Dabola 1981 / UTM zone 28N",9001,4155,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3462,"Dabola 1981 / UTM zone 29N",9001,4155,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3463,"NAD83 / Maine CS2000 Central",9001,4269,11854,9807,1,0,4499,8801,43.3,9110,8802,-69.073,9110,8805,0.99998,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3464,"NAD83(HARN) / Maine CS2000 Central",9001,4152,11854,9807,1,0,4499,8801,43.3,9110,8802,-69.073,9110,8805,0.99998,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3465,"NAD83(NSRS2007) / Alabama East",9001,4759,10131,9807,1,0,4499,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3466,"NAD83(NSRS2007) / Alabama West",9001,4759,10132,9807,1,0,4499,8801,30,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,600000,9001,8807,0,9001,,,,,,,,,,,,, +3467,"NAD83(NSRS2007) / Alaska Albers",9001,4759,15021,9822,1,0,4499,8821,50,9102,8822,-154,9102,8823,55,9102,8824,65,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3468,"NAD83(NSRS2007) / Alaska zone 1",9001,4759,15031,9812,1,0,4499,8806,5000000,9001,8807,-5000000,9001,8811,57,9110,8812,-133.4,9110,8813,323.07483685,9110,8814,323.07483685,9110,8815,0.9999,9201,,,,,,, +3469,"NAD83(NSRS2007) / Alaska zone 2",9001,4759,15032,9807,1,0,4499,8801,54,9102,8802,-142,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3470,"NAD83(NSRS2007) / Alaska zone 3",9001,4759,15033,9807,1,0,4499,8801,54,9102,8802,-146,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3471,"NAD83(NSRS2007) / Alaska zone 4",9001,4759,15034,9807,1,0,4499,8801,54,9102,8802,-150,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3472,"NAD83(NSRS2007) / Alaska zone 5",9001,4759,15035,9807,1,0,4499,8801,54,9102,8802,-154,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3473,"NAD83(NSRS2007) / Alaska zone 6",9001,4759,15036,9807,1,0,4499,8801,54,9102,8802,-158,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3474,"NAD83(NSRS2007) / Alaska zone 7",9001,4759,15037,9807,1,0,4499,8801,54,9102,8802,-162,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3475,"NAD83(NSRS2007) / Alaska zone 8",9001,4759,15038,9807,1,0,4499,8801,54,9102,8802,-166,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3476,"NAD83(NSRS2007) / Alaska zone 9",9001,4759,15039,9807,1,0,4499,8801,54,9102,8802,-170,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3477,"NAD83(NSRS2007) / Alaska zone 10",9001,4759,15040,9802,1,0,4499,8821,51,9110,8822,-176,9110,8823,53.5,9110,8824,51.5,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +3478,"NAD83(NSRS2007) / Arizona Central",9001,4759,10232,9807,1,0,4499,8801,31,9110,8802,-111.55,9110,8805,0.9999,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +3479,"NAD83(NSRS2007) / Arizona Central (ft)",9002,4759,15305,9807,1,0,4495,8801,31,9110,8802,-111.55,9110,8805,0.9999,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +3480,"NAD83(NSRS2007) / Arizona East",9001,4759,10231,9807,1,0,4499,8801,31,9110,8802,-110.1,9110,8805,0.9999,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +3481,"NAD83(NSRS2007) / Arizona East (ft)",9002,4759,15304,9807,1,0,4495,8801,31,9110,8802,-110.1,9110,8805,0.9999,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +3482,"NAD83(NSRS2007) / Arizona West",9001,4759,10233,9807,1,0,4499,8801,31,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +3483,"NAD83(NSRS2007) / Arizona West (ft)",9002,4759,15306,9807,1,0,4495,8801,31,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +3484,"NAD83(NSRS2007) / Arkansas North",9001,4759,10331,9802,1,0,4499,8821,34.2,9110,8822,-92,9110,8823,36.14,9110,8824,34.56,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +3485,"NAD83(NSRS2007) / Arkansas North (ftUS)",9003,4759,15385,9802,1,0,4497,8821,34.2,9110,8822,-92,9110,8823,36.14,9110,8824,34.56,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +3486,"NAD83(NSRS2007) / Arkansas South",9001,4759,10332,9802,1,0,4499,8821,32.4,9110,8822,-92,9110,8823,34.46,9110,8824,33.18,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +3487,"NAD83(NSRS2007) / Arkansas South (ftUS)",9003,4759,15386,9802,1,0,4497,8821,32.4,9110,8822,-92,9110,8823,34.46,9110,8824,33.18,9110,8826,1312333.3333,9003,8827,1312333.3333,9003,,,,,,,,,, +3488,"NAD83(NSRS2007) / California Albers",9001,4759,10420,9822,1,0,4499,8821,0,9102,8822,-120,9102,8823,34,9102,8824,40.5,9102,8826,0,9001,8827,-4000000,9001,,,,,,,,,, +3489,"NAD83(NSRS2007) / California zone 1",9001,4759,10431,9802,1,0,4499,8821,39.2,9110,8822,-122,9110,8823,41.4,9110,8824,40,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +3490,"NAD83(NSRS2007) / California zone 1 (ftUS)",9003,4759,15307,9802,1,0,4497,8821,39.2,9110,8822,-122,9110,8823,41.4,9110,8824,40,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +3491,"NAD83(NSRS2007) / California zone 2",9001,4759,10432,9802,1,0,4499,8821,37.4,9110,8822,-122,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +3492,"NAD83(NSRS2007) / California zone 2 (ftUS)",9003,4759,15308,9802,1,0,4497,8821,37.4,9110,8822,-122,9110,8823,39.5,9110,8824,38.2,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +3493,"NAD83(NSRS2007) / California zone 3",9001,4759,10433,9802,1,0,4499,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +3494,"NAD83(NSRS2007) / California zone 3 (ftUS)",9003,4759,15309,9802,1,0,4497,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +3495,"NAD83(NSRS2007) / California zone 4",9001,4759,10434,9802,1,0,4499,8821,35.2,9110,8822,-119,9110,8823,37.15,9110,8824,36,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +3496,"NAD83(NSRS2007) / California zone 4 (ftUS)",9003,4759,15310,9802,1,0,4497,8821,35.2,9110,8822,-119,9110,8823,37.15,9110,8824,36,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +3497,"NAD83(NSRS2007) / California zone 5",9001,4759,10435,9802,1,0,4499,8821,33.3,9110,8822,-118,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +3498,"NAD83(NSRS2007) / California zone 5 (ftUS)",9003,4759,15311,9802,1,0,4497,8821,33.3,9110,8822,-118,9110,8823,35.28,9110,8824,34.02,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +3499,"NAD83(NSRS2007) / California zone 6",9001,4759,10436,9802,1,0,4499,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +3500,"NAD83(NSRS2007) / California zone 6 (ftUS)",9003,4759,15312,9802,1,0,4497,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +3501,"NAD83(NSRS2007) / Colorado Central",9001,4759,10532,9802,1,0,4499,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +3502,"NAD83(NSRS2007) / Colorado Central (ftUS)",9003,4759,15314,9802,1,0,4497,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +3503,"NAD83(NSRS2007) / Colorado North",9001,4759,10531,9802,1,0,4499,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +3504,"NAD83(NSRS2007) / Colorado North (ftUS)",9003,4759,15313,9802,1,0,4497,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +3505,"NAD83(NSRS2007) / Colorado South",9001,4759,10533,9802,1,0,4499,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +3506,"NAD83(NSRS2007) / Colorado South (ftUS)",9003,4759,15315,9802,1,0,4497,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +3507,"NAD83(NSRS2007) / Connecticut",9001,4759,10630,9802,1,0,4499,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,304800.6096,9001,8827,152400.3048,9001,,,,,,,,,, +3508,"NAD83(NSRS2007) / Connecticut (ftUS)",9003,4759,15316,9802,1,0,4497,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,1000000,9003,8827,500000,9003,,,,,,,,,, +3509,"NAD83(NSRS2007) / Delaware",9001,4759,10730,9807,1,0,4499,8801,38,9110,8802,-75.25,9110,8805,0.999995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3510,"NAD83(NSRS2007) / Delaware (ftUS)",9003,4759,15317,9807,1,0,4497,8801,38,9110,8802,-75.25,9110,8805,0.999995,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +3511,"NAD83(NSRS2007) / Florida East",9001,4759,10931,9807,1,0,4499,8801,24.2,9110,8802,-81,9110,8805,0.999941177,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3512,"NAD83(NSRS2007) / Florida East (ftUS)",9003,4759,15318,9807,1,0,4497,8801,24.2,9110,8802,-81,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +3513,"NAD83(NSRS2007) / Florida GDL Albers",9001,4759,10934,9822,1,0,4499,8821,24,9110,8822,-84,9110,8823,24,9110,8824,31.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +3514,"NAD83(NSRS2007) / Florida North",9001,4759,10933,9802,1,0,4499,8821,29,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3515,"NAD83(NSRS2007) / Florida North (ftUS)",9003,4759,15320,9802,1,0,4497,8821,29,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3516,"NAD83(NSRS2007) / Florida West",9001,4759,10932,9807,1,0,4499,8801,24.2,9110,8802,-82,9110,8805,0.999941177,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3517,"NAD83(NSRS2007) / Florida West (ftUS)",9003,4759,15319,9807,1,0,4497,8801,24.2,9110,8802,-82,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +3518,"NAD83(NSRS2007) / Georgia East",9001,4759,11031,9807,1,0,4499,8801,30,9110,8802,-82.1,9110,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3519,"NAD83(NSRS2007) / Georgia East (ftUS)",9003,4759,15321,9807,1,0,4497,8801,30,9110,8802,-82.1,9110,8805,0.9999,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +3520,"NAD83(NSRS2007) / Georgia West",9001,4759,11032,9807,1,0,4499,8801,30,9110,8802,-84.1,9110,8805,0.9999,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +3521,"NAD83(NSRS2007) / Georgia West (ftUS)",9003,4759,15322,9807,1,0,4497,8801,30,9110,8802,-84.1,9110,8805,0.9999,9201,8806,2296583.333,9003,8807,0,9003,,,,,,,,,,,,, +3522,"NAD83(NSRS2007) / Idaho Central",9001,4759,11132,9807,1,0,4499,8801,41.4,9110,8802,-114,9110,8805,0.999947368,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3523,"NAD83(NSRS2007) / Idaho Central (ftUS)",9003,4759,15324,9807,1,0,4497,8801,41.4,9110,8802,-114,9110,8805,0.999947368,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +3524,"NAD83(NSRS2007) / Idaho East",9001,4759,11131,9807,1,0,4499,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3525,"NAD83(NSRS2007) / Idaho East (ftUS)",9003,4759,15323,9807,1,0,4497,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +3526,"NAD83(NSRS2007) / Idaho West",9001,4759,11133,9807,1,0,4499,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,800000,9001,8807,0,9001,,,,,,,,,,,,, +3527,"NAD83(NSRS2007) / Idaho West (ftUS)",9003,4759,15325,9807,1,0,4497,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,2624666.667,9003,8807,0,9003,,,,,,,,,,,,, +3528,"NAD83(NSRS2007) / Illinois East",9001,4759,11231,9807,1,0,4499,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +3529,"NAD83(NSRS2007) / Illinois East (ftUS)",9003,4759,15387,9807,1,0,4497,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +3530,"NAD83(NSRS2007) / Illinois West",9001,4759,11232,9807,1,0,4499,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +3531,"NAD83(NSRS2007) / Illinois West (ftUS)",9003,4759,15388,9807,1,0,4497,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,2296583.3333,9003,8807,0,9003,,,,,,,,,,,,, +3532,"NAD83(NSRS2007) / Indiana East",9001,4759,11331,9807,1,0,4499,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,100000,9001,8807,250000,9001,,,,,,,,,,,,, +3533,"NAD83(NSRS2007) / Indiana East (ftUS)",9003,4759,15372,9807,1,0,4497,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,328083.333,9003,8807,820208.333,9003,,,,,,,,,,,,, +3534,"NAD83(NSRS2007) / Indiana West",9001,4759,11332,9807,1,0,4499,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,900000,9001,8807,250000,9001,,,,,,,,,,,,, +3535,"NAD83(NSRS2007) / Indiana West (ftUS)",9003,4759,15373,9807,1,0,4497,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,2952750,9003,8807,820208.333,9003,,,,,,,,,,,,, +3536,"NAD83(NSRS2007) / Iowa North",9001,4759,11431,9802,1,0,4499,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,1500000,9001,8827,1000000,9001,,,,,,,,,, +3537,"NAD83(NSRS2007) / Iowa North (ftUS)",9003,4759,15377,9802,1,0,4497,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,4921250,9003,8827,3280833.3333,9003,,,,,,,,,, +3538,"NAD83(NSRS2007) / Iowa South",9001,4759,11432,9802,1,0,4499,8821,40,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +3539,"NAD83(NSRS2007) / Iowa South (ftUS)",9003,4759,15378,9802,1,0,4497,8821,40,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +3540,"NAD83(NSRS2007) / Kansas North",9001,4759,11531,9802,1,0,4499,8821,38.2,9110,8822,-98,9110,8823,39.47,9110,8824,38.43,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +3541,"NAD83(NSRS2007) / Kansas North (ftUS)",9003,4759,15379,9802,1,0,4497,8821,38.2,9110,8822,-98,9110,8823,39.47,9110,8824,38.43,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +3542,"NAD83(NSRS2007) / Kansas South",9001,4759,11532,9802,1,0,4499,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +3543,"NAD83(NSRS2007) / Kansas South (ftUS)",9003,4759,15380,9802,1,0,4497,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,1312333.3333,9003,8827,1312333.3333,9003,,,,,,,,,, +3544,"NAD83(NSRS2007) / Kentucky North",9001,4759,15303,9802,1,0,4499,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +3545,"NAD83(NSRS2007) / Kentucky North (ftUS)",9003,4759,15328,9802,1,0,4497,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +3546,"NAD83(NSRS2007) / Kentucky Single Zone",9001,4759,11630,9802,1,0,4499,8821,36.2,9110,8822,-85.45,9110,8823,37.05,9110,8824,38.4,9110,8826,1500000,9001,8827,1000000,9001,,,,,,,,,, +3547,"NAD83(NSRS2007) / Kentucky Single Zone (ftUS)",9003,4759,15375,9802,1,0,4497,8821,36.2,9110,8822,-85.45,9110,8823,37.05,9110,8824,38.4,9110,8826,4921250,9003,8827,3280833.333,9003,,,,,,,,,, +3548,"NAD83(NSRS2007) / Kentucky South",9001,4759,11632,9802,1,0,4499,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,500000,9001,8827,500000,9001,,,,,,,,,, +3549,"NAD83(NSRS2007) / Kentucky South (ftUS)",9003,4759,15329,9802,1,0,4497,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,1640416.667,9003,8827,1640416.667,9003,,,,,,,,,, +3550,"NAD83(NSRS2007) / Louisiana North",9001,4759,11731,9802,1,0,4499,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +3551,"NAD83(NSRS2007) / Louisiana North (ftUS)",9003,4759,15391,9802,1,0,4497,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,3280833.3333,9003,8827,0,9003,,,,,,,,,, +3552,"NAD83(NSRS2007) / Louisiana South",9001,4759,11732,9802,1,0,4499,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +3553,"NAD83(NSRS2007) / Louisiana South (ftUS)",9003,4759,15392,9802,1,0,4497,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,3280833.3333,9003,8827,0,9003,,,,,,,,,, +3554,"NAD83(NSRS2007) / Maine CS2000 Central",9001,4759,11854,9807,1,0,4499,8801,43.3,9110,8802,-69.073,9110,8805,0.99998,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3555,"NAD83(NSRS2007) / Maine CS2000 East",9001,4759,11851,9807,1,0,4499,8801,43.5,9110,8802,-67.523,9110,8805,0.99998,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +3556,"NAD83(NSRS2007) / Maine CS2000 West",9001,4759,11853,9807,1,0,4499,8801,42.5,9110,8802,-70.223,9110,8805,0.99998,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +3557,"NAD83(NSRS2007) / Maine East",9001,4759,11831,9807,1,0,4499,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +3558,"NAD83(NSRS2007) / Maine West",9001,4759,11832,9807,1,0,4499,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,900000,9001,8807,0,9001,,,,,,,,,,,,, +3559,"NAD83(NSRS2007) / Maryland",9001,4759,11930,9802,1,0,4499,8821,37.4,9110,8822,-77,9110,8823,39.27,9110,8824,38.18,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +3560,"NAD83 / Utah North (ftUS)",9003,4269,15297,9802,1,0,4497,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640416.6667,9003,8827,3280833.3333,9003,,,,,,,,,, +3561,"Old Hawaiian / Hawaii zone 1",9003,4135,15101,9807,1,0,4497,8801,18.5,9110,8802,-155.3,9110,8805,0.999966667,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +3562,"Old Hawaiian / Hawaii zone 2",9003,4135,15102,9807,1,0,4497,8801,20.2,9110,8802,-156.4,9110,8805,0.999966667,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +3563,"Old Hawaiian / Hawaii zone 3",9003,4135,15103,9807,1,0,4497,8801,21.1,9110,8802,-158,9110,8805,0.99999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +3564,"Old Hawaiian / Hawaii zone 4",9003,4135,15104,9807,1,0,4497,8801,21.5,9110,8802,-159.3,9110,8805,0.99999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +3565,"Old Hawaiian / Hawaii zone 5",9003,4135,15105,9807,1,0,4497,8801,21.4,9110,8802,-160.1,9110,8805,1,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +3566,"NAD83 / Utah Central (ftUS)",9003,4269,15298,9802,1,0,4497,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640416.6667,9003,8827,6561666.6667,9003,,,,,,,,,, +3567,"NAD83 / Utah South (ftUS)",9003,4269,15299,9802,1,0,4497,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640416.6667,9003,8827,9842500,9003,,,,,,,,,, +3568,"NAD83(HARN) / Utah North (ftUS)",9003,4152,15297,9802,1,0,4497,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640416.6667,9003,8827,3280833.3333,9003,,,,,,,,,, +3569,"NAD83(HARN) / Utah Central (ftUS)",9003,4152,15298,9802,1,0,4497,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640416.6667,9003,8827,6561666.6667,9003,,,,,,,,,, +3570,"NAD83(HARN) / Utah South (ftUS)",9003,4152,15299,9802,1,0,4497,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640416.6667,9003,8827,9842500,9003,,,,,,,,,, +3571,"WGS 84 / North Pole LAEA Bering Sea",9001,4326,17295,9820,1,0,4464,8801,90,9102,8802,180,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3572,"WGS 84 / North Pole LAEA Alaska",9001,4326,17296,9820,1,0,4467,8801,90,9102,8802,-150,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3573,"WGS 84 / North Pole LAEA Canada",9001,4326,17297,9820,1,0,4466,8801,90,9102,8802,-100,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3574,"WGS 84 / North Pole LAEA Atlantic",9001,4326,17298,9820,1,0,4465,8801,90,9102,8802,-40,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3575,"WGS 84 / North Pole LAEA Europe",9001,4326,17299,9820,1,0,4463,8801,90,9102,8802,10,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3576,"WGS 84 / North Pole LAEA Russia",9001,4326,17300,9820,1,0,1035,8801,90,9102,8802,90,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3577,"GDA94 / Australian Albers",9001,4283,17365,9822,1,0,4400,8821,0,9102,8822,132,9102,8823,-18,9102,8824,-36,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3578,"NAD83 / Yukon Albers",9001,4269,19858,9822,1,0,4400,8821,59,9110,8822,-132.3,9110,8823,61.4,9110,8824,68,9110,8826,500000,9001,8827,500000,9001,,,,,,,,,, +3579,"NAD83(CSRS) / Yukon Albers",9001,4617,19858,9822,1,0,4400,8821,59,9110,8822,-132.3,9110,8823,61.4,9110,8824,68,9110,8826,500000,9001,8827,500000,9001,,,,,,,,,, +3580,"NAD83 / NWT Lambert",9001,4269,19857,9802,1,0,4400,8821,0,9102,8822,-112,9102,8823,62,9102,8824,70,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3581,"NAD83(CSRS) / NWT Lambert",9001,4617,19857,9802,1,0,4400,8821,0,9102,8822,-112,9102,8823,62,9102,8824,70,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3582,"NAD83(NSRS2007) / Maryland (ftUS)",9003,4759,15330,9802,1,0,4497,8821,37.4,9110,8822,-77,9110,8823,39.27,9110,8824,38.18,9110,8826,1312333.333,9003,8827,0,9003,,,,,,,,,, +3583,"NAD83(NSRS2007) / Massachusetts Island",9001,4759,12032,9802,1,0,4499,8821,41,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +3584,"NAD83(NSRS2007) / Massachusetts Island (ftUS)",9003,4759,15332,9802,1,0,4497,8821,41,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +3585,"NAD83(NSRS2007) / Massachusetts Mainland",9001,4759,12031,9802,1,0,4499,8821,41,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,200000,9001,8827,750000,9001,,,,,,,,,, +3586,"NAD83(NSRS2007) / Massachusetts Mainland (ftUS)",9003,4759,15331,9802,1,0,4497,8821,41,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,656166.667,9003,8827,2460625,9003,,,,,,,,,, +3587,"NAD83(NSRS2007) / Michigan Central",9001,4759,12142,9802,1,0,4499,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,6000000,9001,8827,0,9001,,,,,,,,,, +3588,"NAD83(NSRS2007) / Michigan Central (ft)",9002,4759,15334,9802,1,0,4495,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,19685039.37,9002,8827,0,9002,,,,,,,,,, +3589,"NAD83(NSRS2007) / Michigan North",9001,4759,12141,9802,1,0,4499,8821,44.47,9110,8822,-87,9110,8823,47.05,9110,8824,45.29,9110,8826,8000000,9001,8827,0,9001,,,,,,,,,, +3590,"NAD83(NSRS2007) / Michigan North (ft)",9002,4759,15333,9802,1,0,4495,8821,44.47,9110,8822,-87,9110,8823,47.05,9110,8824,45.29,9110,8826,26246719.16,9002,8827,0,9002,,,,,,,,,, +3591,"NAD83(NSRS2007) / Michigan Oblique Mercator",9001,4759,12150,9812,1,0,4499,8806,2546731.496,9001,8807,-4354009.816,9001,8811,45.1833,9110,8812,-86,9110,8813,337.25556,9102,8814,337.25556,9102,8815,0.9996,9201,,,,,,, +3592,"NAD83(NSRS2007) / Michigan South",9001,4759,12143,9802,1,0,4499,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,4000000,9001,8827,0,9001,,,,,,,,,, +3593,"NAD83(NSRS2007) / Michigan South (ft)",9002,4759,15335,9802,1,0,4495,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,13123359.58,9002,8827,0,9002,,,,,,,,,, +3594,"NAD83(NSRS2007) / Minnesota Central",9001,4759,12232,9802,1,0,4499,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +3595,"NAD83(NSRS2007) / Minnesota North",9001,4759,12231,9802,1,0,4499,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +3596,"NAD83(NSRS2007) / Minnesota South",9001,4759,12233,9802,1,0,4499,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +3597,"NAD83(NSRS2007) / Mississippi East",9001,4759,12331,9807,1,0,4499,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +3598,"NAD83(NSRS2007) / Mississippi East (ftUS)",9003,4759,15336,9807,1,0,4497,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +3599,"NAD83(NSRS2007) / Mississippi West",9001,4759,12332,9807,1,0,4499,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +3600,"NAD83(NSRS2007) / Mississippi West (ftUS)",9003,4759,15337,9807,1,0,4497,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,2296583.333,9003,8807,0,9003,,,,,,,,,,,,, +3601,"NAD83(NSRS2007) / Missouri Central",9001,4759,12432,9807,1,0,4499,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3602,"NAD83(NSRS2007) / Missouri East",9001,4759,12431,9807,1,0,4499,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +3603,"NAD83(NSRS2007) / Missouri West",9001,4759,12433,9807,1,0,4499,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,850000,9001,8807,0,9001,,,,,,,,,,,,, +3604,"NAD83(NSRS2007) / Montana",9001,4759,12530,9802,1,0,4499,8821,44.15,9110,8822,-109.3,9110,8823,49,9110,8824,45,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3605,"NAD83(NSRS2007) / Montana (ft)",9002,4759,15338,9802,1,0,4495,8821,44.15,9110,8822,-109.3,9110,8823,49,9110,8824,45,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +3606,"NAD83(NSRS2007) / Nebraska",9001,4759,12630,9802,1,0,4499,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +3607,"NAD83(NSRS2007) / Nevada Central",9001,4759,12732,9807,1,0,4499,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000,9001,8807,6000000,9001,,,,,,,,,,,,, +3608,"NAD83(NSRS2007) / Nevada Central (ftUS)",9003,4759,15382,9807,1,0,4497,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,1640416.6667,9003,8807,19685000,9003,,,,,,,,,,,,, +3609,"NAD83(NSRS2007) / Nevada East",9001,4759,12731,9807,1,0,4499,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,200000,9001,8807,8000000,9001,,,,,,,,,,,,, +3610,"NAD83(NSRS2007) / Nevada East (ftUS)",9003,4759,15381,9807,1,0,4497,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,656166.6667,9003,8807,26246666.6667,9003,,,,,,,,,,,,, +3611,"NAD83(NSRS2007) / Nevada West",9001,4759,12733,9807,1,0,4499,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,800000,9001,8807,4000000,9001,,,,,,,,,,,,, +3612,"NAD83(NSRS2007) / Nevada West (ftUS)",9003,4759,15383,9807,1,0,4497,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,2624666.6667,9003,8807,13123333.3333,9003,,,,,,,,,,,,, +3613,"NAD83(NSRS2007) / New Hampshire",9001,4759,12830,9807,1,0,4499,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +3614,"NAD83(NSRS2007) / New Hampshire (ftUS)",9003,4759,15389,9807,1,0,4497,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +3615,"NAD83(NSRS2007) / New Jersey",9001,4759,12930,9807,1,0,4499,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3616,"NAD83(NSRS2007) / New Jersey (ftUS)",9003,4759,15384,9807,1,0,4497,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125,9003,8807,0,9003,,,,,,,,,,,,, +3617,"NAD83(NSRS2007) / New Mexico Central",9001,4759,13032,9807,1,0,4499,8801,31,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3618,"NAD83(NSRS2007) / New Mexico Central (ftUS)",9003,4759,15340,9807,1,0,4497,8801,31,9110,8802,-106.15,9110,8805,0.9999,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +3619,"NAD83(NSRS2007) / New Mexico East",9001,4759,13031,9807,1,0,4499,8801,31,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,165000,9001,8807,0,9001,,,,,,,,,,,,, +3620,"NAD83(NSRS2007) / New Mexico East (ftUS)",9003,4759,15339,9807,1,0,4497,8801,31,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,541337.5,9003,8807,0,9003,,,,,,,,,,,,, +3621,"NAD83(NSRS2007) / New Mexico West",9001,4759,13033,9807,1,0,4499,8801,31,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,830000,9001,8807,0,9001,,,,,,,,,,,,, +3622,"NAD83(NSRS2007) / New Mexico West (ftUS)",9003,4759,15341,9807,1,0,4497,8801,31,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,2723091.667,9003,8807,0,9003,,,,,,,,,,,,, +3623,"NAD83(NSRS2007) / New York Central",9001,4759,13132,9807,1,0,4499,8801,40,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +3624,"NAD83(NSRS2007) / New York Central (ftUS)",9003,4759,15343,9807,1,0,4497,8801,40,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,820208.333,9003,8807,0,9003,,,,,,,,,,,,, +3625,"NAD83(NSRS2007) / New York East",9001,4759,13131,9807,1,0,4499,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +3626,"NAD83(NSRS2007) / New York East (ftUS)",9003,4759,15342,9807,1,0,4497,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125,9003,8807,0,9003,,,,,,,,,,,,, +3627,"NAD83(NSRS2007) / New York Long Island",9001,4759,13134,9802,1,0,4499,8821,40.1,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,300000,9001,8827,0,9001,,,,,,,,,, +3628,"NAD83(NSRS2007) / New York Long Island (ftUS)",9003,4759,15345,9802,1,0,4497,8821,40.1,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,984250,9003,8827,0,9003,,,,,,,,,, +3629,"NAD83(NSRS2007) / New York West",9001,4759,13133,9807,1,0,4499,8801,40,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,350000,9001,8807,0,9001,,,,,,,,,,,,, +3630,"NAD83(NSRS2007) / New York West (ftUS)",9003,4759,15344,9807,1,0,4497,8801,40,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,1148291.667,9003,8807,0,9003,,,,,,,,,,,,, +3631,"NAD83(NSRS2007) / North Carolina",9001,4759,13230,9802,1,0,4499,8821,33.45,9110,8822,-79,9110,8823,36.1,9110,8824,34.2,9110,8826,609601.22,9001,8827,0,9001,,,,,,,,,, +3632,"NAD83(NSRS2007) / North Carolina (ftUS)",9003,4759,15346,9802,1,0,4497,8821,33.45,9110,8822,-79,9110,8823,36.1,9110,8824,34.2,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +3633,"NAD83(NSRS2007) / North Dakota North",9001,4759,13331,9802,1,0,4499,8821,47,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3634,"NAD83(NSRS2007) / North Dakota North (ft)",9002,4759,15347,9802,1,0,4495,8821,47,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +3635,"NAD83(NSRS2007) / North Dakota South",9001,4759,13332,9802,1,0,4499,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3636,"NAD83(NSRS2007) / North Dakota South (ft)",9002,4759,15348,9802,1,0,4495,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +3637,"NAD83(NSRS2007) / Ohio North",9001,4759,13431,9802,1,0,4499,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3638,"NAD83(NSRS2007) / Ohio South",9001,4759,13432,9802,1,0,4499,8821,38,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3639,"NAD83(NSRS2007) / Oklahoma North",9001,4759,13531,9802,1,0,4499,8821,35,9110,8822,-98,9110,8823,36.46,9110,8824,35.34,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3640,"NAD83(NSRS2007) / Oklahoma North (ftUS)",9003,4759,15349,9802,1,0,4497,8821,35,9110,8822,-98,9110,8823,36.46,9110,8824,35.34,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3641,"NAD83(NSRS2007) / Oklahoma South",9001,4759,13532,9802,1,0,4499,8821,33.2,9110,8822,-98,9110,8823,35.14,9110,8824,33.56,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3642,"NAD83(NSRS2007) / Oklahoma South (ftUS)",9003,4759,15350,9802,1,0,4497,8821,33.2,9110,8822,-98,9110,8823,35.14,9110,8824,33.56,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3643,"NAD83(NSRS2007) / Oregon LCC (m)",9001,4759,13633,9802,1,0,4499,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +3644,"NAD83(NSRS2007) / Oregon GIC Lambert (ft)",9002,4759,15374,9802,1,0,4495,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,1312335.958,9002,8827,0,9002,,,,,,,,,, +3645,"NAD83(NSRS2007) / Oregon North",9001,4759,13631,9802,1,0,4499,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,2500000,9001,8827,0,9001,,,,,,,,,, +3646,"NAD83(NSRS2007) / Oregon North (ft)",9002,4759,15351,9802,1,0,4495,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,8202099.738,9002,8827,0,9002,,,,,,,,,, +3647,"NAD83(NSRS2007) / Oregon South",9001,4759,13632,9802,1,0,4499,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,1500000,9001,8827,0,9001,,,,,,,,,, +3648,"NAD83(NSRS2007) / Oregon South (ft)",9002,4759,15352,9802,1,0,4495,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,4921259.843,9002,8827,0,9002,,,,,,,,,, +3649,"NAD83(NSRS2007) / Pennsylvania North",9001,4759,13731,9802,1,0,4499,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3650,"NAD83(NSRS2007) / Pennsylvania North (ftUS)",9003,4759,15353,9802,1,0,4497,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3651,"NAD83(NSRS2007) / Pennsylvania South",9001,4759,13732,9802,1,0,4499,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3652,"NAD83(NSRS2007) / Pennsylvania South (ftUS)",9003,4759,15354,9802,1,0,4497,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3653,"NAD83(NSRS2007) / Rhode Island",9001,4759,13830,9807,1,0,4499,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,100000,9001,8807,0,9001,,,,,,,,,,,,, +3654,"NAD83(NSRS2007) / Rhode Island (ftUS)",9003,4759,15390,9807,1,0,4497,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,328083.3333,9003,8807,0,9003,,,,,,,,,,,,, +3655,"NAD83(NSRS2007) / South Carolina",9001,4759,13930,9802,1,0,4499,8821,31.5,9110,8822,-81,9110,8823,34.5,9110,8824,32.3,9110,8826,609600,9001,8827,0,9001,,,,,,,,,, +3656,"NAD83(NSRS2007) / South Carolina (ft)",9002,4759,15355,9802,1,0,4495,8821,31.5,9110,8822,-81,9110,8823,34.5,9110,8824,32.3,9110,8826,2000000,9002,8827,0,9002,,,,,,,,,, +3657,"NAD83(NSRS2007) / South Dakota North",9001,4759,14031,9802,1,0,4499,8821,43.5,9110,8822,-100,9110,8823,45.41,9110,8824,44.25,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3658,"NAD83(NSRS2007) / South Dakota North (ftUS)",9003,4759,15394,9802,1,0,4497,8821,43.5,9110,8822,-100,9110,8823,45.41,9110,8824,44.25,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3659,"NAD83(NSRS2007) / South Dakota South",9001,4759,14032,9802,1,0,4499,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3660,"NAD83(NSRS2007) / South Dakota South (ftUS)",9003,4759,15395,9802,1,0,4497,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3661,"NAD83(NSRS2007) / Tennessee",9001,4759,14130,9802,1,0,4499,8821,34.2,9110,8822,-86,9110,8823,36.25,9110,8824,35.15,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3662,"NAD83(NSRS2007) / Tennessee (ftUS)",9003,4759,15356,9802,1,0,4497,8821,34.2,9110,8822,-86,9110,8823,36.25,9110,8824,35.15,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3663,"NAD83(NSRS2007) / Texas Central",9001,4759,14233,9802,1,0,4499,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,700000,9001,8827,3000000,9001,,,,,,,,,, +3664,"NAD83(NSRS2007) / Texas Central (ftUS)",9003,4759,15359,9802,1,0,4497,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,2296583.333,9003,8827,9842500,9003,,,,,,,,,, +3665,"NAD83(NSRS2007) / Texas Centric Albers Equal Area",9001,4759,14254,9822,1,0,4499,8821,18,9110,8822,-100,9110,8823,27.3,9110,8824,35,9110,8826,1500000,9001,8827,6000000,9001,,,,,,,,,, +3666,"NAD83(NSRS2007) / Texas Centric Lambert Conformal",9001,4759,14253,9802,1,0,4499,8821,18,9110,8822,-100,9110,8823,27.3,9110,8824,35,9110,8826,1500000,9001,8827,5000000,9001,,,,,,,,,, +3667,"NAD83(NSRS2007) / Texas North",9001,4759,14231,9802,1,0,4499,8821,34,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,200000,9001,8827,1000000,9001,,,,,,,,,, +3668,"NAD83(NSRS2007) / Texas North (ftUS)",9003,4759,15357,9802,1,0,4497,8821,34,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,656166.667,9003,8827,3280833.333,9003,,,,,,,,,, +3669,"NAD83(NSRS2007) / Texas North Central",9001,4759,14232,9802,1,0,4499,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,600000,9001,8827,2000000,9001,,,,,,,,,, +3670,"NAD83(NSRS2007) / Texas North Central (ftUS)",9003,4759,15358,9802,1,0,4497,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,1968500,9003,8827,6561666.667,9003,,,,,,,,,, +3671,"NAD83(NSRS2007) / Texas South",9001,4759,14235,9802,1,0,4499,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,300000,9001,8827,5000000,9001,,,,,,,,,, +3672,"NAD83(NSRS2007) / Texas South (ftUS)",9003,4759,15361,9802,1,0,4497,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,984250,9003,8827,16404166.667,9003,,,,,,,,,, +3673,"NAD83(NSRS2007) / Texas South Central",9001,4759,14234,9802,1,0,4499,8821,27.5,9110,8822,-99,9110,8823,30.17,9110,8824,28.23,9110,8826,600000,9001,8827,4000000,9001,,,,,,,,,, +3674,"NAD83(NSRS2007) / Texas South Central (ftUS)",9003,4759,15360,9802,1,0,4497,8821,27.5,9110,8822,-99,9110,8823,30.17,9110,8824,28.23,9110,8826,1968500,9003,8827,13123333.333,9003,,,,,,,,,, +3675,"NAD83(NSRS2007) / Utah Central",9001,4759,14332,9802,1,0,4499,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,500000,9001,8827,2000000,9001,,,,,,,,,, +3676,"NAD83(NSRS2007) / Utah Central (ft)",9002,4759,15363,9802,0,0,4495,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640419.948,9002,8827,6561679.79,9002,,,,,,,,,, +3677,"NAD83(NSRS2007) / Utah Central (ftUS)",9003,4759,15298,9802,1,0,4497,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640416.6667,9003,8827,6561666.6667,9003,,,,,,,,,, +3678,"NAD83(NSRS2007) / Utah North",9001,4759,14331,9802,1,0,4499,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,500000,9001,8827,1000000,9001,,,,,,,,,, +3679,"NAD83(NSRS2007) / Utah North (ft)",9002,4759,15362,9802,0,0,4495,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640419.948,9002,8827,3280839.895,9002,,,,,,,,,, +3680,"NAD83(NSRS2007) / Utah North (ftUS)",9003,4759,15297,9802,1,0,4497,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640416.6667,9003,8827,3280833.3333,9003,,,,,,,,,, +3681,"NAD83(NSRS2007) / Utah South",9001,4759,14333,9802,1,0,4499,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,500000,9001,8827,3000000,9001,,,,,,,,,, +3682,"NAD83(NSRS2007) / Utah South (ft)",9002,4759,15364,9802,0,0,4495,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640419.948,9002,8827,9842519.685,9002,,,,,,,,,, +3683,"NAD83(NSRS2007) / Utah South (ftUS)",9003,4759,15299,9802,1,0,4497,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640416.6667,9003,8827,9842500,9003,,,,,,,,,, +3684,"NAD83(NSRS2007) / Vermont",9001,4759,14430,9807,1,0,4499,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3685,"NAD83(NSRS2007) / Virginia North",9001,4759,14531,9802,1,0,4499,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,3500000,9001,8827,2000000,9001,,,,,,,,,, +3686,"NAD83(NSRS2007) / Virginia North (ftUS)",9003,4759,15365,9802,1,0,4497,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,11482916.667,9003,8827,6561666.667,9003,,,,,,,,,, +3687,"NAD83(NSRS2007) / Virginia South",9001,4759,14532,9802,1,0,4499,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,3500000,9001,8827,1000000,9001,,,,,,,,,, +3688,"NAD83(NSRS2007) / Virginia South (ftUS)",9003,4759,15366,9802,1,0,4497,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,11482916.667,9003,8827,3280833.333,9003,,,,,,,,,, +3689,"NAD83(NSRS2007) / Washington North",9001,4759,14631,9802,1,0,4499,8821,47,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +3690,"NAD83(NSRS2007) / Washington North (ftUS)",9003,4759,15367,9802,1,0,4497,8821,47,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +3691,"NAD83(NSRS2007) / Washington South",9001,4759,14632,9802,1,0,4499,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +3692,"NAD83(NSRS2007) / Washington South (ftUS)",9003,4759,15368,9802,1,0,4497,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +3693,"NAD83(NSRS2007) / West Virginia North",9001,4759,14731,9802,1,0,4499,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3694,"NAD83(NSRS2007) / West Virginia South",9001,4759,14732,9802,1,0,4499,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3695,"NAD83(NSRS2007) / Wisconsin Central",9001,4759,14832,9802,1,0,4499,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3696,"NAD83(NSRS2007) / Wisconsin Central (ftUS)",9003,4759,15370,9802,1,0,4497,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3697,"NAD83(NSRS2007) / Wisconsin North",9001,4759,14831,9802,1,0,4499,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3698,"NAD83(NSRS2007) / Wisconsin North (ftUS)",9003,4759,15369,9802,1,0,4497,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3699,"NAD83(NSRS2007) / Wisconsin South",9001,4759,14833,9802,1,0,4499,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +3700,"NAD83(NSRS2007) / Wisconsin South (ftUS)",9003,4759,15371,9802,1,0,4497,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3701,"NAD83(NSRS2007) / Wisconsin Transverse Mercator",9001,4759,14841,9807,1,0,4499,8801,0,9102,8802,-90,9102,8805,0.9996,9201,8806,520000,9001,8807,-4480000,9001,,,,,,,,,,,,, +3702,"NAD83(NSRS2007) / Wyoming East",9001,4759,14931,9807,1,0,4499,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +3703,"NAD83(NSRS2007) / Wyoming East Central",9001,4759,14932,9807,1,0,4499,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,400000,9001,8807,100000,9001,,,,,,,,,,,,, +3704,"NAD83(NSRS2007) / Wyoming West Central",9001,4759,14933,9807,1,0,4499,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,600000,9001,8807,0,9001,,,,,,,,,,,,, +3705,"NAD83(NSRS2007) / Wyoming West",9001,4759,14934,9807,1,0,4499,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,800000,9001,8807,100000,9001,,,,,,,,,,,,, +3706,"NAD83(NSRS2007) / UTM zone 59N",9001,4759,16059,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3707,"NAD83(NSRS2007) / UTM zone 60N",9001,4759,16060,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3708,"NAD83(NSRS2007) / UTM zone 1N",9001,4759,16001,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3709,"NAD83(NSRS2007) / UTM zone 2N",9001,4759,16002,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3710,"NAD83(NSRS2007) / UTM zone 3N",9001,4759,16003,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3711,"NAD83(NSRS2007) / UTM zone 4N",9001,4759,16004,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3712,"NAD83(NSRS2007) / UTM zone 5N",9001,4759,16005,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3713,"NAD83(NSRS2007) / UTM zone 6N",9001,4759,16006,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3714,"NAD83(NSRS2007) / UTM zone 7N",9001,4759,16007,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3715,"NAD83(NSRS2007) / UTM zone 8N",9001,4759,16008,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3716,"NAD83(NSRS2007) / UTM zone 9N",9001,4759,16009,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3717,"NAD83(NSRS2007) / UTM zone 10N",9001,4759,16010,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3718,"NAD83(NSRS2007) / UTM zone 11N",9001,4759,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3719,"NAD83(NSRS2007) / UTM zone 12N",9001,4759,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3720,"NAD83(NSRS2007) / UTM zone 13N",9001,4759,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3721,"NAD83(NSRS2007) / UTM zone 14N",9001,4759,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3722,"NAD83(NSRS2007) / UTM zone 15N",9001,4759,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3723,"NAD83(NSRS2007) / UTM zone 16N",9001,4759,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3724,"NAD83(NSRS2007) / UTM zone 17N",9001,4759,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3725,"NAD83(NSRS2007) / UTM zone 18N",9001,4759,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3726,"NAD83(NSRS2007) / UTM zone 19N",9001,4759,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3727,"Reunion 1947 / TM Reunion",9001,4626,19856,9807,1,0,4499,8801,-21.07,9110,8802,55.32,9110,8805,1,9201,8806,160000,9001,8807,50000,9001,,,,,,,,,,,,, +3728,"NAD83(NSRS2007) / Ohio North (ftUS)",9003,4759,13433,9802,1,0,4497,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3729,"NAD83(NSRS2007) / Ohio South (ftUS)",9003,4759,13434,9802,1,0,4497,8821,38,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3730,"NAD83(NSRS2007) / Wyoming East (ftUS)",9003,4759,14935,9807,1,0,4497,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,656166.6667,9003,8807,0,9003,,,,,,,,,,,,, +3731,"NAD83(NSRS2007) / Wyoming East Central (ftUS)",9003,4759,14936,9807,1,0,4497,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,1312333.3333,9003,8807,328083.3333,9003,,,,,,,,,,,,, +3732,"NAD83(NSRS2007) / Wyoming West Central (ftUS)",9003,4759,14937,9807,1,0,4497,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,1968500,9003,8807,0,9003,,,,,,,,,,,,, +3733,"NAD83(NSRS2007) / Wyoming West (ftUS)",9003,4759,14938,9807,1,0,4497,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,2624666.6667,9003,8807,328083.3333,9003,,,,,,,,,,,,, +3734,"NAD83 / Ohio North (ftUS)",9003,4269,13433,9802,1,0,4497,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3735,"NAD83 / Ohio South (ftUS)",9003,4269,13434,9802,1,0,4497,8821,38,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3736,"NAD83 / Wyoming East (ftUS)",9003,4269,14935,9807,1,0,4497,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,656166.6667,9003,8807,0,9003,,,,,,,,,,,,, +3737,"NAD83 / Wyoming East Central (ftUS)",9003,4269,14936,9807,1,0,4497,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,1312333.3333,9003,8807,328083.3333,9003,,,,,,,,,,,,, +3738,"NAD83 / Wyoming West Central (ftUS)",9003,4269,14937,9807,1,0,4497,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,1968500,9003,8807,0,9003,,,,,,,,,,,,, +3739,"NAD83 / Wyoming West (ftUS)",9003,4269,14938,9807,1,0,4497,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,2624666.6667,9003,8807,328083.3333,9003,,,,,,,,,,,,, +3740,"NAD83(HARN) / UTM zone 10N",9001,4152,16010,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3741,"NAD83(HARN) / UTM zone 11N",9001,4152,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3742,"NAD83(HARN) / UTM zone 12N",9001,4152,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3743,"NAD83(HARN) / UTM zone 13N",9001,4152,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3744,"NAD83(HARN) / UTM zone 14N",9001,4152,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3745,"NAD83(HARN) / UTM zone 15N",9001,4152,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3746,"NAD83(HARN) / UTM zone 16N",9001,4152,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3747,"NAD83(HARN) / UTM zone 17N",9001,4152,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3748,"NAD83(HARN) / UTM zone 18N",9001,4152,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3749,"NAD83(HARN) / UTM zone 19N",9001,4152,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3750,"NAD83(HARN) / UTM zone 4N",9001,4152,16004,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3751,"NAD83(HARN) / UTM zone 5N",9001,4152,16005,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3752,"WGS 84 / Mercator 41",9001,4326,19855,9804,1,1,4499,8801,-41,9102,8802,100,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3753,"NAD83(HARN) / Ohio North (ftUS)",9003,4152,13433,9802,1,0,4497,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3754,"NAD83(HARN) / Ohio South (ftUS)",9003,4152,13434,9802,1,0,4497,8821,38,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +3755,"NAD83(HARN) / Wyoming East (ftUS)",9003,4152,14935,9807,1,0,4497,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,656166.6667,9003,8807,0,9003,,,,,,,,,,,,, +3756,"NAD83(HARN) / Wyoming East Central (ftUS)",9003,4152,14936,9807,1,0,4497,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,1312333.3333,9003,8807,328083.3333,9003,,,,,,,,,,,,, +3757,"NAD83(HARN) / Wyoming West Central (ftUS)",9003,4152,14937,9807,1,0,4497,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,1968500,9003,8807,0,9003,,,,,,,,,,,,, +3758,"NAD83(HARN) / Wyoming West (ftUS)",9003,4152,14938,9807,1,0,4497,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,2624666.6667,9003,8807,328083.3333,9003,,,,,,,,,,,,, +3759,"NAD83 / Hawaii zone 3 (ftUS)",9003,4269,15138,9807,1,0,4497,8801,21.1,9110,8802,-158,9110,8805,0.99999,9201,8806,1640416.6667,9003,8807,0,9003,,,,,,,,,,,,, +3760,"NAD83(HARN) / Hawaii zone 3 (ftUS)",9003,4152,15138,9807,1,0,4497,8801,21.1,9110,8802,-158,9110,8805,0.99999,9201,8806,1640416.6667,9003,8807,0,9003,,,,,,,,,,,,, +3761,"NAD83(CSRS) / UTM zone 22N",9001,4617,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3762,"WGS 84 / South Georgia Lambert",9001,4326,19854,9802,1,0,4400,8821,-55,9102,8822,-37,9102,8823,-54,9110,8824,-54.45,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3763,"ETRS89 / Portugal TM06",9001,4258,19853,9807,1,0,4499,8801,39.400573,9110,8802,-8.075919,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3764,"NZGD2000 / Chatham Island Circuit 2000",9001,4167,17959,9807,1,0,4500,8801,-44,9110,8802,-176.3,9110,8805,1,9201,8806,400000,9001,8807,800000,9001,,,,,,,,,,,,, +3765,"HTRS96 / Croatia TM",9001,4761,19851,9807,1,0,4400,8801,0,9102,8802,16.5,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3766,"HTRS96 / Croatia LCC",9001,4761,19852,9802,1,0,4400,8821,0,9102,8822,16.3,9110,8823,45.55,9110,8824,43.05,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +3767,"HTRS96 / UTM zone 33N",9001,4761,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3768,"HTRS96 / UTM zone 34N",9001,4761,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3769,"Bermuda 1957 / UTM zone 20N",9001,4216,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3770,"BDA2000 / Bermuda 2000 National Grid",9001,4762,19849,9807,1,0,4400,8801,32,9110,8802,-64.45,9110,8805,1,9201,8806,550000,9001,8807,100000,9001,,,,,,,,,,,,, +3771,"NAD27 / Alberta 3TM ref merid 111 W",9001,4267,17722,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3772,"NAD27 / Alberta 3TM ref merid 114 W",9001,4267,17723,9807,1,0,4400,8801,0,9102,8802,-114,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3773,"NAD27 / Alberta 3TM ref merid 117 W",9001,4267,17724,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3774,"NAD27 / Alberta 3TM ref merid 120 W",9001,4267,17725,9807,1,1,4400,8801,0,9102,8802,-120,9102,8805,0.9999,9001,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3775,"NAD83 / Alberta 3TM ref merid 111 W",9001,4269,17722,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3776,"NAD83 / Alberta 3TM ref merid 114 W",9001,4269,17723,9807,1,0,4400,8801,0,9102,8802,-114,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3777,"NAD83 / Alberta 3TM ref merid 117 W",9001,4269,17724,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3778,"NAD83 / Alberta 3TM ref merid 120 W",9001,4269,17725,9807,1,1,4400,8801,0,9102,8802,-120,9102,8805,0.9999,9001,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3779,"NAD83(CSRS) / Alberta 3TM ref merid 111 W",9001,4617,17722,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3780,"NAD83(CSRS) / Alberta 3TM ref merid 114 W",9001,4617,17723,9807,1,0,4400,8801,0,9102,8802,-114,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3781,"NAD83(CSRS) / Alberta 3TM ref merid 117 W",9001,4617,17724,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3782,"NAD83(CSRS) / Alberta 3TM ref merid 120 W",9001,4617,17725,9807,1,1,4400,8801,0,9102,8802,-120,9102,8805,0.9999,9001,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3783,"Pitcairn 2006 / Pitcairn TM 2006",9001,4763,19848,9807,1,0,4400,8801,-25.04067894,9110,8802,-130.06466816,9110,8805,1,9201,8806,14200,9001,8807,15500,9001,,,,,,,,,,,,, +3784,"Pitcairn 1967 / UTM zone 9S",9001,4729,16109,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3785,"Popular Visualisation CRS / Mercator",9001,4055,19847,9841,1,1,4499,8801,0,9102,8802,0,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3786,"World Equidistant Cylindrical (Sphere)",9001,4047,19968,9823,1,1,4499,8801,0,9102,8802,0,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3787,"MGI / Slovene National Grid",9001,4312,19845,9807,1,1,4498,8801,0,9102,8802,15,9102,8805,0.9999,9201,8806,500000,9001,8807,-5000000,9001,,,,,,,,,,,,, +3788,"NZGD2000 / Auckland Islands TM 2000",9001,4167,17960,9807,1,0,4500,8801,0,9102,8802,166,9102,8805,1,9201,8806,3500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3789,"NZGD2000 / Campbell Island TM 2000",9001,4167,17961,9807,1,0,4500,8801,0,9102,8802,169,9102,8805,1,9201,8806,3500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3790,"NZGD2000 / Antipodes Islands TM 2000",9001,4167,17962,9807,1,0,4500,8801,0,9102,8802,179,9102,8805,1,9201,8806,3500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3791,"NZGD2000 / Raoul Island TM 2000",9001,4167,17963,9807,1,0,4500,8801,0,9102,8802,-178,9102,8805,1,9201,8806,3500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3793,"NZGD2000 / Chatham Islands TM 2000",9001,4167,17965,9807,1,0,4500,8801,0,9110,8802,-176.3,9110,8805,1,9201,8806,3500000,9001,8807,10000000,9001,,,,,,,,,,,,, +3794,"Slovenia 1996 / Slovene National Grid",9001,4765,19845,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9999,9201,8806,500000,9001,8807,-5000000,9001,,,,,,,,,,,,, +3795,"NAD27 / Cuba Norte",9001,4267,18063,9802,1,0,4532,8821,22.21,9110,8822,-81,9110,8823,23,9110,8824,21.42,9110,8826,500000,9001,8827,280296.016,9001,,,,,,,,,, +3796,"NAD27 / Cuba Sur",9001,4267,18064,9802,1,0,4532,8821,20.43,9110,8822,-76.5,9110,8823,21.18,9110,8824,20.08,9110,8826,500000,9001,8827,229126.939,9001,,,,,,,,,, +3797,"NAD27 / MTQ Lambert",9001,4267,19844,9802,1,0,4499,8821,44,9102,8822,-70,9102,8823,50,9102,8824,46,9102,8826,800000,9001,8827,0,9001,,,,,,,,,, +3798,"NAD83 / MTQ Lambert",9001,4269,19844,9802,1,0,4499,8821,44,9102,8822,-70,9102,8823,50,9102,8824,46,9102,8826,800000,9001,8827,0,9001,,,,,,,,,, +3799,"NAD83(CSRS) / MTQ Lambert",9001,4617,19844,9802,1,0,4499,8821,44,9102,8822,-70,9102,8823,50,9102,8824,46,9102,8826,800000,9001,8827,0,9001,,,,,,,,,, +3800,"NAD27 / Alberta 3TM ref merid 120 W",9001,4267,17726,9807,1,0,4400,8801,0,9102,8802,-120,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3801,"NAD83 / Alberta 3TM ref merid 120 W",9001,4269,17726,9807,1,0,4400,8801,0,9102,8802,-120,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3802,"NAD83(CSRS) / Alberta 3TM ref merid 120 W",9001,4617,17726,9807,1,0,4400,8801,0,9102,8802,-120,9102,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3812,"ETRS89 / Belgian Lambert 2008",9001,4258,3811,9802,1,0,4499,8821,50.4752134,9110,8822,4.2133177,9110,8823,49.5,9110,8824,51.1,9110,8826,649328,9001,8827,665262,9001,,,,,,,,,, +3814,"NAD83 / Mississippi TM",9001,4269,3813,9807,1,0,4499,8801,32.3,9110,8802,-89.45,9110,8805,0.9998335,9201,8806,500000,9001,8807,1300000,9001,,,,,,,,,,,,, +3815,"NAD83(HARN) / Mississippi TM",9001,4152,3813,9807,1,0,4499,8801,32.3,9110,8802,-89.45,9110,8805,0.9998335,9201,8806,500000,9001,8807,1300000,9001,,,,,,,,,,,,, +3816,"NAD83(NSRS2007) / Mississippi TM",9001,4759,3813,9807,1,0,4499,8801,32.3,9110,8802,-89.45,9110,8805,0.9998335,9201,8806,500000,9001,8807,1300000,9001,,,,,,,,,,,,, +3825,"TWD97 / TM2 zone 119",9001,3824,3818,9807,1,0,4499,8801,0,9102,8802,119,9102,8805,0.9999,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +3826,"TWD97 / TM2 zone 121",9001,3824,3820,9807,1,0,4499,8801,0,9102,8802,121,9102,8805,0.9999,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +3827,"TWD67 / TM2 zone 119",9001,3821,3818,9807,1,0,4499,8801,0,9102,8802,119,9102,8805,0.9999,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +3828,"TWD67 / TM2 zone 121",9001,3821,3820,9807,1,0,4499,8801,0,9102,8802,121,9102,8805,0.9999,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +3829,"Hu Tzu Shan 1950 / UTM zone 51N",9001,4236,16051,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3832,"WGS 84 / PDC Mercator",9001,4326,3831,9804,1,0,4400,8801,0,9102,8802,150,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +3833,"Pulkovo 1942(58) / Gauss-Kruger zone 2",9001,4179,16202,9807,1,0,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +3834,"Pulkovo 1942(83) / Gauss-Kruger zone 2",9001,4178,16202,9807,1,0,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +3835,"Pulkovo 1942(83) / Gauss-Kruger zone 3",9001,4178,16203,9807,1,0,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +3836,"Pulkovo 1942(83) / Gauss-Kruger zone 4",9001,4178,16204,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +3837,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3",9001,4179,16263,9807,1,0,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +3838,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4",9001,4179,16264,9807,1,0,4530,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +3839,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 9",9001,4179,16269,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +3840,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 10",9001,4179,16270,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,10500000,9001,8807,0,9001,,,,,,,,,,,,, +3841,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6",9001,4178,16266,9807,1,0,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +3842,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7",9001,4178,16266,9807,1,1,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +3843,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8",9001,4178,16266,9807,1,1,4530,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +3844,"Pulkovo 1942(58) / Stereo70",9001,4179,19926,9809,1,0,4530,8801,46,9102,8802,25,9102,8805,0.99975,9201,8806,500000,9001,8807,500000,9001,,,,,,,2.329,-147.042,-92.08,0.309,-0.325,-0.497,5.69 +3845,"SWEREF99 / RT90 7.5 gon V emulation",9001,4619,17339,9807,1,0,4530,8801,0,9110,8802,11.18225,9110,8805,1.000006,9201,8806,1500025.141,9001,8807,-667.282,9001,,,,,,,,,,,,, +3846,"SWEREF99 / RT90 5 gon V emulation",9001,4619,17340,9807,1,0,4530,8801,0,9110,8802,13.332256,9110,8805,1.0000058,9201,8806,1500044.695,9001,8807,-667.13,9001,,,,,,,,,,,,, +3847,"SWEREF99 / RT90 2.5 gon V emulation",9001,4619,17341,9807,1,0,4530,8801,0,9110,8802,15.4822624306,9110,8805,1.00000561024,9201,8806,1500064.274,9001,8807,-667.711,9001,,,,,,,,,,,,, +3848,"SWEREF99 / RT90 0 gon emulation",9001,4619,17342,9807,1,0,4530,8801,0,9110,8802,18.032268,9110,8805,1.0000054,9201,8806,1500083.521,9001,8807,-668.844,9001,,,,,,,,,,,,, +3849,"SWEREF99 / RT90 2.5 gon O emulation",9001,4619,17343,9807,1,0,4530,8801,0,9110,8802,20.182274,9110,8805,1.0000052,9201,8806,1500102.765,9001,8807,-670.706,9001,,,,,,,,,,,,, +3850,"SWEREF99 / RT90 5 gon O emulation",9001,4619,17344,9807,1,0,4530,8801,0,9110,8802,22.33228,9110,8805,1.0000049,9201,8806,1500121.846,9001,8807,-672.557,9001,,,,,,,,,,,,, +3851,"NZGD2000 / NZCS2000",9001,4167,17964,9802,1,0,4500,8821,-41,9110,8822,173,9110,8823,-37.3,9110,8824,-44.3,9110,8826,3000000,9001,8827,7000000,9001,,,,,,,,,, +3852,"RSRGD2000 / DGLC2000",9001,4764,17966,9802,1,0,4500,8821,-90,9110,8822,157,9110,8823,-76.4,9110,8824,-79.2,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +3854,County ST74,9001,4619,3853,9807,1,0,4531,8801,0,9110,8802,18.0328332,9110,8805,0.99999506,9201,8806,100182.7406,9001,8807,-6500620.1207,9001,,,,,,,,,,,,, +3857,"WGS 84 / Pseudo-Mercator",9001,4326,3856,1024,1,0,4499,8801,0,9102,8802,0,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3873,"ETRS89 / GK19FIN",9001,4258,3860,9807,1,0,4500,8801,0,9102,8802,19,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +3874,"ETRS89 / GK20FIN",9001,4258,3861,9807,1,0,4500,8801,0,9102,8802,20,9102,8805,1,9201,8806,20500000,9001,8807,0,9001,,,,,,,,,,,,, +3875,"ETRS89 / GK21FIN",9001,4258,3862,9807,1,0,4500,8801,0,9102,8802,21,9102,8805,1,9201,8806,21500000,9001,8807,0,9001,,,,,,,,,,,,, +3876,"ETRS89 / GK22FIN",9001,4258,3863,9807,1,0,4500,8801,0,9102,8802,22,9102,8805,1,9201,8806,22500000,9001,8807,0,9001,,,,,,,,,,,,, +3877,"ETRS89 / GK23FIN",9001,4258,3864,9807,1,0,4500,8801,0,9102,8802,23,9102,8805,1,9201,8806,23500000,9001,8807,0,9001,,,,,,,,,,,,, +3878,"ETRS89 / GK24FIN",9001,4258,3865,9807,1,0,4500,8801,0,9102,8802,24,9102,8805,1,9201,8806,24500000,9001,8807,0,9001,,,,,,,,,,,,, +3879,"ETRS89 / GK25FIN",9001,4258,3866,9807,1,0,4500,8801,0,9102,8802,25,9102,8805,1,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +3880,"ETRS89 / GK26FIN",9001,4258,3867,9807,1,0,4500,8801,0,9102,8802,26,9102,8805,1,9201,8806,26500000,9001,8807,0,9001,,,,,,,,,,,,, +3881,"ETRS89 / GK27FIN",9001,4258,3868,9807,1,0,4500,8801,0,9102,8802,27,9102,8805,1,9201,8806,27500000,9001,8807,0,9001,,,,,,,,,,,,, +3882,"ETRS89 / GK28FIN",9001,4258,3869,9807,1,0,4500,8801,0,9102,8802,28,9102,8805,1,9201,8806,28500000,9001,8807,0,9001,,,,,,,,,,,,, +3883,"ETRS89 / GK29FIN",9001,4258,3870,9807,1,0,4500,8801,0,9102,8802,29,9102,8805,1,9201,8806,29500000,9001,8807,0,9001,,,,,,,,,,,,, +3884,"ETRS89 / GK30FIN",9001,4258,3871,9807,1,0,4500,8801,0,9102,8802,30,9102,8805,1,9201,8806,30500000,9001,8807,0,9001,,,,,,,,,,,,, +3885,"ETRS89 / GK31FIN",9001,4258,3872,9807,1,0,4500,8801,0,9102,8802,31,9102,8805,1,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +3890,"IGRS / UTM zone 37N",9001,3889,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3891,"IGRS / UTM zone 38N",9001,3889,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3892,"IGRS / UTM zone 39N",9001,3889,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3893,"ED50 / Iraq National Grid",9001,4230,19907,9807,1,0,4400,8801,29.0134566,9110,8802,46.3,9110,8805,0.9994,9201,8806,800000,9001,8807,0,9001,,,,,,,,,,,,, +3907,"MGI 1901 / Balkans zone 5",9001,3906,18275,9807,1,0,4530,8801,0,9102,8802,15,9102,8805,0.9999,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +3908,"MGI 1901 / Balkans zone 6",9001,3906,18276,9807,1,0,4530,8801,0,9102,8802,18,9102,8805,0.9999,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +3909,"MGI 1901 / Balkans zone 7",9001,3906,18277,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,0.9999,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +3910,"MGI 1901 / Balkans zone 8",9001,3906,18278,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,0.9999,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +3911,"MGI 1901 / Slovenia Grid",9001,3906,19967,9807,1,0,4530,8801,0,9110,8802,15,9110,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3912,"MGI 1901 / Slovene National Grid",9001,3906,19845,9807,1,0,4498,8801,0,9102,8802,15,9102,8805,0.9999,9201,8806,500000,9001,8807,-5000000,9001,,,,,,,,,,,,, +3920,"Puerto Rico / UTM zone 20N",9001,4139,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +3942,"RGF93 / CC42",9001,4171,18101,9802,1,0,4499,8821,42,9102,8822,3,9102,8823,41.25,9102,8824,42.75,9102,8826,1700000,9001,8827,1200000,9001,,,,,,,,,, +3943,"RGF93 / CC43",9001,4171,18102,9802,1,0,4499,8821,43,9102,8822,3,9102,8823,42.25,9102,8824,43.75,9102,8826,1700000,9001,8827,2200000,9001,,,,,,,,,, +3944,"RGF93 / CC44",9001,4171,18103,9802,1,0,4499,8821,44,9102,8822,3,9102,8823,43.25,9102,8824,44.75,9102,8826,1700000,9001,8827,3200000,9001,,,,,,,,,, +3945,"RGF93 / CC45",9001,4171,18104,9802,1,0,4499,8821,45,9102,8822,3,9102,8823,44.25,9102,8824,45.75,9102,8826,1700000,9001,8827,4200000,9001,,,,,,,,,, +3946,"RGF93 / CC46",9001,4171,18105,9802,1,0,4499,8821,46,9102,8822,3,9102,8823,45.25,9102,8824,46.75,9102,8826,1700000,9001,8827,5200000,9001,,,,,,,,,, +3947,"RGF93 / CC47",9001,4171,18106,9802,1,0,4499,8821,47,9102,8822,3,9102,8823,46.25,9102,8824,47.75,9102,8826,1700000,9001,8827,6200000,9001,,,,,,,,,, +3948,"RGF93 / CC48",9001,4171,18107,9802,1,0,4499,8821,48,9102,8822,3,9102,8823,47.25,9102,8824,48.75,9102,8826,1700000,9001,8827,7200000,9001,,,,,,,,,, +3949,"RGF93 / CC49",9001,4171,18108,9802,1,0,4499,8821,49,9102,8822,3,9102,8823,48.25,9102,8824,49.75,9102,8826,1700000,9001,8827,8200000,9001,,,,,,,,,, +3950,"RGF93 / CC50",9001,4171,18109,9802,1,0,4499,8821,50,9102,8822,3,9102,8823,49.25,9102,8824,50.75,9102,8826,1700000,9001,8827,9200000,9001,,,,,,,,,, +3968,"NAD83 / Virginia Lambert",9001,4269,3967,9802,1,0,4499,8821,36,9102,8822,-79.5,9102,8823,37,9102,8824,39.5,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3969,"NAD83(HARN) / Virginia Lambert",9001,4152,3967,9802,1,0,4499,8821,36,9102,8822,-79.5,9102,8823,37,9102,8824,39.5,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3970,"NAD83(NSRS2007) / Virginia Lambert",9001,4759,3967,9802,1,0,4499,8821,36,9102,8822,-79.5,9102,8823,37,9102,8824,39.5,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3973,"WGS 84 / NSIDC EASE-Grid North",9001,4326,3897,1027,1,1,4469,8801,90,9102,8802,0,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3974,"WGS 84 / NSIDC EASE-Grid South",9001,4326,3898,1027,1,1,4470,8801,-90,9102,8802,0,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +3975,"WGS 84 / NSIDC EASE-Grid Global",9001,4326,19869,9834,1,1,4499,8802,0,9102,8806,0,9001,8807,0,9001,8823,30,9102,,,,,,,,,,,,,,,, +3976,"WGS 84 / NSIDC Sea Ice Polar Stereographic South",9001,4326,19866,9829,1,0,4470,8806,0,9001,8807,0,9001,8832,-70,9102,8833,0,9102,,,,,,,,,,,,,,,, +3978,"NAD83 / Canada Atlas Lambert",9001,4269,3977,9802,1,0,4400,8821,49,9102,8822,-95,9102,8823,49,9102,8824,77,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3979,"NAD83(CSRS) / Canada Atlas Lambert",9001,4617,3977,9802,1,0,4400,8821,49,9102,8822,-95,9102,8823,49,9102,8824,77,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +3985,"Katanga 1955 / Katanga Lambert",9001,4695,3980,9802,1,1,4499,8821,9,9102,8822,26,9102,8823,-6.5,9102,8824,-11.5,9102,8826,500000,9001,8827,500000,9001,,,,,,,,,, +3986,"Katanga 1955 / Katanga Gauss zone A",9001,4695,3981,9807,1,0,4499,8801,-9,9102,8802,30,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +3987,"Katanga 1955 / Katanga Gauss zone B",9001,4695,3982,9807,1,0,4499,8801,-9,9102,8802,28,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +3988,"Katanga 1955 / Katanga Gauss zone C",9001,4695,3983,9807,1,0,4499,8801,-9,9102,8802,26,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +3989,"Katanga 1955 / Katanga Gauss zone D",9001,4695,3984,9807,1,0,4499,8801,-9,9102,8802,24,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +3991,Puerto Rico State Plane CS of 1927,9003,4139,15201,9802,1,0,4497,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,500000,9003,8827,0,9003,,,,,,,,,, +3992,"Puerto Rico / St. Croix",9003,4139,15202,9802,1,0,4497,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,500000,9003,8827,100000,9003,,,,,,,,,, +3993,"Guam 1963 / Guam SPCS",9001,4675,15400,9831,1,0,4499,8801,13.282087887,9110,8802,144.445550254,9110,8806,50000,9001,8807,50000,9001,,,,,,,,,,,,,,,, +3994,"WGS 84 / Mercator 41",9001,4326,19843,9805,1,0,4499,8802,100,9102,8806,0,9001,8807,0,9001,8823,-41,9102,,,,,,,,,,,,,,,, +3995,"WGS 84 / Arctic Polar Stereographic",9001,4326,19842,9829,1,0,4469,8806,0,9001,8807,0,9001,8832,71,9102,8833,0,9102,,,,,,,,,,,,,,,, +3996,"WGS 84 / IBCAO Polar Stereographic",9001,4326,19840,9829,1,0,4469,8806,0,9001,8807,0,9001,8832,75,9102,8833,0,9102,,,,,,,,,,,,,,,, +3997,"WGS 84 / Dubai Local TM",9001,4326,19839,9807,1,0,4400,8801,0,9110,8802,55.2,9110,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4026,"MOLDREF99 / Moldova TM",9001,4023,3999,9807,1,0,4530,8801,0,9110,8802,28.24,9110,8805,0.99994,9201,8806,200000,9001,8807,-5000000,9001,,,,,,,,,,,,, +4037,"WGS 84 / TMzn35N",9001,4326,16035,9807,1,0,4500,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4038,"WGS 84 / TMzn36N",9001,4326,16036,9807,1,0,4500,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4048,"RGRDC 2005 / Congo TM zone 12",9001,4046,17412,9807,1,0,4499,8801,0,9102,8802,12,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4049,"RGRDC 2005 / Congo TM zone 14",9001,4046,17414,9807,1,0,4499,8801,0,9102,8802,14,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4050,"RGRDC 2005 / Congo TM zone 16",9001,4046,17416,9807,1,0,4499,8801,0,9102,8802,16,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4051,"RGRDC 2005 / Congo TM zone 18",9001,4046,17418,9807,1,0,4499,8801,0,9102,8802,18,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4056,"RGRDC 2005 / Congo TM zone 20",9001,4046,17420,9807,1,0,4499,8801,0,9102,8802,20,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4057,"RGRDC 2005 / Congo TM zone 22",9001,4046,17422,9807,1,0,4499,8801,0,9102,8802,22,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4058,"RGRDC 2005 / Congo TM zone 24",9001,4046,17424,9807,1,0,4499,8801,0,9102,8802,24,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4059,"RGRDC 2005 / Congo TM zone 26",9001,4046,17426,9807,1,0,4499,8801,0,9102,8802,26,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4060,"RGRDC 2005 / Congo TM zone 28",9001,4046,17428,9807,1,0,4499,8801,0,9102,8802,28,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4061,"RGRDC 2005 / UTM zone 33S",9001,4046,16133,9807,1,0,4499,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4062,"RGRDC 2005 / UTM zone 34S",9001,4046,16134,9807,1,0,4499,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4063,"RGRDC 2005 / UTM zone 35S",9001,4046,16135,9807,1,0,4499,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4071,"Chua / UTM zone 23S",9001,4224,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4082,"REGCAN95 / UTM zone 27N",9001,4081,16027,9807,1,0,4400,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4083,"REGCAN95 / UTM zone 28N",9001,4081,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4087,"WGS 84 / World Equidistant Cylindrical",9001,4326,4085,1028,1,0,4499,8802,0,9102,8806,0,9001,8807,0,9001,8823,0,9102,,,,,,,,,,,,,,,, +4088,"World Equidistant Cylindrical (Sphere)",9001,4047,4086,1029,1,0,4499,8802,0,9102,8806,0,9001,8807,0,9001,8823,0,9102,,,,,,,,,,,,,,,, +4093,"ETRS89 / DKTM1",9001,4258,4089,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.99998,9201,8806,200000,9001,8807,-5000000,9001,,,,,,,,,,,,, +4094,"ETRS89 / DKTM2",9001,4258,4090,9807,1,0,4400,8801,0,9102,8802,10,9102,8805,0.99998,9201,8806,400000,9001,8807,-5000000,9001,,,,,,,,,,,,, +4095,"ETRS89 / DKTM3",9001,4258,4091,9807,1,0,4400,8801,0,9102,8802,11.75,9102,8805,0.99998,9201,8806,600000,9001,8807,-5000000,9001,,,,,,,,,,,,, +4096,"ETRS89 / DKTM4",9001,4258,4092,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,1,9201,8806,800000,9001,8807,-5000000,9001,,,,,,,,,,,,, +4217,"NAD83 / BLM 59N (ftUS)",9003,4269,4186,9807,1,0,4497,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4390,"Kertau 1968 / Johor Grid",9001,4245,4114,9806,1,0,4400,8801,2.02333,9110,8802,103.334593,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +4391,"Kertau 1968 / Sembilan and Melaka Grid",9001,4245,4115,9806,1,0,4400,8801,2.424422,9110,8802,101.56282,9110,8806,-242.005,9001,8807,-948.547,9001,,,,,,,,,,,,,,,, +4392,"Kertau 1968 / Pahang Grid",9001,4245,4116,9806,1,0,4400,8801,3.42395,9110,8802,102.261024,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +4393,"Kertau 1968 / Selangor Grid",9001,4245,4117,9806,1,0,4400,8801,3.404924,9110,8802,101.302968,9110,8806,-21759.438,9001,8807,55960.906,9001,,,,,,,,,,,,,,,, +4394,"Kertau 1968 / Terengganu Grid",9001,4245,4177,9806,1,0,4400,8801,4.564611,9110,8802,102.534275,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +4395,"Kertau 1968 / Pinang Grid",9001,4245,4305,9806,1,0,4400,8801,5.251677,9110,8802,100.204513,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +4396,"Kertau 1968 / Kedah and Perlis Grid",9001,4245,4320,9806,1,0,4400,8801,5.575453,9110,8802,100.381534,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +4397,"Kertau 1968 / Perak Revised Grid",9001,4245,4321,9806,1,0,4400,8801,4.513377,9110,8802,100.490036,9110,8806,0,9001,8807,133453.669,9001,,,,,,,,,,,,,,,, +4398,"Kertau 1968 / Kelantan Grid",9001,4245,4323,9806,1,0,4400,8801,5.533812,9110,8802,102.103825,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +4399,"NAD27 / BLM 59N (ftUS)",9003,4267,4186,9807,1,0,4497,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4400,"NAD27 / BLM 60N (ftUS)",9003,4267,4187,9807,1,0,4497,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4401,"NAD27 / BLM 1N (ftUS)",9003,4267,4101,9807,1,0,4497,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4402,"NAD27 / BLM 2N (ftUS)",9003,4267,4102,9807,1,0,4497,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4403,"NAD27 / BLM 3N (ftUS)",9003,4267,4103,9807,1,0,4497,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4404,"NAD27 / BLM 4N (ftUS)",9003,4267,4104,9807,1,0,4497,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4405,"NAD27 / BLM 5N (ftUS)",9003,4267,4105,9807,1,0,4497,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4406,"NAD27 / BLM 6N (ftUS)",9003,4267,4106,9807,1,0,4497,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4407,"NAD27 / BLM 7N (ftUS)",9003,4267,4107,9807,1,0,4497,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4408,"NAD27 / BLM 8N (ftUS)",9003,4267,4108,9807,1,0,4497,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4409,"NAD27 / BLM 9N (ftUS)",9003,4267,4109,9807,1,0,4497,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4410,"NAD27 / BLM 10N (ftUS)",9003,4267,4110,9807,1,0,4497,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4411,"NAD27 / BLM 11N (ftUS)",9003,4267,4111,9807,1,0,4497,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4412,"NAD27 / BLM 12N (ftUS)",9003,4267,4112,9807,1,0,4497,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4413,"NAD27 / BLM 13N (ftUS)",9003,4267,4113,9807,1,0,4497,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4414,"NAD83(HARN) / Guam Map Grid",9001,4152,4325,9807,1,0,4499,8801,13.3,9110,8802,144.45,9110,8805,1,9201,8806,100000,9001,8807,200000,9001,,,,,,,,,,,,, +4415,"Katanga 1955 / Katanga Lambert",9001,4695,4416,9802,1,0,4499,8821,-9,9102,8822,26,9102,8823,-6.5,9102,8824,-11.5,9102,8826,500000,9001,8827,500000,9001,,,,,,,,,, +4417,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7",9001,4178,16267,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +4418,"NAD27 / BLM 18N (ftUS)",9003,4267,4118,9807,1,0,4497,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4419,"NAD27 / BLM 19N (ftUS)",9003,4267,4119,9807,1,0,4497,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4420,"NAD83 / BLM 60N (ftUS)",9003,4269,4187,9807,1,0,4497,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4421,"NAD83 / BLM 1N (ftUS)",9003,4269,4101,9807,1,0,4497,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4422,"NAD83 / BLM 2N (ftUS)",9003,4269,4102,9807,1,0,4497,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4423,"NAD83 / BLM 3N (ftUS)",9003,4269,4103,9807,1,0,4497,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4424,"NAD83 / BLM 4N (ftUS)",9003,4269,4104,9807,1,0,4497,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4425,"NAD83 / BLM 5N (ftUS)",9003,4269,4105,9807,1,0,4497,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4426,"NAD83 / BLM 6N (ftUS)",9003,4269,4106,9807,1,0,4497,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4427,"NAD83 / BLM 7N (ftUS)",9003,4269,4107,9807,1,0,4497,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4428,"NAD83 / BLM 8N (ftUS)",9003,4269,4108,9807,1,0,4497,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4429,"NAD83 / BLM 9N (ftUS)",9003,4269,4109,9807,1,0,4497,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4430,"NAD83 / BLM 10N (ftUS)",9003,4269,4110,9807,1,0,4497,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4431,"NAD83 / BLM 11N (ftUS)",9003,4269,4111,9807,1,0,4497,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4432,"NAD83 / BLM 12N (ftUS)",9003,4269,4112,9807,1,0,4497,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4433,"NAD83 / BLM 13N (ftUS)",9003,4269,4113,9807,1,0,4497,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4434,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8",9001,4178,16268,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +4437,"NAD83(NSRS2007) / Puerto Rico and Virgin Is.",9001,4759,15230,9802,1,0,4499,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,200000,9001,8827,200000,9001,,,,,,,,,, +4438,"NAD83 / BLM 18N (ftUS)",9003,4269,4118,9807,1,0,4497,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4439,"NAD83 / BLM 19N (ftUS)",9003,4269,4119,9807,1,0,4497,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +4455,"NAD27 / Pennsylvania South",9003,4267,4436,9802,1,0,4497,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +4456,"NAD27 / New York Long Island",9003,4267,4454,9802,1,0,4497,8821,40.3,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,2000000,9003,8827,100000,9003,,,,,,,,,, +4457,"NAD83 / South Dakota North (ftUS)",9003,4269,15394,9802,1,0,4497,8821,43.5,9110,8822,-100,9110,8823,45.41,9110,8824,44.25,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +4462,"WGS 84 / Australian Centre for Remote Sensing Lambert",9001,4326,4460,9802,1,0,4400,8821,-27,9102,8822,132,9102,8823,-18,9102,8824,-36,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +4467,"RGSPM06 / UTM zone 21N",9001,4463,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4471,"RGM04 / UTM zone 38S",9001,4470,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4474,"Cadastre 1997 / UTM zone 38S",9001,4632,16138,9807,1,1,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +4484,"Mexico ITRF92 / UTM zone 11N",9001,4483,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4485,"Mexico ITRF92 / UTM zone 12N",9001,4483,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4486,"Mexico ITRF92 / UTM zone 13N",9001,4483,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4487,"Mexico ITRF92 / UTM zone 14N",9001,4483,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4488,"Mexico ITRF92 / UTM zone 15N",9001,4483,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4489,"Mexico ITRF92 / UTM zone 16N",9001,4483,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4491,"CGCS2000 / Gauss-Kruger zone 13",9001,4490,16213,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +4492,"CGCS2000 / Gauss-Kruger zone 14",9001,4490,16214,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +4493,"CGCS2000 / Gauss-Kruger zone 15",9001,4490,16215,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +4494,"CGCS2000 / Gauss-Kruger zone 16",9001,4490,16216,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,16500000,9001,8807,0,9001,,,,,,,,,,,,, +4495,"CGCS2000 / Gauss-Kruger zone 17",9001,4490,16217,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,17500000,9001,8807,0,9001,,,,,,,,,,,,, +4496,"CGCS2000 / Gauss-Kruger zone 18",9001,4490,16218,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,18500000,9001,8807,0,9001,,,,,,,,,,,,, +4497,"CGCS2000 / Gauss-Kruger zone 19",9001,4490,16219,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +4498,"CGCS2000 / Gauss-Kruger zone 20",9001,4490,16220,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,20500000,9001,8807,0,9001,,,,,,,,,,,,, +4499,"CGCS2000 / Gauss-Kruger zone 21",9001,4490,16221,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,21500000,9001,8807,0,9001,,,,,,,,,,,,, +4500,"CGCS2000 / Gauss-Kruger zone 22",9001,4490,16222,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,22500000,9001,8807,0,9001,,,,,,,,,,,,, +4501,"CGCS2000 / Gauss-Kruger zone 23",9001,4490,16223,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,23500000,9001,8807,0,9001,,,,,,,,,,,,, +4502,"CGCS2000 / Gauss-Kruger CM 75E",9001,4490,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4503,"CGCS2000 / Gauss-Kruger CM 81E",9001,4490,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4504,"CGCS2000 / Gauss-Kruger CM 87E",9001,4490,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4505,"CGCS2000 / Gauss-Kruger CM 93E",9001,4490,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4506,"CGCS2000 / Gauss-Kruger CM 99E",9001,4490,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4507,"CGCS2000 / Gauss-Kruger CM 105E",9001,4490,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4508,"CGCS2000 / Gauss-Kruger CM 111E",9001,4490,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4509,"CGCS2000 / Gauss-Kruger CM 117E",9001,4490,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4510,"CGCS2000 / Gauss-Kruger CM 123E",9001,4490,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4511,"CGCS2000 / Gauss-Kruger CM 129E",9001,4490,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4512,"CGCS2000 / Gauss-Kruger CM 135E",9001,4490,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4513,"CGCS2000 / 3-degree Gauss-Kruger zone 25",9001,4490,16285,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +4514,"CGCS2000 / 3-degree Gauss-Kruger zone 26",9001,4490,16286,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,26500000,9001,8807,0,9001,,,,,,,,,,,,, +4515,"CGCS2000 / 3-degree Gauss-Kruger zone 27",9001,4490,16287,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,27500000,9001,8807,0,9001,,,,,,,,,,,,, +4516,"CGCS2000 / 3-degree Gauss-Kruger zone 28",9001,4490,16288,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,28500000,9001,8807,0,9001,,,,,,,,,,,,, +4517,"CGCS2000 / 3-degree Gauss-Kruger zone 29",9001,4490,16289,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,29500000,9001,8807,0,9001,,,,,,,,,,,,, +4518,"CGCS2000 / 3-degree Gauss-Kruger zone 30",9001,4490,16290,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,30500000,9001,8807,0,9001,,,,,,,,,,,,, +4519,"CGCS2000 / 3-degree Gauss-Kruger zone 31",9001,4490,16291,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +4520,"CGCS2000 / 3-degree Gauss-Kruger zone 32",9001,4490,16292,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +4521,"CGCS2000 / 3-degree Gauss-Kruger zone 33",9001,4490,16293,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,33500000,9001,8807,0,9001,,,,,,,,,,,,, +4522,"CGCS2000 / 3-degree Gauss-Kruger zone 34",9001,4490,16294,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,34500000,9001,8807,0,9001,,,,,,,,,,,,, +4523,"CGCS2000 / 3-degree Gauss-Kruger zone 35",9001,4490,16295,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,35500000,9001,8807,0,9001,,,,,,,,,,,,, +4524,"CGCS2000 / 3-degree Gauss-Kruger zone 36",9001,4490,16296,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,36500000,9001,8807,0,9001,,,,,,,,,,,,, +4525,"CGCS2000 / 3-degree Gauss-Kruger zone 37",9001,4490,16297,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,37500000,9001,8807,0,9001,,,,,,,,,,,,, +4526,"CGCS2000 / 3-degree Gauss-Kruger zone 38",9001,4490,16298,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,38500000,9001,8807,0,9001,,,,,,,,,,,,, +4527,"CGCS2000 / 3-degree Gauss-Kruger zone 39",9001,4490,16299,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,39500000,9001,8807,0,9001,,,,,,,,,,,,, +4528,"CGCS2000 / 3-degree Gauss-Kruger zone 40",9001,4490,16070,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,40500000,9001,8807,0,9001,,,,,,,,,,,,, +4529,"CGCS2000 / 3-degree Gauss-Kruger zone 41",9001,4490,16071,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,41500000,9001,8807,0,9001,,,,,,,,,,,,, +4530,"CGCS2000 / 3-degree Gauss-Kruger zone 42",9001,4490,16072,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,42500000,9001,8807,0,9001,,,,,,,,,,,,, +4531,"CGCS2000 / 3-degree Gauss-Kruger zone 43",9001,4490,16073,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,43500000,9001,8807,0,9001,,,,,,,,,,,,, +4532,"CGCS2000 / 3-degree Gauss-Kruger zone 44",9001,4490,16074,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,44500000,9001,8807,0,9001,,,,,,,,,,,,, +4533,"CGCS2000 / 3-degree Gauss-Kruger zone 45",9001,4490,16075,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,45500000,9001,8807,0,9001,,,,,,,,,,,,, +4534,"CGCS2000 / 3-degree Gauss-Kruger CM 75E",9001,4490,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4535,"CGCS2000 / 3-degree Gauss-Kruger CM 78E",9001,4490,16386,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4536,"CGCS2000 / 3-degree Gauss-Kruger CM 81E",9001,4490,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4537,"CGCS2000 / 3-degree Gauss-Kruger CM 84E",9001,4490,16388,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4538,"CGCS2000 / 3-degree Gauss-Kruger CM 87E",9001,4490,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4539,"CGCS2000 / 3-degree Gauss-Kruger CM 90E",9001,4490,16390,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4540,"CGCS2000 / 3-degree Gauss-Kruger CM 93E",9001,4490,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4541,"CGCS2000 / 3-degree Gauss-Kruger CM 96E",9001,4490,16392,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4542,"CGCS2000 / 3-degree Gauss-Kruger CM 99E",9001,4490,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4543,"CGCS2000 / 3-degree Gauss-Kruger CM 102E",9001,4490,16394,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4544,"CGCS2000 / 3-degree Gauss-Kruger CM 105E",9001,4490,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4545,"CGCS2000 / 3-degree Gauss-Kruger CM 108E",9001,4490,16396,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4546,"CGCS2000 / 3-degree Gauss-Kruger CM 111E",9001,4490,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4547,"CGCS2000 / 3-degree Gauss-Kruger CM 114E",9001,4490,16398,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4548,"CGCS2000 / 3-degree Gauss-Kruger CM 117E",9001,4490,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4549,"CGCS2000 / 3-degree Gauss-Kruger CM 120E",9001,4490,16170,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4550,"CGCS2000 / 3-degree Gauss-Kruger CM 123E",9001,4490,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4551,"CGCS2000 / 3-degree Gauss-Kruger CM 126E",9001,4490,16172,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4552,"CGCS2000 / 3-degree Gauss-Kruger CM 129E",9001,4490,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4553,"CGCS2000 / 3-degree Gauss-Kruger CM 132E",9001,4490,16174,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4554,"CGCS2000 / 3-degree Gauss-Kruger CM 135E",9001,4490,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4559,"RRAF 1991 / UTM zone 20N",9001,4558,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4568,"New Beijing / Gauss-Kruger zone 13",9001,4555,16213,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +4569,"New Beijing / Gauss-Kruger zone 14",9001,4555,16214,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +4570,"New Beijing / Gauss-Kruger zone 15",9001,4555,16215,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +4571,"New Beijing / Gauss-Kruger zone 16",9001,4555,16216,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,16500000,9001,8807,0,9001,,,,,,,,,,,,, +4572,"New Beijing / Gauss-Kruger zone 17",9001,4555,16217,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,17500000,9001,8807,0,9001,,,,,,,,,,,,, +4573,"New Beijing / Gauss-Kruger zone 18",9001,4555,16218,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,18500000,9001,8807,0,9001,,,,,,,,,,,,, +4574,"New Beijing / Gauss-Kruger zone 19",9001,4555,16219,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +4575,"New Beijing / Gauss-Kruger zone 20",9001,4555,16220,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,20500000,9001,8807,0,9001,,,,,,,,,,,,, +4576,"New Beijing / Gauss-Kruger zone 21",9001,4555,16221,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,21500000,9001,8807,0,9001,,,,,,,,,,,,, +4577,"New Beijing / Gauss-Kruger zone 22",9001,4555,16222,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,22500000,9001,8807,0,9001,,,,,,,,,,,,, +4578,"New Beijing / Gauss-Kruger zone 23",9001,4555,16223,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,23500000,9001,8807,0,9001,,,,,,,,,,,,, +4579,"New Beijing / Gauss-Kruger CM 75E",9001,4555,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4580,"New Beijing / Gauss-Kruger CM 81E",9001,4555,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4581,"New Beijing / Gauss-Kruger CM 87E",9001,4555,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4582,"New Beijing / Gauss-Kruger CM 93E",9001,4555,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4583,"New Beijing / Gauss-Kruger CM 99E",9001,4555,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4584,"New Beijing / Gauss-Kruger CM 105E",9001,4555,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4585,"New Beijing / Gauss-Kruger CM 111E",9001,4555,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4586,"New Beijing / Gauss-Kruger CM 117E",9001,4555,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4587,"New Beijing / Gauss-Kruger CM 123E",9001,4555,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4588,"New Beijing / Gauss-Kruger CM 129E",9001,4555,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4589,"New Beijing / Gauss-Kruger CM 135E",9001,4555,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4647,"ETRS89 / UTM zone 32N (zE-N)",9001,4258,4648,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +4652,"New Beijing / 3-degree Gauss-Kruger zone 25",9001,4555,16285,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +4653,"New Beijing / 3-degree Gauss-Kruger zone 26",9001,4555,16286,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,26500000,9001,8807,0,9001,,,,,,,,,,,,, +4654,"New Beijing / 3-degree Gauss-Kruger zone 27",9001,4555,16287,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,27500000,9001,8807,0,9001,,,,,,,,,,,,, +4655,"New Beijing / 3-degree Gauss-Kruger zone 28",9001,4555,16288,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,28500000,9001,8807,0,9001,,,,,,,,,,,,, +4656,"New Beijing / 3-degree Gauss-Kruger zone 29",9001,4555,16289,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,29500000,9001,8807,0,9001,,,,,,,,,,,,, +4766,"New Beijing / 3-degree Gauss-Kruger zone 30",9001,4555,16290,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,30500000,9001,8807,0,9001,,,,,,,,,,,,, +4767,"New Beijing / 3-degree Gauss-Kruger zone 31",9001,4555,16291,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +4768,"New Beijing / 3-degree Gauss-Kruger zone 32",9001,4555,16292,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +4769,"New Beijing / 3-degree Gauss-Kruger zone 33",9001,4555,16293,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,33500000,9001,8807,0,9001,,,,,,,,,,,,, +4770,"New Beijing / 3-degree Gauss-Kruger zone 34",9001,4555,16294,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,34500000,9001,8807,0,9001,,,,,,,,,,,,, +4771,"New Beijing / 3-degree Gauss-Kruger zone 35",9001,4555,16295,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,35500000,9001,8807,0,9001,,,,,,,,,,,,, +4772,"New Beijing / 3-degree Gauss-Kruger zone 36",9001,4555,16296,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,36500000,9001,8807,0,9001,,,,,,,,,,,,, +4773,"New Beijing / 3-degree Gauss-Kruger zone 37",9001,4555,16297,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,37500000,9001,8807,0,9001,,,,,,,,,,,,, +4774,"New Beijing / 3-degree Gauss-Kruger zone 38",9001,4555,16298,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,38500000,9001,8807,0,9001,,,,,,,,,,,,, +4775,"New Beijing / 3-degree Gauss-Kruger zone 39",9001,4555,16299,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,39500000,9001,8807,0,9001,,,,,,,,,,,,, +4776,"New Beijing / 3-degree Gauss-Kruger zone 40",9001,4555,16070,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,40500000,9001,8807,0,9001,,,,,,,,,,,,, +4777,"New Beijing / 3-degree Gauss-Kruger zone 41",9001,4555,16071,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,41500000,9001,8807,0,9001,,,,,,,,,,,,, +4778,"New Beijing / 3-degree Gauss-Kruger zone 42",9001,4555,16072,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,42500000,9001,8807,0,9001,,,,,,,,,,,,, +4779,"New Beijing / 3-degree Gauss-Kruger zone 43",9001,4555,16073,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,43500000,9001,8807,0,9001,,,,,,,,,,,,, +4780,"New Beijing / 3-degree Gauss-Kruger zone 44",9001,4555,16074,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,44500000,9001,8807,0,9001,,,,,,,,,,,,, +4781,"New Beijing / 3-degree Gauss-Kruger zone 45",9001,4555,16075,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,45500000,9001,8807,0,9001,,,,,,,,,,,,, +4782,"New Beijing / 3-degree Gauss-Kruger CM 75E",9001,4555,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4783,"New Beijing / 3-degree Gauss-Kruger CM 78E",9001,4555,16386,9807,1,0,4530,8801,0,9102,8802,78,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4784,"New Beijing / 3-degree Gauss-Kruger CM 81E",9001,4555,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4785,"New Beijing / 3-degree Gauss-Kruger CM 84E",9001,4555,16388,9807,1,0,4530,8801,0,9102,8802,84,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4786,"New Beijing / 3-degree Gauss-Kruger CM 87E",9001,4555,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4787,"New Beijing / 3-degree Gauss-Kruger CM 90E",9001,4555,16390,9807,1,0,4530,8801,0,9102,8802,90,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4788,"New Beijing / 3-degree Gauss-Kruger CM 93E",9001,4555,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4789,"New Beijing / 3-degree Gauss-Kruger CM 96E",9001,4555,16392,9807,1,0,4530,8801,0,9102,8802,96,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4790,"New Beijing / 3-degree Gauss-Kruger CM 99E",9001,4555,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4791,"New Beijing / 3-degree Gauss-Kruger CM 102E",9001,4555,16394,9807,1,0,4530,8801,0,9102,8802,102,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4792,"New Beijing / 3-degree Gauss-Kruger CM 105E",9001,4555,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4793,"New Beijing / 3-degree Gauss-Kruger CM 108E",9001,4555,16396,9807,1,0,4530,8801,0,9102,8802,108,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4794,"New Beijing / 3-degree Gauss-Kruger CM 111E",9001,4555,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4795,"New Beijing / 3-degree Gauss-Kruger CM 114E",9001,4555,16398,9807,1,0,4530,8801,0,9102,8802,114,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4796,"New Beijing / 3-degree Gauss-Kruger CM 117E",9001,4555,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4797,"New Beijing / 3-degree Gauss-Kruger CM 120E",9001,4555,16170,9807,1,0,4530,8801,0,9102,8802,120,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4798,"New Beijing / 3-degree Gauss-Kruger CM 123E",9001,4555,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4799,"New Beijing / 3-degree Gauss-Kruger CM 126E",9001,4555,16172,9807,1,0,4530,8801,0,9102,8802,126,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4800,"New Beijing / 3-degree Gauss-Kruger CM 129E",9001,4555,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4812,"New Beijing / 3-degree Gauss-Kruger CM 132E",9001,4555,16174,9807,1,0,4530,8801,0,9102,8802,132,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4822,"New Beijing / 3-degree Gauss-Kruger CM 135E",9001,4555,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +4826,"WGS 84 / Cape Verde National",9001,4326,4825,9802,1,0,1024,8821,15.5,9110,8822,-24,9110,8823,15,9110,8824,16.4,9110,8826,161587.83,9001,8827,128511.202,9001,,,,,,,,,, +4839,"ETRS89 / LCC Germany (N-E)",9001,4258,4838,9802,1,0,4500,8821,51,9102,8822,10.3,9110,8823,48.4,9110,8824,53.4,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +4855,"ETRS89 / NTM zone 5",9001,4258,4845,9807,1,1,4500,8801,0,9110,8802,5.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4856,"ETRS89 / NTM zone 6",9001,4258,4846,9807,1,1,4500,8801,0,9110,8802,6.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4857,"ETRS89 / NTM zone 7",9001,4258,4847,9807,1,1,4500,8801,0,9110,8802,7.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4858,"ETRS89 / NTM zone 8",9001,4258,4848,9807,1,1,4500,8801,0,9110,8802,8.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4859,"ETRS89 / NTM zone 9",9001,4258,4849,9807,1,1,4500,8801,0,9110,8802,9.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4860,"ETRS89 / NTM zone 10",9001,4258,4850,9807,1,1,4500,8801,0,9110,8802,10.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4861,"ETRS89 / NTM zone 11",9001,4258,4851,9807,1,1,4500,8801,0,9110,8802,11.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4862,"ETRS89 / NTM zone 12",9001,4258,4852,9807,1,1,4500,8801,0,9110,8802,12.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4863,"ETRS89 / NTM zone 13",9001,4258,4853,9807,1,1,4500,8801,0,9110,8802,13.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4864,"ETRS89 / NTM zone 14",9001,4258,4854,9807,1,1,4500,8801,0,9110,8802,14.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4865,"ETRS89 / NTM zone 15",9001,4258,4841,9807,1,1,4500,8801,0,9110,8802,15.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4866,"ETRS89 / NTM zone 16",9001,4258,4842,9807,1,1,4500,8801,0,9110,8802,16.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4867,"ETRS89 / NTM zone 17",9001,4258,4843,9807,1,1,4500,8801,0,9110,8802,17.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4868,"ETRS89 / NTM zone 18",9001,4258,4844,9807,1,1,4500,8801,0,9110,8802,18.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4869,"ETRS89 / NTM zone 19",9001,4258,4881,9807,1,1,4500,8801,0,9110,8802,19.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4870,"ETRS89 / NTM zone 20",9001,4258,5000,9807,1,1,4500,8801,0,9110,8802,20.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4871,"ETRS89 / NTM zone 21",9001,4258,5001,9807,1,1,4500,8801,0,9110,8802,21.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4872,"ETRS89 / NTM zone 22",9001,4258,5002,9807,1,1,4500,8801,0,9110,8802,22.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4873,"ETRS89 / NTM zone 23",9001,4258,5003,9807,1,1,4500,8801,0,9110,8802,23.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4874,"ETRS89 / NTM zone 24",9001,4258,5004,9807,1,1,4500,8801,0,9110,8802,24.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4875,"ETRS89 / NTM zone 25",9001,4258,5005,9807,1,1,4500,8801,0,9110,8802,25.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4876,"ETRS89 / NTM zone 26",9001,4258,5006,9807,1,1,4500,8801,0,9110,8802,26.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4877,"ETRS89 / NTM zone 27",9001,4258,5007,9807,1,1,4500,8801,0,9110,8802,27.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4878,"ETRS89 / NTM zone 28",9001,4258,5008,9807,1,1,4500,8801,0,9110,8802,28.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4879,"ETRS89 / NTM zone 29",9001,4258,5009,9807,1,1,4500,8801,0,9110,8802,29.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +4880,"ETRS89 / NTM zone 30",9001,4258,5010,9807,1,1,4500,8801,0,9110,8802,30.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5014,"PTRA08 / UTM zone 25N",9001,5013,16025,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5015,"PTRA08 / UTM zone 26N",9001,5013,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5016,"PTRA08 / UTM zone 28N",9001,5013,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5017,"Lisbon 1890 / Portugal Bonne New",9001,4666,5019,9828,1,0,6509,8801,39.4,9110,8802,-8.0754862,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +5018,"Lisbon / Portuguese Grid New",9001,4207,5020,9807,1,0,4499,8801,39.4,9110,8802,-8.0754862,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +5041,"WGS 84 / UPS North (E,N)",9001,4326,16061,9810,1,0,1026,8801,90,9102,8802,0,9102,8805,0.994,9201,8806,2000000,9001,8807,2000000,9001,,,,,,,,,,,,, +5042,"WGS 84 / UPS South (E,N)",9001,4326,16161,9810,1,0,1027,8801,-90,9102,8802,0,9102,8805,0.994,9201,8806,2000000,9001,8807,2000000,9001,,,,,,,,,,,,, +5048,"ETRS89 / TM35FIN(N,E)",9001,4258,16065,9807,1,0,4500,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5069,"NAD27 / Conus Albers",9001,4267,5068,9822,1,0,4499,8821,23,9102,8822,-96,9102,8823,29.3,9110,8824,45.3,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +5070,"NAD83 / Conus Albers",9001,4269,5068,9822,1,0,4499,8821,23,9102,8822,-96,9102,8823,29.3,9110,8824,45.3,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +5071,"NAD83(HARN) / Conus Albers",9001,4152,5068,9822,1,0,4499,8821,23,9102,8822,-96,9102,8823,29.3,9110,8824,45.3,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +5072,"NAD83(NSRS2007) / Conus Albers",9001,4759,5068,9822,1,0,4499,8821,23,9102,8822,-96,9102,8823,29.3,9110,8824,45.3,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +5105,"ETRS89 / NTM zone 5",9001,4258,5135,9807,1,0,4500,8801,58,9110,8802,5.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5106,"ETRS89 / NTM zone 6",9001,4258,5136,9807,1,0,4500,8801,58,9110,8802,6.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5107,"ETRS89 / NTM zone 7",9001,4258,5137,9807,1,0,4500,8801,58,9110,8802,7.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5108,"ETRS89 / NTM zone 8",9001,4258,5138,9807,1,0,4500,8801,58,9110,8802,8.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5109,"ETRS89 / NTM zone 9",9001,4258,5139,9807,1,0,4500,8801,58,9110,8802,9.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5110,"ETRS89 / NTM zone 10",9001,4258,5140,9807,1,0,4500,8801,58,9110,8802,10.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5111,"ETRS89 / NTM zone 11",9001,4258,5141,9807,1,0,4500,8801,58,9110,8802,11.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5112,"ETRS89 / NTM zone 12",9001,4258,5142,9807,1,0,4500,8801,58,9110,8802,12.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5113,"ETRS89 / NTM zone 13",9001,4258,5143,9807,1,0,4500,8801,58,9110,8802,13.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5114,"ETRS89 / NTM zone 14",9001,4258,5144,9807,1,0,4500,8801,58,9110,8802,14.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5115,"ETRS89 / NTM zone 15",9001,4258,5145,9807,1,0,4500,8801,58,9110,8802,15.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5116,"ETRS89 / NTM zone 16",9001,4258,5146,9807,1,0,4500,8801,58,9110,8802,16.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5117,"ETRS89 / NTM zone 17",9001,4258,5147,9807,1,0,4500,8801,58,9110,8802,17.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5118,"ETRS89 / NTM zone 18",9001,4258,5148,9807,1,0,4500,8801,58,9110,8802,18.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5119,"ETRS89 / NTM zone 19",9001,4258,5149,9807,1,0,4500,8801,58,9110,8802,19.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5120,"ETRS89 / NTM zone 20",9001,4258,5150,9807,1,0,4500,8801,58,9110,8802,20.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5121,"ETRS89 / NTM zone 21",9001,4258,5151,9807,1,0,4500,8801,58,9110,8802,21.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5122,"ETRS89 / NTM zone 22",9001,4258,5152,9807,1,0,4500,8801,58,9110,8802,22.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5123,"ETRS89 / NTM zone 23",9001,4258,5153,9807,1,0,4500,8801,58,9110,8802,23.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5124,"ETRS89 / NTM zone 24",9001,4258,5154,9807,1,0,4500,8801,58,9110,8802,24.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5125,"ETRS89 / NTM zone 25",9001,4258,5155,9807,1,0,4500,8801,58,9110,8802,25.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5126,"ETRS89 / NTM zone 26",9001,4258,5156,9807,1,0,4500,8801,58,9110,8802,26.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5127,"ETRS89 / NTM zone 27",9001,4258,5157,9807,1,0,4500,8801,58,9110,8802,27.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5128,"ETRS89 / NTM zone 28",9001,4258,5158,9807,1,0,4500,8801,58,9110,8802,28.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5129,"ETRS89 / NTM zone 29",9001,4258,5159,9807,1,0,4500,8801,58,9110,8802,29.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5130,"ETRS89 / NTM zone 30",9001,4258,5160,9807,1,0,4500,8801,58,9110,8802,30.3,9110,8805,1,9201,8806,100000,9001,8807,1000000,9001,,,,,,,,,,,,, +5167,"Korean 1985 / East Sea Belt",9001,4162,5049,9807,1,0,4530,8801,38,9102,8802,131,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5168,"Korean 1985 / Central Belt Jeju",9001,4162,5131,9807,1,0,4530,8801,38,9102,8802,127,9102,8805,1,9201,8806,200000,9001,8807,550000,9001,,,,,,,,,,,,, +5169,"Tokyo 1892 / Korea West Belt",9001,5132,18253,9807,1,0,4530,8801,38,9102,8802,125,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5170,"Tokyo 1892 / Korea Central Belt",9001,5132,18252,9807,1,0,4530,8801,38,9102,8802,127,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5171,"Tokyo 1892 / Korea East Belt",9001,5132,18251,9807,1,0,4530,8801,38,9102,8802,129,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5172,"Tokyo 1892 / Korea East Sea Belt",9001,5132,5049,9807,1,0,4530,8801,38,9102,8802,131,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5173,"Korean 1985 / Modified West Belt",9001,4162,5161,9807,1,0,4530,8801,38,9102,8802,125.0010405,9110,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5174,"Korean 1985 / Modified Central Belt",9001,4162,5162,9807,1,0,4530,8801,38,9102,8802,127.0010405,9110,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5175,"Korean 1985 / Modified Central Belt Jeju",9001,4162,5163,9807,1,0,4530,8801,38,9102,8802,127.0010405,9110,8805,1,9201,8806,200000,9001,8807,550000,9001,,,,,,,,,,,,, +5176,"Korean 1985 / Modified East Belt",9001,4162,5164,9807,1,0,4530,8801,38,9102,8802,129.0010405,9110,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5177,"Korean 1985 / Modified East Sea Belt",9001,4162,5165,9807,1,0,4530,8801,38,9102,8802,131.0010405,9110,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5178,"Korean 1985 / Unified CS",9001,4162,5100,9807,1,0,4530,8801,38,9102,8802,127.3,9110,8805,0.9996,9201,8806,1000000,9001,8807,2000000,9001,,,,,,,,,,,,, +5179,"Korea 2000 / Unified CS",9001,4737,5100,9807,1,0,4530,8801,38,9102,8802,127.3,9110,8805,0.9996,9201,8806,1000000,9001,8807,2000000,9001,,,,,,,,,,,,, +5180,"Korea 2000 / West Belt",9001,4737,18253,9807,1,0,4530,8801,38,9102,8802,125,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5181,"Korea 2000 / Central Belt",9001,4737,18252,9807,1,0,4530,8801,38,9102,8802,127,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5182,"Korea 2000 / Central Belt Jeju",9001,4737,5131,9807,1,0,4530,8801,38,9102,8802,127,9102,8805,1,9201,8806,200000,9001,8807,550000,9001,,,,,,,,,,,,, +5183,"Korea 2000 / East Belt",9001,4737,18251,9807,1,0,4530,8801,38,9102,8802,129,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5184,"Korea 2000 / East Sea Belt",9001,4737,5049,9807,1,0,4530,8801,38,9102,8802,131,9102,8805,1,9201,8806,200000,9001,8807,500000,9001,,,,,,,,,,,,, +5185,"Korea 2000 / West Belt 2010",9001,4737,5101,9807,1,0,4530,8801,38,9102,8802,125,9102,8805,1,9201,8806,200000,9001,8807,600000,9001,,,,,,,,,,,,, +5186,"Korea 2000 / Central Belt 2010",9001,4737,5102,9807,1,0,4530,8801,38,9102,8802,127,9102,8805,1,9201,8806,200000,9001,8807,600000,9001,,,,,,,,,,,,, +5187,"Korea 2000 / East Belt 2010",9001,4737,5103,9807,1,0,4530,8801,38,9102,8802,129,9102,8805,1,9201,8806,200000,9001,8807,600000,9001,,,,,,,,,,,,, +5188,"Korea 2000 / East Sea Belt 2010",9001,4737,5104,9807,1,0,4530,8801,38,9102,8802,131,9102,8805,1,9201,8806,200000,9001,8807,600000,9001,,,,,,,,,,,,, +5221,"S-JTSK (Ferro) / Krovak East North",9001,4818,5218,1041,1,0,4499,1036,30.1717303,9110,8806,0,9001,8807,0,9001,8811,49.3,9110,8818,78.3,9110,8819,0.9999,9201,8833,42.3,9110,,,,,,, +5223,"WGS 84 / Gabon TM",9001,4326,5222,9807,1,0,4499,8801,0,9102,8802,12,9102,8805,0.9996,9201,8806,500000,9001,8807,500000,9001,,,,,,,,,,,,, +5224,"S-JTSK/05 (Ferro) / Modified Krovak",9001,5229,5219,1042,1,0,6501,1026,0.02946529277,9203,1027,0.02515965696,9203,1028,1.193845912e-07,9203,1029,-4.668270147e-07,9203,1030,9.233980362e-12,9203,1031,1.523735715e-12,9203,1032,1.696780024e-18,9203,,,,,,, +5225,"S-JTSK/05 (Ferro) / Modified Krovak East North",9001,5229,5220,1043,1,0,4499,1026,0.02946529277,9203,1027,0.02515965696,9203,1028,1.193845912e-07,9203,1029,-4.668270147e-07,9203,1030,9.233980362e-12,9203,1031,1.523735715e-12,9203,1032,1.696780024e-18,9203,,,,,,, +5234,"Kandawala / Sri Lanka Grid",9001,4244,5231,9807,1,0,4400,8801,7.0001729,9110,8802,80.461816,9110,8805,0.9999238418,9201,8806,200000,9001,8807,200000,9001,,,,,,,,,,,,, +5235,"SLD99 / Sri Lanka Grid 1999",9001,5233,5232,9807,1,0,4400,8801,7.00016975,9110,8802,80.46181671,9110,8805,0.9999238418,9201,8806,500000,9001,8807,500000,9001,,,,,,,,,,,,, +5243,"ETRS89 / LCC Germany (E-N)",9001,4258,4838,9802,1,0,4400,8821,51,9102,8822,10.3,9110,8823,48.4,9110,8824,53.4,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +5247,"GDBD2009 / Brunei BRSO",9001,5246,19894,9812,1,0,4400,8806,0,9001,8807,0,9001,8811,4,9110,8812,115,9110,8813,53.185691582,9110,8814,53.07483685,9110,8815,0.99984,9201,,,,,,, +5253,"TUREF / TM27",9001,5252,16305,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5254,"TUREF / TM30",9001,5252,16370,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5255,"TUREF / TM33",9001,5252,16306,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5256,"TUREF / TM36",9001,5252,16372,9807,1,0,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5257,"TUREF / TM39",9001,5252,16307,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5258,"TUREF / TM42",9001,5252,16374,9807,1,0,4530,8801,0,9102,8802,42,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5259,"TUREF / TM45",9001,5252,16308,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5266,"DRUKREF 03 / Bhutan National Grid",9001,5264,5265,9807,1,0,4400,8801,0,9102,8802,90,9102,8805,1,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +5269,"TUREF / 3-degree Gauss-Kruger zone 9",9001,5252,16269,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +5270,"TUREF / 3-degree Gauss-Kruger zone 10",9001,5252,16270,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,10500000,9001,8807,0,9001,,,,,,,,,,,,, +5271,"TUREF / 3-degree Gauss-Kruger zone 11",9001,5252,16271,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,11500000,9001,8807,0,9001,,,,,,,,,,,,, +5272,"TUREF / 3-degree Gauss-Kruger zone 12",9001,5252,16272,9807,1,0,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,12500000,9001,8807,0,9001,,,,,,,,,,,,, +5273,"TUREF / 3-degree Gauss-Kruger zone 13",9001,5252,16273,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +5274,"TUREF / 3-degree Gauss-Kruger zone 14",9001,5252,16274,9807,1,0,4530,8801,0,9102,8802,42,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +5275,"TUREF / 3-degree Gauss-Kruger zone 15",9001,5252,16275,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +5292,"DRUKREF 03 / Bumthang TM",9001,5264,5268,9807,1,0,4400,8801,0,9110,8802,90.44,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5293,"DRUKREF 03 / Chhukha TM",9001,5264,5276,9807,1,0,4400,8801,0,9110,8802,89.33,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5294,"DRUKREF 03 / Dagana TM",9001,5264,5277,9807,1,0,4400,8801,0,9110,8802,89.51,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5295,"DRUKREF 03 / Gasa TM",9001,5264,5278,9807,1,0,4400,8801,0,9110,8802,90.02,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5296,"DRUKREF 03 / Ha TM",9001,5264,5279,9807,1,0,4400,8801,0,9110,8802,90.09,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5297,"DRUKREF 03 / Lhuentse TM",9001,5264,5280,9807,1,0,4400,8801,0,9110,8802,91.08,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5298,"DRUKREF 03 / Mongar TM",9001,5264,5281,9807,1,0,4400,8801,0,9110,8802,91.14,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5299,"DRUKREF 03 / Paro TM",9001,5264,5282,9807,1,0,4400,8801,0,9110,8802,89.21,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5300,"DRUKREF 03 / Pemagatshel TM",9001,5264,5283,9807,1,0,4400,8801,0,9110,8802,91.21,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5301,"DRUKREF 03 / Punakha TM",9001,5264,5313,9807,1,0,4400,8801,0,9110,8802,89.51,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5302,"DRUKREF 03 / Samdrup Jongkhar TM",9001,5264,5285,9807,1,0,4400,8801,0,9110,8802,91.34,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5303,"DRUKREF 03 / Samtse TM",9001,5264,5286,9807,1,0,4400,8801,0,9110,8802,89.04,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5304,"DRUKREF 03 / Sarpang TM",9001,5264,5287,9807,1,0,4400,8801,0,9110,8802,90.16,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5305,"DRUKREF 03 / Thimphu TM",9001,5264,5312,9807,1,0,4400,8801,0,9110,8802,89.33,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5306,"DRUKREF 03 / Trashigang TM",9001,5264,5289,9807,1,0,4400,8801,0,9110,8802,91.45,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5307,"DRUKREF 03 / Trongsa TM",9001,5264,5290,9807,1,0,4400,8801,0,9110,8802,90.3,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5308,"DRUKREF 03 / Tsirang TM",9001,5264,5284,9807,1,0,4400,8801,0,9110,8802,90.1,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5309,"DRUKREF 03 / Wangdue Phodrang TM",9001,5264,5288,9807,1,0,4400,8801,0,9110,8802,90.07,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5310,"DRUKREF 03 / Yangtse TM",9001,5264,5314,9807,1,0,4400,8801,0,9110,8802,91.34,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5311,"DRUKREF 03 / Zhemgang TM",9001,5264,5291,9807,1,0,4400,8801,0,9110,8802,90.52,9110,8805,1,9201,8806,250000,9001,8807,-2500000,9001,,,,,,,,,,,,, +5316,"ETRS89 / Faroe TM",9001,4258,5315,9807,1,0,4400,8801,0,9102,8802,-7,9102,8805,0.999997,9201,8806,200000,9001,8807,-6000000,9001,,,,,,,,,,,,, +5320,"NAD83 / Teranet Ontario Lambert",9001,4269,5319,9802,1,0,4499,8821,0,9102,8822,-84,9102,8823,44.3,9110,8824,54.3,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +5321,"NAD83(CSRS) / Teranet Ontario Lambert",9001,4617,5319,9802,1,0,4499,8821,0,9102,8822,-84,9102,8823,44.3,9110,8824,54.3,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +5325,"ISN2004 / Lambert 2004",9001,5324,5326,9802,1,0,4499,8821,65,9110,8822,-19,9110,8823,64.15,9110,8824,65.45,9110,8826,1700000,9001,8827,300000,9001,,,,,,,,,, +5329,"Segara (Jakarta) / NEIEZ",9001,4820,5328,9804,1,0,4499,8801,0,9102,8802,3.113221,9110,8805,0.997,9201,8806,3900000,9001,8807,900000,9001,,,,,,,,,,,,, +5330,"Batavia (Jakarta) / NEIEZ",9001,4813,5328,9804,1,0,4499,8801,0,9102,8802,3.113221,9110,8805,0.997,9201,8806,3900000,9001,8807,900000,9001,,,,,,,,,,,,, +5331,"Makassar (Jakarta) / NEIEZ",9001,4804,5328,9804,1,0,4499,8801,0,9102,8802,3.113221,9110,8805,0.997,9201,8806,3900000,9001,8807,900000,9001,,,,,,,,,,,,, +5337,"Aratu / UTM zone 25S",9001,4208,16125,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5343,"POSGAR 2007 / Argentina 1",9001,5340,18031,9807,1,0,4530,8801,-90,9102,8802,-72,9102,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +5344,"POSGAR 2007 / Argentina 2",9001,5340,18032,9807,1,0,4530,8801,-90,9102,8802,-69,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +5345,"POSGAR 2007 / Argentina 3",9001,5340,18033,9807,1,0,4530,8801,-90,9102,8802,-66,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +5346,"POSGAR 2007 / Argentina 4",9001,5340,18034,9807,1,0,4530,8801,-90,9102,8802,-63,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +5347,"POSGAR 2007 / Argentina 5",9001,5340,18035,9807,1,0,4530,8801,-90,9102,8802,-60,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +5348,"POSGAR 2007 / Argentina 6",9001,5340,18036,9807,1,0,4530,8801,-90,9102,8802,-57,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +5349,"POSGAR 2007 / Argentina 7",9001,5340,18037,9807,1,0,4530,8801,-90,9102,8802,-54,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +5355,"MARGEN / UTM zone 20S",9001,5354,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5356,"MARGEN / UTM zone 19S",9001,5354,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5357,"MARGEN / UTM zone 21S",9001,5354,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5361,"SIRGAS-Chile / UTM zone 19S",9001,5360,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5362,"SIRGAS-Chile / UTM zone 18S",9001,5360,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5367,"CR05 / CRTM05",9001,5365,5366,9807,1,0,4500,8801,0,9102,8802,-84,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5382,"SIRGAS-ROU98 / UTM zone 21S",9001,5381,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5383,"SIRGAS-ROU98 / UTM zone 22S",9001,5381,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5387,"Peru96 / UTM zone 18S",9001,5373,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5388,"Peru96 / UTM zone 17S",9001,5373,16017,9807,1,1,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5389,"Peru96 / UTM zone 19S",9001,5373,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5396,"SIRGAS 2000 / UTM zone 26S",9001,4674,16126,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5456,"Ocotepeque 1935 / Costa Rica Norte",9001,5451,5390,9801,1,0,4499,8801,10.28,9110,8802,-84.2,9110,8805,0.99995696,9201,8806,500000,9001,8807,271820.522,9001,,,,,,,,,,,,, +5457,"Ocotepeque 1935 / Costa Rica Sur",9001,5451,5394,9801,1,0,4499,8801,9,9110,8802,-83.4,9110,8805,0.99995696,9201,8806,500000,9001,8807,327987.436,9001,,,,,,,,,,,,, +5458,"Ocotepeque 1935 / Guatemala Norte",9001,4267,18211,9801,1,1,4499,8801,16.49,9110,8802,-90.2,9110,8805,0.99992226,9201,8806,500000,9001,8807,292209.579,9001,,,,,,,,,,,,, +5459,"Ocotepeque 1935 / Guatemala Sur",9001,5451,18212,9801,1,0,4499,8801,14.54,9110,8802,-90.2,9110,8805,0.99989906,9201,8806,500000,9001,8807,325992.681,9001,,,,,,,,,,,,, +5460,"Ocotepeque 1935 / El Salvador Lambert",9001,5451,5399,9801,1,0,4499,8801,13.47,9110,8802,-89,9110,8805,0.99996704,9201,8806,500000,9001,8807,295809.184,9001,,,,,,,,,,,,, +5461,"Ocotepeque 1935 / Nicaragua Norte",9001,5451,5439,9801,1,0,4499,8801,13.52,9110,8802,-85.3,9110,8805,0.99990314,9201,8806,500000,9001,8807,359891.816,9001,,,,,,,,,,,,, +5462,"Ocotepeque 1935 / Nicaragua Sur",9001,5451,5444,9801,1,0,4499,8801,11.44,9110,8802,-85.3,9110,8805,0.99992228,9201,8806,500000,9001,8807,288876.327,9001,,,,,,,,,,,,, +5463,"SAD69 / UTM zone 17N",9001,4618,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5466,"Sibun Gorge 1922 / Colony Grid",9001,5464,5465,9807,1,1,4499,8801,17.0340471,9110,8802,-88.3754687,9110,8805,1,9201,8806,217259.26,9005,8807,445474.83,9005,,,,,,,,,,,,, +5469,"Panama-Colon 1911 / Panama Lambert",9001,5467,5468,9801,1,0,4499,8801,8.25,9110,8802,-80,9110,8805,0.99989909,9201,8806,500000,9001,8807,294865.303,9001,,,,,,,,,,,,, +5472,"Panama-Colon 1911 / Panama Polyconic",9037,5467,5471,9818,1,0,1028,8801,8.15,9110,8802,-81,9110,8806,1000000,9037,8807,1092972.1,9037,,,,,,,,,,,,,,,, +5479,"RSRGD2000 / MSLC2000",9001,4764,5475,9802,1,0,4500,8821,-78,9110,8822,163,9110,8823,-76.4,9110,8824,-79.2,9110,8826,7000000,9001,8827,5000000,9001,,,,,,,,,, +5480,"RSRGD2000 / BCLC2000",9001,4764,5476,9802,1,0,4500,8821,-74.3,9110,8822,165,9110,8823,-73.4,9110,8824,-75.2,9110,8826,5000000,9001,8827,3000000,9001,,,,,,,,,, +5481,"RSRGD2000 / PCLC2000",9001,4764,5477,9802,1,0,4500,8821,-71.3,9110,8822,166,9110,8823,-70.4,9110,8824,-72.2,9110,8826,3000000,9001,8827,1000000,9001,,,,,,,,,, +5482,"RSRGD2000 / RSPS2000",9001,4764,5478,9810,1,0,1044,8801,-90,9102,8802,180,9102,8805,0.994,9201,8806,5000000,9001,8807,1000000,9001,,,,,,,,,,,,, +5490,"RGAF09 / UTM zone 20N",9001,5489,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5513,"S-JTSK / Krovak",9001,4156,5509,9819,1,0,6501,1036,30.1717303,9110,8806,0,9001,8807,0,9001,8811,49.3,9110,8818,78.3,9110,8819,0.9999,9201,8833,24.5,9110,,,,,,, +5514,"S-JTSK / Krovak East North",9001,4156,5510,1041,1,0,4499,1036,30.1717303,9110,8806,0,9001,8807,0,9001,8811,49.3,9110,8818,78.3,9110,8819,0.9999,9201,8833,24.5,9110,,,,,,, +5515,"S-JTSK/05 / Modified Krovak",9001,5228,5511,1042,1,0,6501,1026,0.02946529277,9203,1027,0.02515965696,9203,1028,1.193845912e-07,9203,1029,-4.668270147e-07,9203,1030,9.233980362e-12,9203,1031,1.523735715e-12,9203,1032,1.696780024e-18,9203,,,,,,, +5516,"S-JTSK/05 / Modified Krovak East North",9001,5228,5512,1043,1,0,4499,1026,0.02946529277,9203,1027,0.02515965696,9203,1028,1.193845912e-07,9203,1029,-4.668270147e-07,9203,1030,9.233980362e-12,9203,1031,1.523735715e-12,9203,1032,1.696780024e-18,9203,,,,,,, +5518,"CI1971 / Chatham Islands Map Grid",9001,4672,5517,9807,1,0,4500,8801,-44,9110,8802,-176.3,9110,8805,1,9201,8806,350000,9001,8807,650000,9001,,,,,,,,,,,,, +5519,"CI1979 / Chatham Islands Map Grid",9001,4673,5517,9807,1,0,4500,8801,-44,9110,8802,-176.3,9110,8805,1,9201,8806,350000,9001,8807,650000,9001,,,,,,,,,,,,, +5520,"DHDN / 3-degree Gauss-Kruger zone 1",9001,4314,16261,9807,1,0,4530,8801,0,9102,8802,3,9102,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +5523,"WGS 84 / Gabon TM 2011",9001,4326,5522,9807,1,0,4499,8801,0,9102,8802,11.3,9110,8805,0.9996,9201,8806,1500000,9001,8807,5500000,9001,,,,,,,,,,,,, +5530,"SAD69(96) / Brazil Polyconic",9001,5527,19941,9818,1,0,4499,8801,0,9102,8802,-54,9102,8806,5000000,9001,8807,10000000,9001,,,,,,,,,,,,,,,, +5531,"SAD69(96) / UTM zone 21S",9001,5527,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5532,"SAD69(96) / UTM zone 22S",9001,4618,16122,9807,1,1,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5533,"SAD69(96) / UTM zone 23S",9001,5527,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5534,"SAD69(96) / UTM zone 24S",9001,5527,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5535,"SAD69(96) / UTM zone 25S",9001,5527,16125,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5536,"Corrego Alegre 1961 / UTM zone 21S",9001,5524,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5537,"Corrego Alegre 1961 / UTM zone 22S",9001,5524,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5538,"Corrego Alegre 1961 / UTM zone 23S",9001,5524,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5539,"Corrego Alegre 1961 / UTM zone 24S",9001,5524,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5550,"PNG94 / PNGMG94 zone 54",9001,5546,5547,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5551,"PNG94 / PNGMG94 zone 55",9001,5546,5548,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5552,"PNG94 / PNGMG94 zone 56",9001,5546,5549,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5559,"Ocotepeque 1935 / Guatemala Norte",9001,5451,18211,9801,1,0,4499,8801,16.49,9110,8802,-90.2,9110,8805,0.99992226,9201,8806,500000,9001,8807,292209.579,9001,,,,,,,,,,,,, +5562,"UCS-2000 / Gauss-Kruger zone 4",9001,5561,16204,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +5563,"UCS-2000 / Gauss-Kruger zone 5",9001,5561,16205,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +5564,"UCS-2000 / Gauss-Kruger zone 6",9001,5561,16206,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +5565,"UCS-2000 / Gauss-Kruger zone 7",9001,5561,16207,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +5566,"UCS-2000 / Gauss-Kruger CM 21E",9001,5561,16304,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5567,"UCS-2000 / Gauss-Kruger CM 27E",9001,5561,16305,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5568,"UCS-2000 / Gauss-Kruger CM 33E",9001,5561,16306,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5569,"UCS-2000 / Gauss-Kruger CM 39E",9001,5561,16307,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5570,"UCS-2000 / 3-degree Gauss-Kruger zone 7",9001,5561,16267,9807,1,1,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +5571,"UCS-2000 / 3-degree Gauss-Kruger zone 8",9001,5561,16268,9807,1,1,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +5572,"UCS-2000 / 3-degree Gauss-Kruger zone 9",9001,5561,16269,9807,1,1,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +5573,"UCS-2000 / 3-degree Gauss-Kruger zone 10",9001,5561,16270,9807,1,1,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,10500000,9001,8807,0,9001,,,,,,,,,,,,, +5574,"UCS-2000 / 3-degree Gauss-Kruger zone 11",9001,5561,16271,9807,1,1,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,11500000,9001,8807,0,9001,,,,,,,,,,,,, +5575,"UCS-2000 / 3-degree Gauss-Kruger zone 12",9001,5561,16272,9807,1,1,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,12500000,9001,8807,0,9001,,,,,,,,,,,,, +5576,"UCS-2000 / 3-degree Gauss-Kruger zone 13",9001,5561,16273,9807,1,1,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +5577,"UCS-2000 / 3-degree Gauss-Kruger CM 21E",9001,5561,16304,9807,1,1,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5578,"UCS-2000 / 3-degree Gauss-Kruger CM 24E",9001,5561,16368,9807,1,1,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5579,"UCS-2000 / 3-degree Gauss-Kruger CM 27E",9001,5561,16305,9807,1,1,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5580,"UCS-2000 / 3-degree Gauss-Kruger CM 30E",9001,5561,16370,9807,1,1,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5581,"UCS-2000 / 3-degree Gauss-Kruger CM 33E",9001,5561,16306,9807,1,1,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5582,"UCS-2000 / 3-degree Gauss-Kruger CM 36E",9001,5561,16372,9807,1,1,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5583,"UCS-2000 / 3-degree Gauss-Kruger CM 39E",9001,5561,16307,9807,1,1,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5588,"NAD27 / New Brunswick Stereographic (NAD27)",9002,4267,5587,9809,1,0,1029,8801,46.3,9110,8802,-66.3,9110,8805,0.999912,9201,8806,1000000,9002,8807,1000000,9002,,,,,,,,,,,,, +5589,"Sibun Gorge 1922 / Colony Grid",9005,5464,5465,9807,1,0,4403,8801,17.0340471,9110,8802,-88.3754687,9110,8805,1,9201,8806,217259.26,9005,8807,445474.83,9005,,,,,,,,,,,,, +5596,"FEH2010 / Fehmarnbelt TM",9001,5593,5595,9807,1,0,4400,8801,0,9110,8802,11.2,9110,8805,1,9201,8806,1000000,9001,8807,0,9001,,,,,,,,,,,,, +5623,"NAD27 / Michigan East",9003,4267,12101,9807,1,0,4497,8801,41.3,9110,8802,-83.4,9110,8805,0.999942857,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +5624,"NAD27 / Michigan Old Central",9003,4267,12102,9807,1,0,4497,8801,41.3,9110,8802,-85.45,9110,8805,0.999909091,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +5625,"NAD27 / Michigan West",9003,4267,12103,9807,1,0,4497,8801,41.3,9110,8802,-88.45,9110,8805,0.999909091,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +5627,"ED50 / TM 6 NE",9001,4230,16406,9807,1,0,4400,8801,0,9102,8802,6,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5629,"Moznet / UTM zone 38S",9001,4130,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5631,"Pulkovo 1942(58) / Gauss-Kruger zone 2 (E-N)",9001,4179,16202,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +5632,"PTRA08 / LCC Europe",9001,5013,19985,9802,1,0,4500,8821,52,9102,8822,10,9102,8823,35,9102,8824,65,9102,8826,4000000,9001,8827,2800000,9001,,,,,,,,,, +5633,"PTRA08 / LAEA Europe",9001,5013,19986,9820,1,0,4532,8801,52,9102,8802,10,9102,8806,4321000,9001,8807,3210000,9001,,,,,,,,,,,,,,,, +5634,"REGCAN95 / LCC Europe",9001,4081,19985,9802,1,0,4500,8821,52,9102,8822,10,9102,8823,35,9102,8824,65,9102,8826,4000000,9001,8827,2800000,9001,,,,,,,,,, +5635,"REGCAN95 / LAEA Europe",9001,4081,19986,9820,1,0,4500,8801,52,9102,8802,10,9102,8806,4321000,9001,8807,3210000,9001,,,,,,,,,,,,,,,, +5636,"TUREF / LAEA Europe",9001,5252,19986,9820,1,0,4532,8801,52,9102,8802,10,9102,8806,4321000,9001,8807,3210000,9001,,,,,,,,,,,,,,,, +5637,"TUREF / LCC Europe",9001,5252,19985,9802,1,0,4500,8821,52,9102,8822,10,9102,8823,35,9102,8824,65,9102,8826,4000000,9001,8827,2800000,9001,,,,,,,,,, +5638,"ISN2004 / LAEA Europe",9001,5324,19986,9820,1,0,4532,8801,52,9102,8802,10,9102,8806,4321000,9001,8807,3210000,9001,,,,,,,,,,,,,,,, +5639,"ISN2004 / LCC Europe",9001,5324,19985,9802,1,0,4500,8821,52,9102,8822,10,9102,8823,35,9102,8824,65,9102,8826,4000000,9001,8827,2800000,9001,,,,,,,,,, +5641,"SIRGAS 2000 / Brazil Mercator",9001,4674,5640,9805,1,0,4499,8802,-43,9102,8806,5000000,9001,8807,10000000,9001,8823,-2,9102,,,,,,,,,,,,,,,, +5643,"ED50 / SPBA LCC",9001,4230,5642,9802,1,0,4400,8821,48,9102,8822,10,9102,8823,52.4,9110,8824,54.2,9110,8826,815000,9001,8827,0,9001,,,,,,,,,, +5644,"RGR92 / UTM zone 39S",9001,4627,16139,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5646,"NAD83 / Vermont (ftUS)",9003,4269,5645,9807,1,0,4497,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,1640416.6667,9003,8807,0,9003,,,,,,,,,,,,, +5649,"ETRS89 / UTM zone 31N (zE-N)",9001,4258,5647,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +5650,"ETRS89 / UTM zone 33N (zE-N)",9001,4258,5648,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,33500000,9001,8807,0,9001,,,,,,,,,,,,, +5651,"ETRS89 / UTM zone 31N (N-zE)",9001,4258,5647,9807,1,0,4500,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +5652,"ETRS89 / UTM zone 32N (N-zE)",9001,4258,4648,9807,1,0,4500,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +5653,"ETRS89 / UTM zone 33N (N-zE)",9001,4258,5648,9807,1,0,4500,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,33500000,9001,8807,0,9001,,,,,,,,,,,,, +5654,"NAD83(HARN) / Vermont (ftUS)",9003,4152,5645,9807,1,0,4497,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,1640416.6667,9003,8807,0,9003,,,,,,,,,,,,, +5655,"NAD83(NSRS2007) / Vermont (ftUS)",9003,4759,5645,9807,1,0,4497,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,1640416.6667,9003,8807,0,9003,,,,,,,,,,,,, +5659,"Monte Mario / TM Emilia-Romagna",9001,4265,5658,9807,1,0,4499,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500053,9001,8807,-3999820,9001,,,,,,,,,,,,, +5663,"Pulkovo 1942(58) / Gauss-Kruger zone 3 (E-N)",9001,4179,16203,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +5664,"Pulkovo 1942(83) / Gauss-Kruger zone 2 (E-N)",9001,4178,16202,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +5665,"Pulkovo 1942(83) / Gauss-Kruger zone 3 (E-N)",9001,4178,16203,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +5666,"PD/83 / 3-degree Gauss-Kruger zone 3 (E-N)",9001,4746,16263,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +5667,"PD/83 / 3-degree Gauss-Kruger zone 4 (E-N)",9001,4746,16264,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +5668,"RD/83 / 3-degree Gauss-Kruger zone 4 (E-N)",9001,4745,16264,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +5669,"RD/83 / 3-degree Gauss-Kruger zone 5 (E-N)",9001,4745,16265,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +5670,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3 (E-N)",9001,4179,16263,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +5671,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4 (E-N)",9001,4179,16264,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +5672,"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5 (E-N)",9001,4179,16265,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +5673,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3 (E-N)",9001,4178,16263,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +5674,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4 (E-N)",9001,4178,16264,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +5675,"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5 (E-N)",9001,4178,16265,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +5676,"DHDN / 3-degree Gauss-Kruger zone 2 (E-N)",9001,4314,16262,9807,1,0,4400,8801,0,9102,8802,6,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +5677,"DHDN / 3-degree Gauss-Kruger zone 3 (E-N)",9001,4314,16263,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +5678,"DHDN / 3-degree Gauss-Kruger zone 4 (E-N)",9001,4314,16264,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +5679,"DHDN / 3-degree Gauss-Kruger zone 5 (E-N)",9001,4314,16265,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +5680,"DHDN / 3-degree Gauss-Kruger zone 1 (E-N)",9001,4314,16261,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +5682,"DB_REF / 3-degree Gauss-Kruger zone 2 (E-N)",9001,5681,16262,9807,1,0,4400,8801,0,9102,8802,6,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +5683,"DB_REF / 3-degree Gauss-Kruger zone 3 (E-N)",9001,5681,16263,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +5684,"DB_REF / 3-degree Gauss-Kruger zone 4 (E-N)",9001,5681,16264,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +5685,"DB_REF / 3-degree Gauss-Kruger zone 5 (E-N)",9001,5681,16265,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +5700,"NZGD2000 / UTM zone 1S",9001,4167,16101,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5819,EPSG topocentric example A,9001,4979,15594,9837,1,0,4461,8834,55,9102,8835,5,9102,8836,0,9001,,,,,,,,,,,,,,,,,,, +5820,EPSG topocentric example B,9001,4978,15595,9836,1,0,4461,8837,3771793.97,9001,8838,140253.34,9001,8839,5124304.35,9001,,,,,,,,,,,,,,,,,,, +5821,EPSG vertical perspective example,9001,5819,19850,9838,1,0,4461,8834,55,9102,8835,5,9102,8836,200,9001,8840,5900,9036,,,,,,,,,,,,,,,, +5825,"AGD66 / ACT Standard Grid",9001,4202,5824,9807,1,0,4400,8801,-35.19038506,9110,8802,149.003346139,9110,8805,1.000086,9201,8806,200000,9001,8807,600000,9001,,,,,,,,,,,,, +5836,"Yemen NGN96 / UTM zone 37N",9001,4163,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5837,"Yemen NGN96 / UTM zone 40N",9001,4163,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +5839,"Peru96 / UTM zone 17S",9001,5373,16117,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5842,"WGS 84 / TM 12 SE",9001,4326,16612,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5844,"RGRDC 2005 / Congo TM zone 30",9001,4046,17430,9807,1,0,4499,8801,0,9102,8802,30,9102,8805,0.9999,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5858,"SAD69(96) / UTM zone 22S",9001,5527,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5875,"SAD69(96) / UTM zone 18S",9001,5527,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5876,"SAD69(96) / UTM zone 19S",9001,5527,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5877,"SAD69(96) / UTM zone 20S",9001,5527,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5879,"Cadastre 1997 / UTM zone 38S",9001,4475,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +5880,"SIRGAS 2000 / Brazil Polyconic",9001,4674,19941,9818,1,0,4499,8801,0,9102,8802,-54,9102,8806,5000000,9001,8807,10000000,9001,,,,,,,,,,,,,,,, +5887,"TGD2005 / Tonga Map Grid",9001,5886,5883,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,1500000,9001,8807,5000000,9001,,,,,,,,,,,,, +5890,JAXA Snow Depth Polar Stereographic North,9001,4054,5889,9829,1,0,1035,8806,0,9001,8807,0,9001,8832,70,9102,8833,90,9102,,,,,,,,,,,,,,,, +5921,"WGS 84 / EPSG Arctic Regional zone A1",9001,4326,5906,9802,1,0,4400,8821,81.19020136,9110,8822,-111,9102,8823,85,9102,8824,77,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5922,"WGS 84 / EPSG Arctic Regional zone A2",9001,4326,5907,9802,1,0,4400,8821,81.19020136,9110,8822,-39,9102,8823,85,9102,8824,77,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5923,"WGS 84 / EPSG Arctic Regional zone A3",9001,4326,5908,9802,1,0,4400,8821,81.19020136,9110,8822,33,9102,8823,85,9102,8824,77,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5924,"WGS 84 / EPSG Arctic Regional zone A4",9001,4326,5909,9802,1,0,4400,8821,81.19020136,9110,8822,105,9102,8823,85,9102,8824,77,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5925,"WGS 84 / EPSG Arctic Regional zone A5",9001,4326,5910,9802,1,0,4400,8821,81.19020136,9110,8822,177,9102,8823,85,9102,8824,77,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5926,"WGS 84 / EPSG Arctic Regional zone B1",9001,4326,5911,9802,1,0,4400,8821,73.09206671,9110,8822,-111,9102,8823,77,9102,8824,69,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5927,"WGS 84 / EPSG Arctic Regional zone B2",9001,4326,5912,9802,1,0,4400,8821,73.09206671,9110,8822,-39,9102,8823,77,9102,8824,69,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5928,"WGS 84 / EPSG Arctic Regional zone B3",9001,4326,5913,9802,1,0,4400,8821,73.09206671,9110,8822,33,9102,8823,77,9102,8824,69,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5929,"WGS 84 / EPSG Arctic Regional zone B4",9001,4326,5914,9802,1,0,4400,8821,73.09206671,9110,8822,105,9102,8823,77,9102,8824,69,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5930,"WGS 84 / EPSG Arctic Regional zone B5",9001,4326,5915,9802,1,0,4400,8821,73.09206671,9110,8822,177,9102,8823,77,9102,8824,69,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5931,"WGS 84 / EPSG Arctic Regional zone C1",9001,4326,5916,9802,1,0,4400,8821,65.06045752,9110,8822,-111,9102,8823,69,9102,8824,61,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5932,"WGS 84 / EPSG Arctic Regional zone C2",9001,4326,5917,9802,1,0,4400,8821,65.06045752,9110,8822,-39,9102,8823,69,9102,8824,61,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5933,"WGS 84 / EPSG Arctic Regional zone C3",9001,4326,5918,9802,1,0,4400,8821,65.06045752,9110,8822,33,9102,8823,69,9102,8824,61,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5934,"WGS 84 / EPSG Arctic Regional zone C4",9001,4326,5919,9802,1,0,4400,8821,65.06045752,9110,8822,105,9102,8823,69,9102,8824,61,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5935,"WGS 84 / EPSG Arctic Regional zone C5",9001,4326,5920,9802,1,0,4400,8821,65.06045752,9110,8822,177,9102,8823,69,9102,8824,61,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +5936,"WGS 84 / EPSG Alaska Polar Stereographic",9001,4326,5901,9810,1,0,4467,8801,90,9102,8802,-150,9102,8805,0.994,9201,8806,2000000,9001,8807,2000000,9001,,,,,,,,,,,,, +5937,"WGS 84 / EPSG Canada Polar Stereographic",9001,4326,5902,9810,1,0,4466,8801,90,9102,8802,-100,9102,8805,0.994,9201,8806,2000000,9001,8807,2000000,9001,,,,,,,,,,,,, +5938,"WGS 84 / EPSG Greenland Polar Stereographic",9001,4326,5903,9810,1,0,1036,8801,90,9102,8802,-33,9102,8805,0.994,9201,8806,2000000,9001,8807,2000000,9001,,,,,,,,,,,,, +5939,"WGS 84 / EPSG Norway Polar Stereographic",9001,4326,5904,9810,1,0,1037,8801,90,9102,8802,18,9102,8805,0.994,9201,8806,2000000,9001,8807,2000000,9001,,,,,,,,,,,,, +5940,"WGS 84 / EPSG Russia Polar Stereographic",9001,4326,5905,9810,1,0,1038,8801,90,9102,8802,105,9102,8805,0.994,9201,8806,2000000,9001,8807,2000000,9001,,,,,,,,,,,,, +6050,"GR96 / EPSG Arctic zone 1-25",9001,4747,5979,9802,1,0,4400,8821,85.2613626,9110,8822,-30,9110,8823,87,9110,8824,83.4,9110,8826,25500000,9001,8827,1500000,9001,,,,,,,,,, +6051,"GR96 / EPSG Arctic zone 2-18",9001,4747,5987,9802,1,0,4400,8821,82.03303296,9110,8822,-52,9110,8823,83.4,9110,8824,80.2,9110,8826,18500000,9001,8827,2500000,9001,,,,,,,,,, +6052,"GR96 / EPSG Arctic zone 2-20",9001,4747,5988,9802,1,0,4400,8821,82.03303296,9110,8822,-12,9110,8823,83.4,9110,8824,80.2,9110,8826,20500000,9001,8827,2500000,9001,,,,,,,,,, +6053,"GR96 / EPSG Arctic zone 3-29",9001,4747,6002,9802,1,0,4400,8821,78.42264151,9110,8822,-69,9110,8823,80.2,9110,8824,77,9110,8826,29500000,9001,8827,3500000,9001,,,,,,,,,, +6054,"GR96 / EPSG Arctic zone 3-31",9001,4747,6003,9802,1,0,4400,8821,78.42264151,9110,8822,-39,9110,8823,80.2,9110,8824,77,9110,8826,31500000,9001,8827,3500000,9001,,,,,,,,,, +6055,"GR96 / EPSG Arctic zone 3-33",9001,4747,6004,9802,1,0,4400,8821,78.42264151,9110,8822,-10,9110,8823,80.2,9110,8824,77,9110,8826,33500000,9001,8827,3500000,9001,,,,,,,,,, +6056,"GR96 / EPSG Arctic zone 4-20",9001,4747,6009,9802,1,0,4400,8821,75.21518519,9110,8822,-64,9110,8823,77,9110,8824,73.4,9110,8826,20500000,9001,8827,4500000,9001,,,,,,,,,, +6057,"GR96 / EPSG Arctic zone 4-22",9001,4747,6010,9802,1,0,4400,8821,75.21518519,9110,8822,-39,9110,8823,77,9110,8824,73.4,9110,8826,22500000,9001,8827,4500000,9001,,,,,,,,,, +6058,"GR96 / EPSG Arctic zone 4-24",9001,4747,6011,9802,1,0,4400,8821,75.21518519,9110,8822,-14,9110,8823,77,9110,8824,73.4,9110,8826,24500000,9001,8827,4500000,9001,,,,,,,,,, +6059,"GR96 / EPSG Arctic zone 5-41",9001,4747,6035,9802,1,0,4400,8821,72.01300331,9110,8822,-62,9110,8823,73.4,9110,8824,70.2,9110,8826,41500000,9001,8827,5500000,9001,,,,,,,,,, +6060,"GR96 / EPSG Arctic zone 5-43",9001,4747,6036,9802,1,0,4400,8821,72.01300331,9110,8822,-42,9110,8823,73.4,9110,8824,70.2,9110,8826,43500000,9001,8827,5500000,9001,,,,,,,,,, +6061,"GR96 / EPSG Arctic zone 5-45",9001,4747,6037,9802,1,0,4400,8821,72.01300331,9110,8822,-22,9110,8823,73.4,9110,8824,70.2,9110,8826,45500000,9001,8827,5500000,9001,,,,,,,,,, +6062,"GR96 / EPSG Arctic zone 6-26",9001,4747,6045,9802,1,0,4400,8821,68.4114912,9110,8822,-56,9110,8823,70.2,9110,8824,67,9110,8826,26500000,9001,8827,6500000,9001,,,,,,,,,, +6063,"GR96 / EPSG Arctic zone 6-28",9001,4747,6046,9802,1,0,4400,8821,68.4114912,9110,8822,-38,9110,8823,70.2,9110,8824,67,9110,8826,28500000,9001,8827,6500000,9001,,,,,,,,,, +6064,"GR96 / EPSG Arctic zone 6-30",9001,4747,6047,9802,1,0,4400,8821,68.4114912,9110,8822,-20,9110,8823,70.2,9110,8824,67,9110,8826,30500000,9001,8827,6500000,9001,,,,,,,,,, +6065,"GR96 / EPSG Arctic zone 7-11",9001,4747,6048,9802,1,0,4400,8821,65.21037415,9110,8822,-51,9110,8823,67,9110,8824,63.4,9110,8826,11500000,9001,8827,7500000,9001,,,,,,,,,, +6066,"GR96 / EPSG Arctic zone 7-13",9001,4747,6049,9802,1,0,4400,8821,65.21037415,9110,8822,-34,9110,8823,67,9110,8824,63.4,9110,8826,13500000,9001,8827,7500000,9001,,,,,,,,,, +6067,"GR96 / EPSG Arctic zone 8-20",9001,4747,5943,9802,1,0,4400,8821,62.00551048,9110,8822,-52,9110,8823,63.4,9110,8824,60.2,9110,8826,20500000,9001,8827,8500000,9001,,,,,,,,,, +6068,"GR96 / EPSG Arctic zone 8-22",9001,4747,5944,9802,1,0,4400,8821,62.00551048,9110,8822,-37,9110,8823,63.4,9110,8824,60.2,9110,8826,22500000,9001,8827,8500000,9001,,,,,,,,,, +6069,"ETRS89 / EPSG Arctic zone 2-22",9001,4258,5989,9802,1,0,4400,8821,82.03303296,9110,8822,16,9110,8823,83.4,9110,8824,80.2,9110,8826,22500000,9001,8827,2500000,9001,,,,,,,,,, +6070,"ETRS89 / EPSG Arctic zone 3-11",9001,4258,5993,9802,1,0,4400,8821,78.42264151,9110,8822,21,9110,8823,80.2,9110,8824,77,9110,8826,11500000,9001,8827,3500000,9001,,,,,,,,,, +6071,"ETRS89 / EPSG Arctic zone 4-26",9001,4258,6012,9802,1,0,4400,8821,75.21518519,9110,8822,10,9110,8823,77,9110,8824,73.4,9110,8826,26500000,9001,8827,4500000,9001,,,,,,,,,, +6072,"ETRS89 / EPSG Arctic zone 4-28",9001,4258,6013,9802,1,0,4400,8821,75.21518519,9110,8822,34,9110,8823,77,9110,8824,73.4,9110,8826,28500000,9001,8827,4500000,9001,,,,,,,,,, +6073,"ETRS89 / EPSG Arctic zone 5-11",9001,4258,6020,9802,1,0,4400,8821,72.01300331,9110,8822,14,9110,8823,73.4,9110,8824,70.2,9110,8826,11500000,9001,8827,5500000,9001,,,,,,,,,, +6074,"ETRS89 / EPSG Arctic zone 5-13",9001,4258,6021,9802,1,0,4400,8821,72.01300331,9110,8822,34,9110,8823,73.4,9110,8824,70.2,9110,8826,13500000,9001,8827,5500000,9001,,,,,,,,,, +6075,"WGS 84 / EPSG Arctic zone 2-24",9001,4326,5990,9802,1,0,4400,8821,82.03303296,9110,8822,53,9110,8823,83.4,9110,8824,80.2,9110,8826,24500000,9001,8827,2500000,9001,,,,,,,,,, +6076,"WGS 84 / EPSG Arctic zone 2-26",9001,4326,5991,9802,1,0,4400,8821,82.03303296,9110,8822,93,9110,8823,83.4,9110,8824,80.2,9110,8826,26500000,9001,8827,2500000,9001,,,,,,,,,, +6077,"WGS 84 / EPSG Arctic zone 3-13",9001,4326,5994,9802,1,0,4400,8821,78.42264151,9110,8822,52,9110,8823,80.2,9110,8824,77,9110,8826,13500000,9001,8827,3500000,9001,,,,,,,,,, +6078,"WGS 84 / EPSG Arctic zone 3-15",9001,4326,5995,9802,1,0,4400,8821,78.42264151,9110,8822,83,9110,8823,80.2,9110,8824,77,9110,8826,15500000,9001,8827,3500000,9001,,,,,,,,,, +6079,"WGS 84 / EPSG Arctic zone 3-17",9001,4326,5996,9802,1,0,4400,8821,78.42264151,9110,8822,114,9110,8823,80.2,9110,8824,77,9110,8826,17500000,9001,8827,3500000,9001,,,,,,,,,, +6080,"WGS 84 / EPSG Arctic zone 3-19",9001,4326,5997,9802,1,0,4400,8821,78.42264151,9110,8822,145,9110,8823,80.2,9110,8824,77,9110,8826,19500000,9001,8827,3500000,9001,,,,,,,,,, +6081,"WGS 84 / EPSG Arctic zone 4-30",9001,4326,6014,9802,1,0,4400,8821,75.21518519,9110,8822,58,9110,8823,77,9110,8824,73.4,9110,8826,30500000,9001,8827,4500000,9001,,,,,,,,,, +6082,"WGS 84 / EPSG Arctic zone 4-32",9001,4326,6015,9802,1,0,4400,8821,75.21518519,9110,8822,82,9110,8823,77,9110,8824,73.4,9110,8826,32500000,9001,8827,4500000,9001,,,,,,,,,, +6083,"WGS 84 / EPSG Arctic zone 4-34",9001,4326,6016,9802,1,0,4400,8821,75.21518519,9110,8822,106,9110,8823,77,9110,8824,73.4,9110,8826,34500000,9001,8827,4500000,9001,,,,,,,,,, +6084,"WGS 84 / EPSG Arctic zone 4-36",9001,4326,6017,9802,1,0,4400,8821,75.21518519,9110,8822,130,9110,8823,77,9110,8824,73.4,9110,8826,36500000,9001,8827,4500000,9001,,,,,,,,,, +6085,"WGS 84 / EPSG Arctic zone 4-38",9001,4326,6018,9802,1,0,4400,8821,75.21518519,9110,8822,154,9110,8823,77,9110,8824,73.4,9110,8826,38500000,9001,8827,4500000,9001,,,,,,,,,, +6086,"WGS 84 / EPSG Arctic zone 4-40",9001,4326,6019,9802,1,0,4400,8821,75.21518519,9110,8822,179,9110,8823,77,9110,8824,73.4,9110,8826,40500000,9001,8827,4500000,9001,,,,,,,,,, +6087,"WGS 84 / EPSG Arctic zone 5-15",9001,4326,6022,9802,1,0,4400,8821,72.01300331,9110,8822,54,9110,8823,73.4,9110,8824,70.2,9110,8826,15500000,9001,8827,5500000,9001,,,,,,,,,, +6088,"WGS 84 / EPSG Arctic zone 5-17",9001,4326,6023,9802,1,0,4400,8821,72.01300331,9110,8822,74,9110,8823,73.4,9110,8824,70.2,9110,8826,17500000,9001,8827,5500000,9001,,,,,,,,,, +6089,"WGS 84 / EPSG Arctic zone 5-19",9001,4326,6024,9802,1,0,4400,8821,72.01300331,9110,8822,95,9110,8823,73.4,9110,8824,70.2,9110,8826,19500000,9001,8827,5500000,9001,,,,,,,,,, +6090,"WGS 84 / EPSG Arctic zone 5-21",9001,4326,6025,9802,1,0,4400,8821,72.01300331,9110,8822,116,9110,8823,73.4,9110,8824,70.2,9110,8826,21500000,9001,8827,5500000,9001,,,,,,,,,, +6091,"WGS 84 / EPSG Arctic zone 5-23",9001,4326,6026,9802,1,0,4400,8821,72.01300331,9110,8822,137,9110,8823,73.4,9110,8824,70.2,9110,8826,23500000,9001,8827,5500000,9001,,,,,,,,,, +6092,"WGS 84 / EPSG Arctic zone 5-25",9001,4326,6027,9802,1,0,4400,8821,72.01300331,9110,8822,158,9110,8823,73.4,9110,8824,70.2,9110,8826,25500000,9001,8827,5500000,9001,,,,,,,,,, +6093,"WGS 84 / EPSG Arctic zone 5-27",9001,4326,6028,9802,1,0,4400,8821,72.01300331,9110,8822,179,9110,8823,73.4,9110,8824,70.2,9110,8826,27500000,9001,8827,5500000,9001,,,,,,,,,, +6094,"NAD83(NSRS2007) / EPSG Arctic zone 5-29",9001,4759,6029,9802,1,0,4400,8821,72.01300331,9110,8822,-163,9110,8823,73.4,9110,8824,70.2,9110,8826,29500000,9001,8827,5500000,9001,,,,,,,,,, +6095,"NAD83(NSRS2007) / EPSG Arctic zone 5-31",9001,4759,6030,9802,1,0,4400,8821,72.01300331,9110,8822,-147,9110,8823,73.4,9110,8824,70.2,9110,8826,31500000,9001,8827,5500000,9001,,,,,,,,,, +6096,"NAD83(NSRS2007) / EPSG Arctic zone 6-14",9001,4759,6039,9802,1,0,4400,8821,68.4114912,9110,8822,-165,9110,8823,70.2,9110,8824,67,9110,8826,14500000,9001,8827,6500000,9001,,,,,,,,,, +6097,"NAD83(NSRS2007) / EPSG Arctic zone 6-16",9001,4759,6040,9802,1,0,4400,8821,68.4114912,9110,8822,-147,9110,8823,70.2,9110,8824,67,9110,8826,16500000,9001,8827,6500000,9001,,,,,,,,,, +6098,"NAD83(CSRS) / EPSG Arctic zone 1-23",9001,4617,5978,9802,1,0,4400,8821,85.2613626,9110,8822,-90,9110,8823,87,9110,8824,83.4,9110,8826,23500000,9001,8827,1500000,9001,,,,,,,,,, +6099,"NAD83(CSRS) / EPSG Arctic zone 2-14",9001,4617,5985,9802,1,0,4400,8821,82.03303296,9110,8822,-115,9110,8823,83.4,9110,8824,80.2,9110,8826,14500000,9001,8827,2500000,9001,,,,,,,,,, +6100,"NAD83(CSRS) / EPSG Arctic zone 2-16",9001,4617,5986,9802,1,0,4400,8821,82.03303296,9110,8822,-75,9110,8823,83.4,9110,8824,80.2,9110,8826,16500000,9001,8827,2500000,9001,,,,,,,,,, +6101,"NAD83(CSRS) / EPSG Arctic zone 3-25",9001,4617,6000,9802,1,0,4400,8821,78.42264151,9110,8822,-129,9110,8823,80.2,9110,8824,77,9110,8826,25500000,9001,8827,3500000,9001,,,,,,,,,, +6102,"NAD83(CSRS) / EPSG Arctic zone 3-27",9001,4617,6001,9802,1,0,4400,8821,78.42264151,9110,8822,-99,9110,8823,80.2,9110,8824,77,9110,8826,27500000,9001,8827,3500000,9001,,,,,,,,,, +6103,"NAD83(CSRS) / EPSG Arctic zone 3-29",9001,4617,6002,9802,1,0,4400,8821,78.42264151,9110,8822,-69,9110,8823,80.2,9110,8824,77,9110,8826,29500000,9001,8827,3500000,9001,,,,,,,,,, +6104,"NAD83(CSRS) / EPSG Arctic zone 4-14",9001,4617,6006,9802,1,0,4400,8821,75.21518519,9110,8822,-129,9110,8823,77,9110,8824,73.4,9110,8826,14500000,9001,8827,4500000,9001,,,,,,,,,, +6105,"NAD83(CSRS) / EPSG Arctic zone 4-16",9001,4617,6007,9802,1,0,4400,8821,75.21518519,9110,8822,-104,9110,8823,77,9110,8824,73.4,9110,8826,16500000,9001,8827,4500000,9001,,,,,,,,,, +6106,"NAD83(CSRS) / EPSG Arctic zone 4-18",9001,4617,6008,9802,1,0,4400,8821,75.21518519,9110,8822,-79,9110,8823,77,9110,8824,73.4,9110,8826,18500000,9001,8827,4500000,9001,,,,,,,,,, +6107,"NAD83(CSRS) / EPSG Arctic zone 5-33",9001,4617,6031,9802,1,0,4400,8821,72.01300331,9110,8822,-131,9110,8823,73.4,9110,8824,70.2,9110,8826,33500000,9001,8827,5500000,9001,,,,,,,,,, +6108,"NAD83(CSRS) / EPSG Arctic zone 5-35",9001,4617,6032,9802,1,0,4400,8821,72.01300331,9110,8822,-111,9110,8823,73.4,9110,8824,70.2,9110,8826,35500000,9001,8827,5500000,9001,,,,,,,,,, +6109,"NAD83(CSRS) / EPSG Arctic zone 5-37",9001,4617,6033,9802,1,0,4400,8821,72.01300331,9110,8822,-91,9110,8823,73.4,9110,8824,70.2,9110,8826,37500000,9001,8827,5500000,9001,,,,,,,,,, +6110,"NAD83(CSRS) / EPSG Arctic zone 5-39",9001,4617,6034,9802,1,0,4400,8821,72.01300331,9110,8822,-71,9110,8823,73.4,9110,8824,70.2,9110,8826,39500000,9001,8827,5500000,9001,,,,,,,,,, +6111,"NAD83(CSRS) / EPSG Arctic zone 6-18",9001,4617,6041,9802,1,0,4400,8821,68.4114912,9110,8822,-132,9110,8823,70.2,9110,8824,67,9110,8826,18500000,9001,8827,6500000,9001,,,,,,,,,, +6112,"NAD83(CSRS) / EPSG Arctic zone 6-20",9001,4617,6042,9802,1,0,4400,8821,68.4114912,9110,8822,-113,9110,8823,70.2,9110,8824,67,9110,8826,20500000,9001,8827,6500000,9001,,,,,,,,,, +6113,"NAD83(CSRS) / EPSG Arctic zone 6-22",9001,4617,6043,9802,1,0,4400,8821,68.4114912,9110,8822,-94,9110,8823,70.2,9110,8824,67,9110,8826,22500000,9001,8827,6500000,9001,,,,,,,,,, +6114,"NAD83(CSRS) / EPSG Arctic zone 6-24",9001,4617,6044,9802,1,0,4400,8821,68.4114912,9110,8822,-75,9110,8823,70.2,9110,8824,67,9110,8826,24500000,9001,8827,6500000,9001,,,,,,,,,, +6115,"WGS 84 / EPSG Arctic zone 1-27",9001,4326,5980,9802,1,0,4400,8821,85.2613626,9110,8822,30,9110,8823,87,9110,8824,83.4,9110,8826,27500000,9001,8827,1500000,9001,,,,,,,,,, +6116,"WGS 84 / EPSG Arctic zone 1-29",9001,4326,5981,9802,1,0,4400,8821,85.2613626,9110,8822,90,9110,8823,87,9110,8824,83.4,9110,8826,29500000,9001,8827,1500000,9001,,,,,,,,,, +6117,"WGS 84 / EPSG Arctic zone 1-31",9001,4326,5982,9802,1,0,4400,8821,85.2613626,9110,8822,150,9110,8823,87,9110,8824,83.4,9110,8826,31500000,9001,8827,1500000,9001,,,,,,,,,, +6118,"WGS 84 / EPSG Arctic zone 1-21",9001,4326,5977,9802,1,0,4400,8821,85.2613626,9110,8822,-150,9110,8823,87,9110,8824,83.4,9110,8826,21500000,9001,8827,1500000,9001,,,,,,,,,, +6119,"WGS 84 / EPSG Arctic zone 2-28",9001,4326,5992,9802,1,0,4400,8821,82.03303296,9110,8822,133,9110,8823,83.4,9110,8824,80.2,9110,8826,28500000,9001,8827,2500000,9001,,,,,,,,,, +6120,"WGS 84 / EPSG Arctic zone 2-10",9001,4326,5983,9802,1,0,4400,8821,82.03303296,9110,8822,166,9110,8823,83.4,9110,8824,80.2,9110,8826,10500000,9001,8827,2500000,9001,,,,,,,,,, +6121,"WGS 84 / EPSG Arctic zone 2-12",9001,4326,5984,9802,1,0,4400,8821,82.03303296,9110,8822,-154,9110,8823,83.4,9110,8824,80.2,9110,8826,12500000,9001,8827,2500000,9001,,,,,,,,,, +6122,"WGS 84 / EPSG Arctic zone 3-21",9001,4326,5998,9802,1,0,4400,8821,78.42264151,9110,8822,176,9110,8823,80.2,9110,8824,77,9110,8826,21500000,9001,8827,3500000,9001,,,,,,,,,, +6123,"WGS 84 / EPSG Arctic zone 3-23",9001,4326,5999,9802,1,0,4400,8821,78.42264151,9110,8822,-153,9110,8823,80.2,9110,8824,77,9110,8826,23500000,9001,8827,3500000,9001,,,,,,,,,, +6124,"WGS 84 / EPSG Arctic zone 4-12",9001,4326,6005,9802,1,0,4400,8821,75.21518519,9110,8822,-155,9110,8823,77,9110,8824,73.4,9110,8826,12500000,9001,8827,4500000,9001,,,,,,,,,, +6125,"ETRS89 / EPSG Arctic zone 5-47",9001,4258,6038,9802,1,0,4400,8821,72.01300331,9110,8822,-5,9110,8823,73.4,9110,8824,70.2,9110,8826,47500000,9001,8827,5500000,9001,,,,,,,,,, +6128,Grand Cayman National Grid 1959,9002,4723,6127,9807,1,0,1039,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,1640419.9475,9002,8807,0,9002,,,,,,,,,,,,, +6129,Sister Islands National Grid 1961,9002,4726,6127,9807,1,0,1039,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,1640419.9475,9002,8807,0,9002,,,,,,,,,,,,, +6141,Cayman Islands National Grid 2011,9002,6135,6126,9802,1,1,1039,8821,19.2,9110,8822,80.34,9110,8823,19.2,9110,8824,19.42,9110,8826,2950000,9002,8827,1900000,9002,,,,,,,,,, +6200,"NAD27 / Michigan North",9003,4267,6197,1051,1,1,4497,1038,1.0000382,9201,8821,44.87,9110,8822,-87,9110,8823,45.29,9110,8824,47.05,9110,8826,2000000,9003,8827,0,9003,,,,,,, +6201,"NAD27 / Michigan Central",9003,4267,6198,1051,1,0,4497,1038,1.0000382,9201,8821,43.19,9110,8822,-84.2,9110,8823,44.11,9110,8824,45.42,9110,8826,2000000,9003,8827,0,9003,,,,,,, +6202,"NAD27 / Michigan South",9003,4267,6199,1051,1,0,4497,1038,1.0000382,9201,8821,41.3,9110,8822,-84.2,9110,8823,42.06,9110,8824,43.4,9110,8826,2000000,9003,8827,0,9003,,,,,,, +6204,Macedonia State Coordinate System,9001,3906,6203,9807,1,0,4498,8801,0,9102,8802,21,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6210,"SIRGAS 2000 / UTM zone 23N",9001,4674,16023,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6211,"SIRGAS 2000 / UTM zone 24N",9001,4674,16024,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6244,"MAGNA-SIRGAS / Arauca urban grid",9001,4686,6212,1052,1,0,4500,1039,100,9001,8801,7.051538301,9110,8802,-70.452991476,9110,8806,1035263.443,9001,8807,1275526.621,9001,,,,,,,,,,,,, +6245,"MAGNA-SIRGAS / Armenia urban grid",9001,4686,6213,1052,1,0,4500,1039,1470,9001,8801,4.315637,9110,8802,-75.4024561,9110,8806,1155824.666,9001,8807,993087.465,9001,,,,,,,,,,,,, +6246,"MAGNA-SIRGAS / Barranquilla urban grid",9001,4686,6214,1052,1,0,4500,1039,100,9001,8801,10.55234591,9110,8802,-74.50035928,9110,8806,917264.406,9001,8807,1699839.935,9001,,,,,,,,,,,,, +6247,"MAGNA-SIRGAS / Bogota urban grid",9001,4686,6215,1052,1,0,4500,1039,2550,9001,8801,4.404975,9110,8802,-74.084773,9110,8806,92334.879,9001,8807,109320.965,9001,,,,,,,,,,,,, +6248,"MAGNA-SIRGAS / Bucaramanga urban grid",9001,4686,6216,1052,1,0,4500,1039,931,9001,8801,7.044399371,9110,8802,-73.11504356,9110,8806,1097241.305,9001,8807,1274642.278,9001,,,,,,,,,,,,, +6249,"MAGNA-SIRGAS / Cali urban grid",9001,4686,6217,1052,1,0,4500,1039,1000,9001,8801,3.263078,9110,8802,-76.3114025,9110,8806,1061900.18,9001,8807,872364.63,9001,,,,,,,,,,,,, +6250,"MAGNA-SIRGAS / Cartagena urban grid",9001,4686,6218,1052,1,0,4500,1039,0,9001,8801,10.2349371,9110,8802,-75.3040345,9110,8806,842981.41,9001,8807,1641887.09,9001,,,,,,,,,,,,, +6251,"MAGNA-SIRGAS / Cucuta urban grid",9001,4686,6219,1052,1,0,4500,1039,308,9001,8801,7.532017225,9110,8802,-72.301033542,9110,8806,842805.406,9001,8807,1364404.57,9001,,,,,,,,,,,,, +6252,"MAGNA-SIRGAS / Florencia urban grid",9001,4686,6220,1052,1,0,4500,1039,300,9001,8801,1.371564426,9110,8802,-75.370882337,9110,8806,1162300.348,9001,8807,671068.716,9001,,,,,,,,,,,,, +6253,"MAGNA-SIRGAS / Ibague urban grid",9001,4686,6221,1052,1,0,4500,1039,1100,9001,8801,4.250988618,9110,8802,-75.104773336,9110,8806,877634.33,9001,8807,980541.348,9001,,,,,,,,,,,,, +6254,"MAGNA-SIRGAS / Inirida urban grid",9001,4686,6222,1052,1,0,4500,1039,96,9001,8801,3.504357746,9110,8802,-67.541883552,9110,8806,1019177.687,9001,8807,491791.326,9001,,,,,,,,,,,,, +6255,"MAGNA-SIRGAS / Leticia urban grid",9001,4686,6223,1052,1,0,4500,1039,89.7,9001,8801,-4.115166257,9110,8802,-69.563411981,9110,8806,25978.217,9001,8807,27501.365,9001,,,,,,,,,,,,, +6256,"MAGNA-SIRGAS / Manizales urban grid",9001,4686,6224,1052,1,0,4500,1039,2100,9001,8801,5.0405354,9110,8802,-75.3039941,9110,8806,1173727.04,9001,8807,1052391.13,9001,,,,,,,,,,,,, +6257,"MAGNA-SIRGAS / Medellin urban grid",9001,4686,6225,1052,1,0,4500,1039,1510,9001,8801,6.1345152,9110,8802,-75.3353593,9110,8806,835378.647,9001,8807,1180816.875,9001,,,,,,,,,,,,, +6258,"MAGNA-SIRGAS / Mitu urban grid",9001,4686,6226,1052,1,0,4500,1039,170,9001,8801,1.145988972,9110,8802,-70.140766196,9110,8806,1093717.398,9001,8807,629997.236,9001,,,,,,,,,,,,, +6259,"MAGNA-SIRGAS / Mocoa urban grid",9001,4686,6227,1052,1,0,4500,1039,655.2,9001,8801,1.082408409,9110,8802,-76.390367639,9110,8806,1047467.388,9001,8807,617828.474,9001,,,,,,,,,,,,, +6260,"MAGNA-SIRGAS / Monteria urban grid",9001,4686,6228,1052,1,0,4500,1039,15,9001,8801,8.462310872,9110,8802,-75.524639199,9110,8806,1131814.934,9001,8807,1462131.119,9001,,,,,,,,,,,,, +6261,"MAGNA-SIRGAS / Neiva urban grid",9001,4686,6229,1052,1,0,4500,1039,430,9001,8801,2.56326942,9110,8802,-75.17471722,9110,8806,864476.923,9001,8807,817199.827,9001,,,,,,,,,,,,, +6262,"MAGNA-SIRGAS / Pasto urban grid",9001,4686,6230,1052,1,0,4500,1039,2530,9001,8801,1.120356225,9110,8802,-77.151125228,9110,8806,980469.695,9001,8807,624555.332,9001,,,,,,,,,,,,, +6263,"MAGNA-SIRGAS / Pereira urban grid",9001,4686,6231,1052,1,0,4500,1039,1500,9001,8801,4.4848937,9110,8802,-75.4138225,9110,8806,1153492.012,9001,8807,1024195.255,9001,,,,,,,,,,,,, +6264,"MAGNA-SIRGAS / Popayan urban grid",9001,4686,6232,1052,1,0,4500,1039,1740,9001,8801,2.272217558,9110,8802,-76.362192989,9110,8806,1052430.525,9001,8807,763366.548,9001,,,,,,,,,,,,, +6265,"MAGNA-SIRGAS / Puerto Carreno urban grid",9001,4686,6233,1052,1,0,4500,1039,51.58,9001,8801,6.105059709,9110,8802,-67.300270089,9110,8806,1063834.703,9001,8807,1175257.481,9001,,,,,,,,,,,,, +6266,"MAGNA-SIRGAS / Quibdo urban grid",9001,4686,6234,1052,1,0,4500,1039,44,9001,8801,5.413929158,9110,8802,-76.390271389,9110,8806,1047273.617,9001,8807,1121443.09,9001,,,,,,,,,,,,, +6267,"MAGNA-SIRGAS / Riohacha urban grid",9001,4686,6235,1052,1,0,4500,1039,6,9001,8801,11.321288798,9110,8802,-72.540996793,9110,8806,1128154.73,9001,8807,1767887.914,9001,,,,,,,,,,,,, +6268,"MAGNA-SIRGAS / San Andres urban grid",9001,4686,6236,1052,1,0,4500,1039,6,9001,8801,12.312565957,9110,8802,-81.434575342,9110,8806,820439.298,9001,8807,1877357.828,9001,,,,,,,,,,,,, +6269,"MAGNA-SIRGAS / San Jose del Guaviare urban grid",9001,4686,6237,1052,1,0,4500,1039,185,9001,8801,2.335068419,9110,8802,-72.382411997,9110,8806,1159876.62,9001,8807,775380.342,9001,,,,,,,,,,,,, +6270,"MAGNA-SIRGAS / Santa Marta urban grid",9001,4686,6238,1052,1,0,4500,1039,29,9001,8801,11.1310715,9110,8802,-74.1330019,9110,8806,983892.409,9001,8807,1732533.518,9001,,,,,,,,,,,,, +6271,"MAGNA-SIRGAS / Sucre urban grid",9001,4686,6239,1052,1,0,4500,1039,20,9001,8801,8.483798132,9110,8802,-74.432088057,9110,8806,929043.607,9001,8807,1466125.658,9001,,,,,,,,,,,,, +6272,"MAGNA-SIRGAS / Tunja urban grid",9001,4686,6240,1052,1,0,4500,1039,2800,9001,8801,5.320310106,9110,8802,-73.210698004,9110,8806,1080514.91,9001,8807,1103772.028,9001,,,,,,,,,,,,, +6273,"MAGNA-SIRGAS / Valledupar urban grid",9001,4686,6241,1052,1,0,4500,1039,200,9001,8801,10.265014,9110,8802,-73.1447657,9110,8806,1090979.66,9001,8807,1647208.93,9001,,,,,,,,,,,,, +6274,"MAGNA-SIRGAS / Villavicencio urban grid",9001,4686,6242,1052,1,0,4500,1039,427.19,9001,8801,4.091935036,9110,8802,-73.372814955,9110,8806,1050678.757,9001,8807,950952.124,9001,,,,,,,,,,,,, +6275,"MAGNA-SIRGAS / Yopal urban grid",9001,4686,6243,1052,1,0,4500,1039,300,9001,8801,5.2114138,9110,8802,-72.2512145,9110,8806,851184.177,9001,8807,1083954.137,9001,,,,,,,,,,,,, +6307,"NAD83(CORS96) / Puerto Rico and Virgin Is.",9001,6783,15230,9802,1,0,4499,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,200000,9001,8827,200000,9001,,,,,,,,,, +6312,"CGRS93 / Cyprus Local Transverse Mercator",9001,6311,6308,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.99995,9201,8806,200000,9001,8807,-3500000,9001,,,,,,,,,,,,, +6316,Macedonia State Coordinate System zone 7,9001,3906,18277,9807,1,0,4498,8801,0,9102,8802,21,9102,8805,0.9999,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +6328,"NAD83(2011) / UTM zone 59N",9001,6318,16059,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6329,"NAD83(2011) / UTM zone 60N",9001,6318,16060,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6330,"NAD83(2011) / UTM zone 1N",9001,6318,16001,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6331,"NAD83(2011) / UTM zone 2N",9001,6318,16002,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6332,"NAD83(2011) / UTM zone 3N",9001,6318,16003,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6333,"NAD83(2011) / UTM zone 4N",9001,6318,16004,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6334,"NAD83(2011) / UTM zone 5N",9001,6318,16005,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6335,"NAD83(2011) / UTM zone 6N",9001,6318,16006,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6336,"NAD83(2011) / UTM zone 7N",9001,6318,16007,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6337,"NAD83(2011) / UTM zone 8N",9001,6318,16008,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6338,"NAD83(2011) / UTM zone 9N",9001,6318,16009,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6339,"NAD83(2011) / UTM zone 10N",9001,6318,16010,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6340,"NAD83(2011) / UTM zone 11N",9001,6318,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6341,"NAD83(2011) / UTM zone 12N",9001,6318,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6342,"NAD83(2011) / UTM zone 13N",9001,6318,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6343,"NAD83(2011) / UTM zone 14N",9001,6318,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6344,"NAD83(2011) / UTM zone 15N",9001,6318,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6345,"NAD83(2011) / UTM zone 16N",9001,6318,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6346,"NAD83(2011) / UTM zone 17N",9001,6318,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6347,"NAD83(2011) / UTM zone 18N",9001,6318,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6348,"NAD83(2011) / UTM zone 19N",9001,6318,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6350,"NAD83(2011) / Conus Albers",9001,6318,5068,9822,1,0,4499,8821,23,9102,8822,-96,9102,8823,29.3,9110,8824,45.3,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +6351,"NAD83(2011) / EPSG Arctic zone 5-29",9001,6318,6029,9802,1,0,4400,8821,72.01300331,9110,8822,-163,9110,8823,73.4,9110,8824,70.2,9110,8826,29500000,9001,8827,5500000,9001,,,,,,,,,, +6352,"NAD83(2011) / EPSG Arctic zone 5-31",9001,6318,6030,9802,1,0,4400,8821,72.01300331,9110,8822,-147,9110,8823,73.4,9110,8824,70.2,9110,8826,31500000,9001,8827,5500000,9001,,,,,,,,,, +6353,"NAD83(2011) / EPSG Arctic zone 6-14",9001,6318,6039,9802,1,0,4400,8821,68.4114912,9110,8822,-165,9110,8823,70.2,9110,8824,67,9110,8826,14500000,9001,8827,6500000,9001,,,,,,,,,, +6354,"NAD83(2011) / EPSG Arctic zone 6-16",9001,6318,6040,9802,1,0,4400,8821,68.4114912,9110,8822,-147,9110,8823,70.2,9110,8824,67,9110,8826,16500000,9001,8827,6500000,9001,,,,,,,,,, +6355,"NAD83(2011) / Alabama East",9001,6318,10131,9807,1,0,4499,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +6356,"NAD83(2011) / Alabama West",9001,6318,10132,9807,1,0,4499,8801,30,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,600000,9001,8807,0,9001,,,,,,,,,,,,, +6362,"Mexico ITRF92 / LCC",9001,4483,6361,9802,1,0,4500,8821,12,9102,8822,-102,9102,8823,17.5,9102,8824,29.5,9102,8826,2500000,9001,8827,0,9001,,,,,,,,,, +6366,"Mexico ITRF2008 / UTM zone 11N",9001,6365,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6367,"Mexico ITRF2008 / UTM zone 12N",9001,6365,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6368,"Mexico ITRF2008 / UTM zone 13N",9001,6365,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6369,"Mexico ITRF2008 / UTM zone 14N",9001,6365,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6370,"Mexico ITRF2008 / UTM zone 15N",9001,6365,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6371,"Mexico ITRF2008 / UTM zone 16N",9001,6365,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6372,"Mexico ITRF2008 / LCC",9001,6365,6361,9802,1,0,4500,8821,12,9102,8822,-102,9102,8823,17.5,9102,8824,29.5,9102,8826,2500000,9001,8827,0,9001,,,,,,,,,, +6381,"UCS-2000 / Ukraine TM zone 7",9001,5561,6374,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6382,"UCS-2000 / Ukraine TM zone 8",9001,5561,6375,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,1,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6383,"UCS-2000 / Ukraine TM zone 9",9001,5561,6376,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6384,"UCS-2000 / Ukraine TM zone 10",9001,5561,6377,9807,1,0,4530,8801,0,9102,8802,30,9102,8805,1,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6385,"UCS-2000 / Ukraine TM zone 11",9001,5561,6378,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6386,"UCS-2000 / Ukraine TM zone 12",9001,5561,6379,9807,1,0,4530,8801,0,9102,8802,36,9102,8805,1,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6387,"UCS-2000 / Ukraine TM zone 13",9001,5561,6380,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6391,Cayman Islands National Grid 2011,9002,6135,6390,9802,1,0,1039,8821,19.2,9110,8822,-80.34,9110,8823,19.2,9110,8824,19.42,9110,8826,2950000,9002,8827,1900000,9002,,,,,,,,,, +6393,"NAD83(2011) / Alaska Albers",9001,6318,15021,9822,1,0,4499,8821,50,9102,8822,-154,9102,8823,55,9102,8824,65,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +6394,"NAD83(2011) / Alaska zone 1",9001,6318,15031,9812,1,0,4499,8806,5000000,9001,8807,-5000000,9001,8811,57,9110,8812,-133.4,9110,8813,323.07483685,9110,8814,323.07483685,9110,8815,0.9999,9201,,,,,,, +6395,"NAD83(2011) / Alaska zone 2",9001,6318,15032,9807,1,0,4499,8801,54,9102,8802,-142,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6396,"NAD83(2011) / Alaska zone 3",9001,6318,15033,9807,1,0,4499,8801,54,9102,8802,-146,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6397,"NAD83(2011) / Alaska zone 4",9001,6318,15034,9807,1,0,4499,8801,54,9102,8802,-150,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6398,"NAD83(2011) / Alaska zone 5",9001,6318,15035,9807,1,0,4499,8801,54,9102,8802,-154,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6399,"NAD83(2011) / Alaska zone 6",9001,6318,15036,9807,1,0,4499,8801,54,9102,8802,-158,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6400,"NAD83(2011) / Alaska zone 7",9001,6318,15037,9807,1,0,4499,8801,54,9102,8802,-162,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6401,"NAD83(2011) / Alaska zone 8",9001,6318,15038,9807,1,0,4499,8801,54,9102,8802,-166,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6402,"NAD83(2011) / Alaska zone 9",9001,6318,15039,9807,1,0,4499,8801,54,9102,8802,-170,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6403,"NAD83(2011) / Alaska zone 10",9001,6318,15040,9802,1,0,4499,8821,51,9110,8822,-176,9110,8823,53.5,9110,8824,51.5,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +6404,"NAD83(2011) / Arizona Central",9001,6318,10232,9807,1,0,4499,8801,31,9110,8802,-111.55,9110,8805,0.9999,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +6405,"NAD83(2011) / Arizona Central (ft)",9002,6318,15305,9807,1,0,4495,8801,31,9110,8802,-111.55,9110,8805,0.9999,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +6406,"NAD83(2011) / Arizona East",9001,6318,10231,9807,1,0,4499,8801,31,9110,8802,-110.1,9110,8805,0.9999,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +6407,"NAD83(2011) / Arizona East (ft)",9002,6318,15304,9807,1,0,4495,8801,31,9110,8802,-110.1,9110,8805,0.9999,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +6408,"NAD83(2011) / Arizona West",9001,6318,10233,9807,1,0,4499,8801,31,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +6409,"NAD83(2011) / Arizona West (ft)",9002,6318,15306,9807,1,0,4495,8801,31,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,700000,9002,8807,0,9002,,,,,,,,,,,,, +6410,"NAD83(2011) / Arkansas North",9001,6318,10331,9802,1,0,4499,8821,34.2,9110,8822,-92,9110,8823,36.14,9110,8824,34.56,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +6411,"NAD83(2011) / Arkansas North (ftUS)",9003,6318,15385,9802,1,0,4497,8821,34.2,9110,8822,-92,9110,8823,36.14,9110,8824,34.56,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +6412,"NAD83(2011) / Arkansas South",9001,6318,10332,9802,1,0,4499,8821,32.4,9110,8822,-92,9110,8823,34.46,9110,8824,33.18,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +6413,"NAD83(2011) / Arkansas South (ftUS)",9003,6318,15386,9802,1,0,4497,8821,32.4,9110,8822,-92,9110,8823,34.46,9110,8824,33.18,9110,8826,1312333.3333,9003,8827,1312333.3333,9003,,,,,,,,,, +6414,"NAD83(2011) / California Albers",9001,6318,10420,9822,1,0,4499,8821,0,9102,8822,-120,9102,8823,34,9102,8824,40.5,9102,8826,0,9001,8827,-4000000,9001,,,,,,,,,, +6415,"NAD83(2011) / California zone 1",9001,6318,10431,9802,1,0,4499,8821,39.2,9110,8822,-122,9110,8823,41.4,9110,8824,40,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +6416,"NAD83(2011) / California zone 1 (ftUS)",9003,6318,15307,9802,1,0,4497,8821,39.2,9110,8822,-122,9110,8823,41.4,9110,8824,40,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +6417,"NAD83(2011) / California zone 2",9001,6318,10432,9802,1,0,4499,8821,37.4,9110,8822,-122,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +6418,"NAD83(2011) / California zone 2 (ftUS)",9003,6318,15308,9802,1,0,4497,8821,37.4,9110,8822,-122,9110,8823,39.5,9110,8824,38.2,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +6419,"NAD83(2011) / California zone 3",9001,6318,10433,9802,1,0,4499,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +6420,"NAD83(2011) / California zone 3 (ftUS)",9003,6318,15309,9802,1,0,4497,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +6421,"NAD83(2011) / California zone 4",9001,6318,10434,9802,1,0,4499,8821,35.2,9110,8822,-119,9110,8823,37.15,9110,8824,36,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +6422,"NAD83(2011) / California zone 4 (ftUS)",9003,6318,15310,9802,1,0,4497,8821,35.2,9110,8822,-119,9110,8823,37.15,9110,8824,36,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +6423,"NAD83(2011) / California zone 5",9001,6318,10435,9802,1,0,4499,8821,33.3,9110,8822,-118,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +6424,"NAD83(2011) / California zone 5 (ftUS)",9003,6318,15311,9802,1,0,4497,8821,33.3,9110,8822,-118,9110,8823,35.28,9110,8824,34.02,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +6425,"NAD83(2011) / California zone 6",9001,6318,10436,9802,1,0,4499,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +6426,"NAD83(2011) / California zone 6 (ftUS)",9003,6318,15312,9802,1,0,4497,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,6561666.667,9003,8827,1640416.667,9003,,,,,,,,,, +6427,"NAD83(2011) / Colorado Central",9001,6318,10532,9802,1,0,4499,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +6428,"NAD83(2011) / Colorado Central (ftUS)",9003,6318,15314,9802,1,0,4497,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +6429,"NAD83(2011) / Colorado North",9001,6318,10531,9802,1,0,4499,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +6430,"NAD83(2011) / Colorado North (ftUS)",9003,6318,15313,9802,1,0,4497,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +6431,"NAD83(2011) / Colorado South",9001,6318,10533,9802,1,0,4499,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +6432,"NAD83(2011) / Colorado South (ftUS)",9003,6318,15315,9802,1,0,4497,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,3000000,9003,8827,1000000,9003,,,,,,,,,, +6433,"NAD83(2011) / Connecticut",9001,6318,10630,9802,1,0,4499,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,304800.6096,9001,8827,152400.3048,9001,,,,,,,,,, +6434,"NAD83(2011) / Connecticut (ftUS)",9003,6318,15316,9802,1,0,4497,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,1000000,9003,8827,500000,9003,,,,,,,,,, +6435,"NAD83(2011) / Delaware",9001,6318,10730,9807,1,0,4499,8801,38,9110,8802,-75.25,9110,8805,0.999995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +6436,"NAD83(2011) / Delaware (ftUS)",9003,6318,15317,9807,1,0,4497,8801,38,9110,8802,-75.25,9110,8805,0.999995,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +6437,"NAD83(2011) / Florida East",9001,6318,10931,9807,1,0,4499,8801,24.2,9110,8802,-81,9110,8805,0.999941177,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +6438,"NAD83(2011) / Florida East (ftUS)",9003,6318,15318,9807,1,0,4497,8801,24.2,9110,8802,-81,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +6439,"NAD83(2011) / Florida GDL Albers",9001,6318,10934,9822,1,0,4499,8821,24,9110,8822,-84,9110,8823,24,9110,8824,31.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +6440,"NAD83(2011) / Florida North",9001,6318,10933,9802,1,0,4499,8821,29,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6441,"NAD83(2011) / Florida North (ftUS)",9003,6318,15320,9802,1,0,4497,8821,29,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6442,"NAD83(2011) / Florida West",9001,6318,10932,9807,1,0,4499,8801,24.2,9110,8802,-82,9110,8805,0.999941177,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +6443,"NAD83(2011) / Florida West (ftUS)",9003,6318,15319,9807,1,0,4497,8801,24.2,9110,8802,-82,9110,8805,0.999941177,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +6444,"NAD83(2011) / Georgia East",9001,6318,11031,9807,1,0,4499,8801,30,9110,8802,-82.1,9110,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +6445,"NAD83(2011) / Georgia East (ftUS)",9003,6318,15321,9807,1,0,4497,8801,30,9110,8802,-82.1,9110,8805,0.9999,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +6446,"NAD83(2011) / Georgia West",9001,6318,11032,9807,1,0,4499,8801,30,9110,8802,-84.1,9110,8805,0.9999,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +6447,"NAD83(2011) / Georgia West (ftUS)",9003,6318,15322,9807,1,0,4497,8801,30,9110,8802,-84.1,9110,8805,0.9999,9201,8806,2296583.333,9003,8807,0,9003,,,,,,,,,,,,, +6448,"NAD83(2011) / Idaho Central",9001,6318,11132,9807,1,0,4499,8801,41.4,9110,8802,-114,9110,8805,0.999947368,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6449,"NAD83(2011) / Idaho Central (ftUS)",9003,6318,15324,9807,1,0,4497,8801,41.4,9110,8802,-114,9110,8805,0.999947368,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +6450,"NAD83(2011) / Idaho East",9001,6318,11131,9807,1,0,4499,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +6451,"NAD83(2011) / Idaho East (ftUS)",9003,6318,15323,9807,1,0,4497,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,656166.667,9003,8807,0,9003,,,,,,,,,,,,, +6452,"NAD83(2011) / Idaho West",9001,6318,11133,9807,1,0,4499,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,800000,9001,8807,0,9001,,,,,,,,,,,,, +6453,"NAD83(2011) / Idaho West (ftUS)",9003,6318,15325,9807,1,0,4497,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,2624666.667,9003,8807,0,9003,,,,,,,,,,,,, +6454,"NAD83(2011) / Illinois East",9001,6318,11231,9807,1,0,4499,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6455,"NAD83(2011) / Illinois East (ftUS)",9003,6318,15387,9807,1,0,4497,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +6456,"NAD83(2011) / Illinois West",9001,6318,11232,9807,1,0,4499,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +6457,"NAD83(2011) / Illinois West (ftUS)",9003,6318,15388,9807,1,0,4497,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,2296583.3333,9003,8807,0,9003,,,,,,,,,,,,, +6458,"NAD83(2011) / Indiana East",9001,6318,11331,9807,1,0,4499,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,100000,9001,8807,250000,9001,,,,,,,,,,,,, +6459,"NAD83(2011) / Indiana East (ftUS)",9003,6318,15372,9807,1,0,4497,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,328083.333,9003,8807,820208.333,9003,,,,,,,,,,,,, +6460,"NAD83(2011) / Indiana West",9001,6318,11332,9807,1,0,4499,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,900000,9001,8807,250000,9001,,,,,,,,,,,,, +6461,"NAD83(2011) / Indiana West (ftUS)",9003,6318,15373,9807,1,0,4497,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,2952750,9003,8807,820208.333,9003,,,,,,,,,,,,, +6462,"NAD83(2011) / Iowa North",9001,6318,11431,9802,1,0,4499,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,1500000,9001,8827,1000000,9001,,,,,,,,,, +6463,"NAD83(2011) / Iowa North (ftUS)",9003,6318,15377,9802,1,0,4497,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,4921250,9003,8827,3280833.3333,9003,,,,,,,,,, +6464,"NAD83(2011) / Iowa South",9001,6318,11432,9802,1,0,4499,8821,40,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +6465,"NAD83(2011) / Iowa South (ftUS)",9003,6318,15378,9802,1,0,4497,8821,40,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +6466,"NAD83(2011) / Kansas North",9001,6318,11531,9802,1,0,4499,8821,38.2,9110,8822,-98,9110,8823,39.47,9110,8824,38.43,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +6467,"NAD83(2011) / Kansas North (ftUS)",9003,6318,15379,9802,1,0,4497,8821,38.2,9110,8822,-98,9110,8823,39.47,9110,8824,38.43,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +6468,"NAD83(2011) / Kansas South",9001,6318,11532,9802,1,0,4499,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +6469,"NAD83(2011) / Kansas South (ftUS)",9003,6318,15380,9802,1,0,4497,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,1312333.3333,9003,8827,1312333.3333,9003,,,,,,,,,, +6470,"NAD83(2011) / Kentucky North",9001,6318,15303,9802,1,0,4499,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +6471,"NAD83(2011) / Kentucky North (ftUS)",9003,6318,15328,9802,1,0,4497,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +6472,"NAD83(2011) / Kentucky Single Zone",9001,6318,11630,9802,1,0,4499,8821,36.2,9110,8822,-85.45,9110,8823,37.05,9110,8824,38.4,9110,8826,1500000,9001,8827,1000000,9001,,,,,,,,,, +6473,"NAD83(2011) / Kentucky Single Zone (ftUS)",9003,6318,15375,9802,1,0,4497,8821,36.2,9110,8822,-85.45,9110,8823,37.05,9110,8824,38.4,9110,8826,4921250,9003,8827,3280833.333,9003,,,,,,,,,, +6474,"NAD83(2011) / Kentucky South",9001,6318,11632,9802,1,0,4499,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,500000,9001,8827,500000,9001,,,,,,,,,, +6475,"NAD83(2011) / Kentucky South (ftUS)",9003,6318,15329,9802,1,0,4497,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,1640416.667,9003,8827,1640416.667,9003,,,,,,,,,, +6476,"NAD83(2011) / Louisiana North",9001,6318,11731,9802,1,0,4499,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +6477,"NAD83(2011) / Louisiana North (ftUS)",9003,6318,15391,9802,1,0,4497,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,3280833.3333,9003,8827,0,9003,,,,,,,,,, +6478,"NAD83(2011) / Louisiana South",9001,6318,11732,9802,1,0,4499,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +6479,"NAD83(2011) / Louisiana South (ftUS)",9003,6318,15392,9802,1,0,4497,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,3280833.3333,9003,8827,0,9003,,,,,,,,,, +6480,"NAD83(2011) / Maine CS2000 Central",9001,6318,11854,9807,1,0,4499,8801,43.3,9110,8802,-69.073,9110,8805,0.99998,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6481,"NAD83(2011) / Maine CS2000 East",9001,6318,11851,9807,1,0,4499,8801,43.5,9110,8802,-67.523,9110,8805,0.99998,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +6482,"NAD83(2011) / Maine CS2000 West",9001,6318,11853,9807,1,0,4499,8801,42.5,9110,8802,-70.223,9110,8805,0.99998,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6483,"NAD83(2011) / Maine East",9001,6318,11831,9807,1,0,4499,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6484,"NAD83(2011) / Maine East (ftUS)",9003,6318,11833,9807,1,0,4497,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +6485,"NAD83(2011) / Maine West",9001,6318,11832,9807,1,0,4499,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,900000,9001,8807,0,9001,,,,,,,,,,,,, +6486,"NAD83(2011) / Maine West (ftUS)",9003,6318,11834,9807,1,0,4497,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,2952750,9003,8807,0,9003,,,,,,,,,,,,, +6487,"NAD83(2011) / Maryland",9001,6318,11930,9802,1,0,4499,8821,37.4,9110,8822,-77,9110,8823,39.27,9110,8824,38.18,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +6488,"NAD83(2011) / Maryland (ftUS)",9003,6318,15330,9802,1,0,4497,8821,37.4,9110,8822,-77,9110,8823,39.27,9110,8824,38.18,9110,8826,1312333.333,9003,8827,0,9003,,,,,,,,,, +6489,"NAD83(2011) / Massachusetts Island",9001,6318,12032,9802,1,0,4499,8821,41,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +6490,"NAD83(2011) / Massachusetts Island (ftUS)",9003,6318,15332,9802,1,0,4497,8821,41,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +6491,"NAD83(2011) / Massachusetts Mainland",9001,6318,12031,9802,1,0,4499,8821,41,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,200000,9001,8827,750000,9001,,,,,,,,,, +6492,"NAD83(2011) / Massachusetts Mainland (ftUS)",9003,6318,15331,9802,1,0,4497,8821,41,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,656166.667,9003,8827,2460625,9003,,,,,,,,,, +6493,"NAD83(2011) / Michigan Central",9001,6318,12142,9802,1,0,4499,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,6000000,9001,8827,0,9001,,,,,,,,,, +6494,"NAD83(2011) / Michigan Central (ft)",9002,6318,15334,9802,1,0,4495,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,19685039.37,9002,8827,0,9002,,,,,,,,,, +6495,"NAD83(2011) / Michigan North",9001,6318,12141,9802,1,0,4499,8821,44.47,9110,8822,-87,9110,8823,47.05,9110,8824,45.29,9110,8826,8000000,9001,8827,0,9001,,,,,,,,,, +6496,"NAD83(2011) / Michigan North (ft)",9002,6318,15333,9802,1,0,4495,8821,44.47,9110,8822,-87,9110,8823,47.05,9110,8824,45.29,9110,8826,26246719.16,9002,8827,0,9002,,,,,,,,,, +6497,"NAD83(2011) / Michigan Oblique Mercator",9001,6318,12150,9812,1,0,4499,8806,2546731.496,9001,8807,-4354009.816,9001,8811,45.1833,9110,8812,-86,9110,8813,337.25556,9102,8814,337.25556,9102,8815,0.9996,9201,,,,,,, +6498,"NAD83(2011) / Michigan South",9001,6318,12143,9802,1,0,4499,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,4000000,9001,8827,0,9001,,,,,,,,,, +6499,"NAD83(2011) / Michigan South (ft)",9002,6318,15335,9802,1,0,4495,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,13123359.58,9002,8827,0,9002,,,,,,,,,, +6500,"NAD83(2011) / Minnesota Central",9001,6318,12232,9802,1,0,4499,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +6501,"NAD83(2011) / Minnesota Central (ftUS)",9003,6318,12235,9802,1,0,4497,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +6502,"NAD83(2011) / Minnesota North",9001,6318,12231,9802,1,0,4499,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +6503,"NAD83(2011) / Minnesota North (ftUS)",9003,6318,12234,9802,1,0,4497,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +6504,"NAD83(2011) / Minnesota South",9001,6318,12233,9802,1,0,4499,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +6505,"NAD83(2011) / Minnesota South (ftUS)",9003,6318,12236,9802,1,0,4497,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +6506,"NAD83(2011) / Mississippi East",9001,6318,12331,9807,1,0,4499,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6507,"NAD83(2011) / Mississippi East (ftUS)",9003,6318,15336,9807,1,0,4497,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +6508,"NAD83(2011) / Mississippi TM",9001,6318,3813,9807,1,0,4499,8801,32.3,9110,8802,-89.45,9110,8805,0.9998335,9201,8806,500000,9001,8807,1300000,9001,,,,,,,,,,,,, +6509,"NAD83(2011) / Mississippi West",9001,6318,12332,9807,1,0,4499,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +6510,"NAD83(2011) / Mississippi West (ftUS)",9003,6318,15337,9807,1,0,4497,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,2296583.333,9003,8807,0,9003,,,,,,,,,,,,, +6511,"NAD83(2011) / Missouri Central",9001,6318,12432,9807,1,0,4499,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6512,"NAD83(2011) / Missouri East",9001,6318,12431,9807,1,0,4499,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +6513,"NAD83(2011) / Missouri West",9001,6318,12433,9807,1,0,4499,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,850000,9001,8807,0,9001,,,,,,,,,,,,, +6514,"NAD83(2011) / Montana",9001,6318,12530,9802,1,0,4499,8821,44.15,9110,8822,-109.3,9110,8823,49,9110,8824,45,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6515,"NAD83(2011) / Montana (ft)",9002,6318,15338,9802,1,0,4495,8821,44.15,9110,8822,-109.3,9110,8823,49,9110,8824,45,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +6516,"NAD83(2011) / Nebraska",9001,6318,12630,9802,1,0,4499,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +6517,"NAD83(2011) / Nebraska (ftUS)",9003,4759,15396,9802,1,1,4497,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +6518,"NAD83(2011) / Nevada Central",9001,6318,12732,9807,1,0,4499,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000,9001,8807,6000000,9001,,,,,,,,,,,,, +6519,"NAD83(2011) / Nevada Central (ftUS)",9003,6318,15382,9807,1,0,4497,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,1640416.6667,9003,8807,19685000,9003,,,,,,,,,,,,, +6520,"NAD83(2011) / Nevada East",9001,6318,12731,9807,1,0,4499,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,200000,9001,8807,8000000,9001,,,,,,,,,,,,, +6521,"NAD83(2011) / Nevada East (ftUS)",9003,6318,15381,9807,1,0,4497,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,656166.6667,9003,8807,26246666.6667,9003,,,,,,,,,,,,, +6522,"NAD83(2011) / Nevada West",9001,6318,12733,9807,1,0,4499,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,800000,9001,8807,4000000,9001,,,,,,,,,,,,, +6523,"NAD83(2011) / Nevada West (ftUS)",9003,6318,15383,9807,1,0,4497,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,2624666.6667,9003,8807,13123333.3333,9003,,,,,,,,,,,,, +6524,"NAD83(2011) / New Hampshire",9001,6318,12830,9807,1,0,4499,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +6525,"NAD83(2011) / New Hampshire (ftUS)",9003,6318,15389,9807,1,0,4497,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +6526,"NAD83(2011) / New Jersey",9001,6318,12930,9807,1,0,4499,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +6527,"NAD83(2011) / New Jersey (ftUS)",9003,6318,15384,9807,1,0,4497,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125,9003,8807,0,9003,,,,,,,,,,,,, +6528,"NAD83(2011) / New Mexico Central",9001,6318,13032,9807,1,0,4499,8801,31,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6529,"NAD83(2011) / New Mexico Central (ftUS)",9003,6318,15340,9807,1,0,4497,8801,31,9110,8802,-106.15,9110,8805,0.9999,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +6530,"NAD83(2011) / New Mexico East",9001,6318,13031,9807,1,0,4499,8801,31,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,165000,9001,8807,0,9001,,,,,,,,,,,,, +6531,"NAD83(2011) / New Mexico East (ftUS)",9003,6318,15339,9807,1,0,4497,8801,31,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,541337.5,9003,8807,0,9003,,,,,,,,,,,,, +6532,"NAD83(2011) / New Mexico West",9001,6318,13033,9807,1,0,4499,8801,31,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,830000,9001,8807,0,9001,,,,,,,,,,,,, +6533,"NAD83(2011) / New Mexico West (ftUS)",9003,6318,15341,9807,1,0,4497,8801,31,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,2723091.667,9003,8807,0,9003,,,,,,,,,,,,, +6534,"NAD83(2011) / New York Central",9001,6318,13132,9807,1,0,4499,8801,40,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +6535,"NAD83(2011) / New York Central (ftUS)",9003,6318,15343,9807,1,0,4497,8801,40,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,820208.333,9003,8807,0,9003,,,,,,,,,,,,, +6536,"NAD83(2011) / New York East",9001,6318,13131,9807,1,0,4499,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +6537,"NAD83(2011) / New York East (ftUS)",9003,6318,15342,9807,1,0,4497,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,492125,9003,8807,0,9003,,,,,,,,,,,,, +6538,"NAD83(2011) / New York Long Island",9001,6318,13134,9802,1,0,4499,8821,40.1,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,300000,9001,8827,0,9001,,,,,,,,,, +6539,"NAD83(2011) / New York Long Island (ftUS)",9003,6318,15345,9802,1,0,4497,8821,40.1,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,984250,9003,8827,0,9003,,,,,,,,,, +6540,"NAD83(2011) / New York West",9001,6318,13133,9807,1,0,4499,8801,40,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,350000,9001,8807,0,9001,,,,,,,,,,,,, +6541,"NAD83(2011) / New York West (ftUS)",9003,6318,15344,9807,1,0,4497,8801,40,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,1148291.667,9003,8807,0,9003,,,,,,,,,,,,, +6542,"NAD83(2011) / North Carolina",9001,6318,13230,9802,1,0,4499,8821,33.45,9110,8822,-79,9110,8823,36.1,9110,8824,34.2,9110,8826,609601.22,9001,8827,0,9001,,,,,,,,,, +6543,"NAD83(2011) / North Carolina (ftUS)",9003,6318,15346,9802,1,0,4497,8821,33.45,9110,8822,-79,9110,8823,36.1,9110,8824,34.2,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +6544,"NAD83(2011) / North Dakota North",9001,6318,13331,9802,1,0,4499,8821,47,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6545,"NAD83(2011) / North Dakota North (ft)",9002,6318,15347,9802,1,0,4495,8821,47,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +6546,"NAD83(2011) / North Dakota South",9001,6318,13332,9802,1,0,4499,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6547,"NAD83(2011) / North Dakota South (ft)",9002,6318,15348,9802,1,0,4495,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,1968503.937,9002,8827,0,9002,,,,,,,,,, +6548,"NAD83(2011) / Ohio North",9001,6318,13431,9802,1,0,4499,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6549,"NAD83(2011) / Ohio North (ftUS)",9003,6318,13433,9802,1,0,4497,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6550,"NAD83(2011) / Ohio South",9001,6318,13432,9802,1,0,4499,8821,38,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6551,"NAD83(2011) / Ohio South (ftUS)",9003,6318,13434,9802,1,0,4497,8821,38,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6552,"NAD83(2011) / Oklahoma North",9001,6318,13531,9802,1,0,4499,8821,35,9110,8822,-98,9110,8823,36.46,9110,8824,35.34,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6553,"NAD83(2011) / Oklahoma North (ftUS)",9003,6318,15349,9802,1,0,4497,8821,35,9110,8822,-98,9110,8823,36.46,9110,8824,35.34,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6554,"NAD83(2011) / Oklahoma South",9001,6318,13532,9802,1,0,4499,8821,33.2,9110,8822,-98,9110,8823,35.14,9110,8824,33.56,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6555,"NAD83(2011) / Oklahoma South (ftUS)",9003,6318,15350,9802,1,0,4497,8821,33.2,9110,8822,-98,9110,8823,35.14,9110,8824,33.56,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6556,"NAD83(2011) / Oregon LCC (m)",9001,6318,13633,9802,1,0,4499,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +6557,"NAD83(2011) / Oregon GIC Lambert (ft)",9002,6318,15374,9802,1,0,4495,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,1312335.958,9002,8827,0,9002,,,,,,,,,, +6558,"NAD83(2011) / Oregon North",9001,6318,13631,9802,1,0,4499,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,2500000,9001,8827,0,9001,,,,,,,,,, +6559,"NAD83(2011) / Oregon North (ft)",9002,6318,15351,9802,1,0,4495,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,8202099.738,9002,8827,0,9002,,,,,,,,,, +6560,"NAD83(2011) / Oregon South",9001,6318,13632,9802,1,0,4499,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,1500000,9001,8827,0,9001,,,,,,,,,, +6561,"NAD83(2011) / Oregon South (ft)",9002,6318,15352,9802,1,0,4495,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,4921259.843,9002,8827,0,9002,,,,,,,,,, +6562,"NAD83(2011) / Pennsylvania North",9001,6318,13731,9802,1,0,4499,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6563,"NAD83(2011) / Pennsylvania North (ftUS)",9003,6318,15353,9802,1,0,4497,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6564,"NAD83(2011) / Pennsylvania South",9001,6318,13732,9802,1,0,4499,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6565,"NAD83(2011) / Pennsylvania South (ftUS)",9003,6318,15354,9802,1,0,4497,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6566,"NAD83(2011) / Puerto Rico and Virgin Is.",9001,6318,15230,9802,1,0,4499,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,200000,9001,8827,200000,9001,,,,,,,,,, +6567,"NAD83(2011) / Rhode Island",9001,6318,13830,9807,1,0,4499,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,100000,9001,8807,0,9001,,,,,,,,,,,,, +6568,"NAD83(2011) / Rhode Island (ftUS)",9003,6318,15390,9807,1,0,4497,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,328083.3333,9003,8807,0,9003,,,,,,,,,,,,, +6569,"NAD83(2011) / South Carolina",9001,6318,13930,9802,1,0,4499,8821,31.5,9110,8822,-81,9110,8823,34.5,9110,8824,32.3,9110,8826,609600,9001,8827,0,9001,,,,,,,,,, +6570,"NAD83(2011) / South Carolina (ft)",9002,6318,15355,9802,1,0,4495,8821,31.5,9110,8822,-81,9110,8823,34.5,9110,8824,32.3,9110,8826,2000000,9002,8827,0,9002,,,,,,,,,, +6571,"NAD83(2011) / South Dakota North",9001,6318,14031,9802,1,0,4499,8821,43.5,9110,8822,-100,9110,8823,45.41,9110,8824,44.25,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6572,"NAD83(2011) / South Dakota North (ftUS)",9003,6318,15394,9802,1,0,4497,8821,43.5,9110,8822,-100,9110,8823,45.41,9110,8824,44.25,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6573,"NAD83(2011) / South Dakota South",9001,6318,14032,9802,1,0,4499,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6574,"NAD83(2011) / South Dakota South (ftUS)",9003,6318,15395,9802,1,0,4497,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6575,"NAD83(2011) / Tennessee",9001,6318,14130,9802,1,0,4499,8821,34.2,9110,8822,-86,9110,8823,36.25,9110,8824,35.15,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6576,"NAD83(2011) / Tennessee (ftUS)",9003,6318,15356,9802,1,0,4497,8821,34.2,9110,8822,-86,9110,8823,36.25,9110,8824,35.15,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6577,"NAD83(2011) / Texas Central",9001,6318,14233,9802,1,0,4499,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,700000,9001,8827,3000000,9001,,,,,,,,,, +6578,"NAD83(2011) / Texas Central (ftUS)",9003,6318,15359,9802,1,0,4497,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,2296583.333,9003,8827,9842500,9003,,,,,,,,,, +6579,"NAD83(2011) / Texas Centric Albers Equal Area",9001,6318,14254,9822,1,0,4499,8821,18,9110,8822,-100,9110,8823,27.3,9110,8824,35,9110,8826,1500000,9001,8827,6000000,9001,,,,,,,,,, +6580,"NAD83(2011) / Texas Centric Lambert Conformal",9001,6318,14253,9802,1,0,4499,8821,18,9110,8822,-100,9110,8823,27.3,9110,8824,35,9110,8826,1500000,9001,8827,5000000,9001,,,,,,,,,, +6581,"NAD83(2011) / Texas North",9001,6318,14231,9802,1,0,4499,8821,34,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,200000,9001,8827,1000000,9001,,,,,,,,,, +6582,"NAD83(2011) / Texas North (ftUS)",9003,6318,15357,9802,1,0,4497,8821,34,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,656166.667,9003,8827,3280833.333,9003,,,,,,,,,, +6583,"NAD83(2011) / Texas North Central",9001,6318,14232,9802,1,0,4499,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,600000,9001,8827,2000000,9001,,,,,,,,,, +6584,"NAD83(2011) / Texas North Central (ftUS)",9003,6318,15358,9802,1,0,4497,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,1968500,9003,8827,6561666.667,9003,,,,,,,,,, +6585,"NAD83(2011) / Texas South",9001,6318,14235,9802,1,0,4499,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,300000,9001,8827,5000000,9001,,,,,,,,,, +6586,"NAD83(2011) / Texas South (ftUS)",9003,6318,15361,9802,1,0,4497,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,984250,9003,8827,16404166.667,9003,,,,,,,,,, +6587,"NAD83(2011) / Texas South Central",9001,6318,14234,9802,1,0,4499,8821,27.5,9110,8822,-99,9110,8823,30.17,9110,8824,28.23,9110,8826,600000,9001,8827,4000000,9001,,,,,,,,,, +6588,"NAD83(2011) / Texas South Central (ftUS)",9003,6318,15360,9802,1,0,4497,8821,27.5,9110,8822,-99,9110,8823,30.17,9110,8824,28.23,9110,8826,1968500,9003,8827,13123333.333,9003,,,,,,,,,, +6589,"NAD83(2011) / Vermont",9001,6318,14430,9807,1,0,4499,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6590,"NAD83(2011) / Vermont (ftUS)",9003,6318,5645,9807,1,0,4497,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,1640416.6667,9003,8807,0,9003,,,,,,,,,,,,, +6591,"NAD83(2011) / Virginia Lambert",9001,6318,3967,9802,1,0,4499,8821,36,9102,8822,-79.5,9102,8823,37,9102,8824,39.5,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +6592,"NAD83(2011) / Virginia North",9001,6318,14531,9802,1,0,4499,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,3500000,9001,8827,2000000,9001,,,,,,,,,, +6593,"NAD83(2011) / Virginia North (ftUS)",9003,6318,15365,9802,1,0,4497,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,11482916.667,9003,8827,6561666.667,9003,,,,,,,,,, +6594,"NAD83(2011) / Virginia South",9001,6318,14532,9802,1,0,4499,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,3500000,9001,8827,1000000,9001,,,,,,,,,, +6595,"NAD83(2011) / Virginia South (ftUS)",9003,6318,15366,9802,1,0,4497,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,11482916.667,9003,8827,3280833.333,9003,,,,,,,,,, +6596,"NAD83(2011) / Washington North",9001,6318,14631,9802,1,0,4499,8821,47,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +6597,"NAD83(2011) / Washington North (ftUS)",9003,6318,15367,9802,1,0,4497,8821,47,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +6598,"NAD83(2011) / Washington South",9001,6318,14632,9802,1,0,4499,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +6599,"NAD83(2011) / Washington South (ftUS)",9003,6318,15368,9802,1,0,4497,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,1640416.667,9003,8827,0,9003,,,,,,,,,, +6600,"NAD83(2011) / West Virginia North",9001,6318,14731,9802,1,0,4499,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6601,"NAD83(2011) / West Virginia North (ftUS)",9003,6318,14735,9802,1,0,4497,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6602,"NAD83(2011) / West Virginia South",9001,6318,14732,9802,1,0,4499,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6603,"NAD83(2011) / West Virginia South (ftUS)",9003,6318,14736,9802,1,0,4497,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6604,"NAD83(2011) / Wisconsin Central",9001,4759,14832,9802,1,1,4499,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6605,"NAD83(2011) / Wisconsin Central (ftUS)",9003,6318,15370,9802,1,0,4497,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6606,"NAD83(2011) / Wisconsin North",9001,6318,14831,9802,1,0,4499,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6607,"NAD83(2011) / Wisconsin North (ftUS)",9003,6318,15369,9802,1,0,4497,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6608,"NAD83(2011) / Wisconsin South",9001,6318,14833,9802,1,0,4499,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6609,"NAD83(2011) / Wisconsin South (ftUS)",9003,6318,15371,9802,1,0,4497,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +6610,"NAD83(2011) / Wisconsin Transverse Mercator",9001,6318,14841,9807,1,0,4499,8801,0,9102,8802,-90,9102,8805,0.9996,9201,8806,520000,9001,8807,-4480000,9001,,,,,,,,,,,,, +6611,"NAD83(2011) / Wyoming East",9001,6318,14931,9807,1,0,4499,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +6612,"NAD83(2011) / Wyoming East (ftUS)",9003,6318,14935,9807,1,0,4497,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,656166.6667,9003,8807,0,9003,,,,,,,,,,,,, +6613,"NAD83(2011) / Wyoming East Central",9001,6318,14932,9807,1,0,4499,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,400000,9001,8807,100000,9001,,,,,,,,,,,,, +6614,"NAD83(2011) / Wyoming East Central (ftUS)",9003,6318,14936,9807,1,0,4497,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,1312333.3333,9003,8807,328083.3333,9003,,,,,,,,,,,,, +6615,"NAD83(2011) / Wyoming West",9001,6318,14934,9807,1,0,4499,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,800000,9001,8807,100000,9001,,,,,,,,,,,,, +6616,"NAD83(2011) / Wyoming West (ftUS)",9003,6318,14938,9807,1,0,4497,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,2624666.6667,9003,8807,328083.3333,9003,,,,,,,,,,,,, +6617,"NAD83(2011) / Wyoming West Central",9001,6318,14933,9807,1,0,4499,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,600000,9001,8807,0,9001,,,,,,,,,,,,, +6618,"NAD83(2011) / Wyoming West Central (ftUS)",9003,6318,14937,9807,1,0,4497,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,1968500,9003,8807,0,9003,,,,,,,,,,,,, +6619,"NAD83(2011) / Utah Central",9001,6318,14332,9802,1,0,4499,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,500000,9001,8827,2000000,9001,,,,,,,,,, +6620,"NAD83(2011) / Utah North",9001,6318,14331,9802,1,0,4499,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,500000,9001,8827,1000000,9001,,,,,,,,,, +6621,"NAD83(2011) / Utah South",9001,6318,14333,9802,1,0,4499,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,500000,9001,8827,3000000,9001,,,,,,,,,, +6622,"NAD83(CSRS) / Quebec Lambert",9001,4617,19944,9802,1,0,4499,8821,44,9110,8822,-68.3,9110,8823,60,9110,8824,46,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +6623,"NAD83 / Quebec Albers",9001,4269,6645,9822,1,0,4499,8821,44,9110,8822,-68.3,9110,8823,60,9110,8824,46,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +6624,"NAD83(CSRS) / Quebec Albers",9001,4617,6645,9822,1,0,4499,8821,44,9110,8822,-68.3,9110,8823,60,9110,8824,46,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +6625,"NAD83(2011) / Utah Central (ftUS)",9003,6318,15298,9802,1,0,4497,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,1640416.6667,9003,8827,6561666.6667,9003,,,,,,,,,, +6626,"NAD83(2011) / Utah North (ftUS)",9003,6318,15297,9802,1,0,4497,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,1640416.6667,9003,8827,3280833.3333,9003,,,,,,,,,, +6627,"NAD83(2011) / Utah South (ftUS)",9003,6318,15299,9802,1,0,4497,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,1640416.6667,9003,8827,9842500,9003,,,,,,,,,, +6628,"NAD83(PA11) / Hawaii zone 1",9001,6322,15131,9807,1,0,4499,8801,18.5,9110,8802,-155.3,9110,8805,0.999966667,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6629,"NAD83(PA11) / Hawaii zone 2",9001,6322,15132,9807,1,0,4499,8801,20.2,9110,8802,-156.4,9110,8805,0.999966667,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6630,"NAD83(PA11) / Hawaii zone 3",9001,6322,15133,9807,1,0,4499,8801,21.1,9110,8802,-158,9110,8805,0.99999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6631,"NAD83(PA11) / Hawaii zone 4",9001,6322,15134,9807,1,0,4499,8801,21.5,9110,8802,-159.3,9110,8805,0.99999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6632,"NAD83(PA11) / Hawaii zone 5",9001,6322,15135,9807,1,0,4499,8801,21.4,9110,8802,-160.1,9110,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6633,"NAD83(PA11) / Hawaii zone 3 (ftUS)",9003,6322,15138,9807,1,0,4497,8801,21.1,9110,8802,-158,9110,8805,0.99999,9201,8806,1640416.6667,9003,8807,0,9003,,,,,,,,,,,,, +6634,"NAD83(PA11) / UTM zone 4N",9001,6322,16004,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6635,"NAD83(PA11) / UTM zone 5N",9001,6322,16005,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6636,"NAD83(PA11) / UTM zone 2S",9001,6322,16102,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +6637,"NAD83(MA11) / Guam Map Grid",9001,6325,4325,9807,1,0,4499,8801,13.3,9110,8802,144.45,9110,8805,1,9201,8806,100000,9001,8807,200000,9001,,,,,,,,,,,,, +6646,"Karbala 1979 / Iraq National Grid",9001,4743,19907,9807,1,0,4400,8801,29.0134566,9110,8802,46.3,9110,8805,0.9994,9201,8806,800000,9001,8807,0,9001,,,,,,,,,,,,, +6669,"JGD2011 / Japan Plane Rectangular CS I",9001,6668,17801,9807,1,0,4530,8801,33,9110,8802,129.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6670,"JGD2011 / Japan Plane Rectangular CS II",9001,6668,17802,9807,1,0,4530,8801,33,9110,8802,131,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6671,"JGD2011 / Japan Plane Rectangular CS III",9001,6668,17803,9807,1,0,4530,8801,36,9110,8802,132.1,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6672,"JGD2011 / Japan Plane Rectangular CS IV",9001,6668,17804,9807,1,0,4530,8801,33,9110,8802,133.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6673,"JGD2011 / Japan Plane Rectangular CS V",9001,6668,17805,9807,1,0,4530,8801,36,9110,8802,134.2,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6674,"JGD2011 / Japan Plane Rectangular CS VI",9001,6668,17806,9807,1,0,4530,8801,36,9110,8802,136,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6675,"JGD2011 / Japan Plane Rectangular CS VII",9001,6668,17807,9807,1,0,4530,8801,36,9110,8802,137.1,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6676,"JGD2011 / Japan Plane Rectangular CS VIII",9001,6668,17808,9807,1,0,4530,8801,36,9110,8802,138.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6677,"JGD2011 / Japan Plane Rectangular CS IX",9001,6668,17809,9807,1,0,4530,8801,36,9110,8802,139.5,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6678,"JGD2011 / Japan Plane Rectangular CS X",9001,6668,17810,9807,1,0,4530,8801,40,9110,8802,140.5,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6679,"JGD2011 / Japan Plane Rectangular CS XI",9001,6668,17811,9807,1,0,4530,8801,44,9110,8802,140.15,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6680,"JGD2011 / Japan Plane Rectangular CS XII",9001,6668,17812,9807,1,0,4530,8801,44,9110,8802,142.15,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6681,"JGD2011 / Japan Plane Rectangular CS XIII",9001,6668,17813,9807,1,0,4530,8801,44,9110,8802,144.15,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6682,"JGD2011 / Japan Plane Rectangular CS XIV",9001,6668,17814,9807,1,0,4530,8801,26,9110,8802,142,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6683,"JGD2011 / Japan Plane Rectangular CS XV",9001,6668,17815,9807,1,0,4530,8801,26,9110,8802,127.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6684,"JGD2011 / Japan Plane Rectangular CS XVI",9001,6668,17816,9807,1,0,4530,8801,26,9110,8802,124,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6685,"JGD2011 / Japan Plane Rectangular CS XVII",9001,6668,17817,9807,1,0,4530,8801,26,9110,8802,131,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6686,"JGD2011 / Japan Plane Rectangular CS XVIII",9001,6668,17818,9807,1,0,4530,8801,20,9110,8802,136,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6687,"JGD2011 / Japan Plane Rectangular CS XIX",9001,6668,17819,9807,1,0,4530,8801,26,9110,8802,154,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6688,"JGD2011 / UTM zone 51N",9001,6668,16051,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6689,"JGD2011 / UTM zone 52N",9001,6668,16052,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6690,"JGD2011 / UTM zone 53N",9001,6668,16053,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6691,"JGD2011 / UTM zone 54N",9001,6668,16054,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6692,"JGD2011 / UTM zone 55N",9001,6668,16055,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6703,"WGS 84 / TM 60 SW",9001,4326,6702,9807,1,0,4400,8801,0,9102,8802,-60,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +6707,"RDN2008 / UTM zone 32N (N-E)",9001,6706,16032,9807,1,0,4500,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6708,"RDN2008 / UTM zone 33N (N-E)",9001,6706,16033,9807,1,0,4500,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6709,"RDN2008 / UTM zone 34N (N-E)",9001,6706,16034,9807,1,0,4500,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6720,"WGS 84 / CIG92",9001,4326,6716,9807,1,0,4400,8801,0,9110,8802,105.373,9110,8805,1.000024,9201,8806,50000,9001,8807,1300000,9001,,,,,,,,,,,,, +6721,"GDA94 / CIG94",9001,4283,6717,9807,1,0,4400,8801,0,9110,8802,105.373,9110,8805,1.00002514,9201,8806,50000,9001,8807,1300000,9001,,,,,,,,,,,,, +6722,"WGS 84 / CKIG92",9001,4326,6718,9807,1,0,4400,8801,0,9110,8802,96.523,9110,8805,1,9201,8806,50000,9001,8807,1400000,9001,,,,,,,,,,,,, +6723,"GDA94 / CKIG94",9001,4283,6719,9807,1,0,4400,8801,0,9110,8802,96.523,9110,8805,0.99999387,9201,8806,50000,9001,8807,1500000,9001,,,,,,,,,,,,, +6732,"GDA94 / MGA zone 41",9001,4283,6725,9807,1,1,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +6733,"GDA94 / MGA zone 42",9001,4283,6726,9807,1,1,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +6734,"GDA94 / MGA zone 43",9001,4283,6727,9807,1,1,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +6735,"GDA94 / MGA zone 44",9001,4283,6728,9807,1,1,4400,8801,0,9102,8802,81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +6736,"GDA94 / MGA zone 46",9001,4283,6729,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +6737,"GDA94 / MGA zone 47",9001,4283,6730,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +6738,"GDA94 / MGA zone 59",9001,4283,6731,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +6784,"NAD83(CORS96) / Oregon Baker zone (m)",9001,6783,6741,9807,1,0,4499,8801,44.3,9110,8802,-117.5,9110,8805,1.00016,9201,8806,40000,9001,8807,0,9001,,,,,,,,,,,,, +6785,"NAD83(CORS96) / Oregon Baker zone (ft)",9002,6783,6742,9807,1,0,4495,8801,44.3,9110,8802,-117.5,9110,8805,1.00016,9201,8806,131233.5958,9002,8807,0,9002,,,,,,,,,,,,, +6786,"NAD83(2011) / Oregon Baker zone (m)",9001,6318,6741,9807,1,0,4499,8801,44.3,9110,8802,-117.5,9110,8805,1.00016,9201,8806,40000,9001,8807,0,9001,,,,,,,,,,,,, +6787,"NAD83(2011) / Oregon Baker zone (ft)",9002,6318,6742,9807,1,0,4495,8801,44.3,9110,8802,-117.5,9110,8805,1.00016,9201,8806,131233.5958,9002,8807,0,9002,,,,,,,,,,,,, +6788,"NAD83(CORS96) / Oregon Bend-Klamath Falls zone (m)",9001,6783,6743,9807,1,0,4499,8801,41.45,9110,8802,-121.45,9110,8805,1.0002,9201,8806,80000,9001,8807,0,9001,,,,,,,,,,,,, +6789,"NAD83(CORS96) / Oregon Bend-Klamath Falls zone (ft)",9002,6783,6744,9807,1,0,4495,8801,41.45,9110,8802,-121.45,9110,8805,1.0002,9201,8806,262467.1916,9002,8807,0,9002,,,,,,,,,,,,, +6790,"NAD83(2011) / Oregon Bend-Klamath Falls zone (m)",9001,6318,6743,9807,1,0,4499,8801,41.45,9110,8802,-121.45,9110,8805,1.0002,9201,8806,80000,9001,8807,0,9001,,,,,,,,,,,,, +6791,"NAD83(2011) / Oregon Bend-Klamath Falls zone (ft)",9002,6318,6744,9807,1,0,4495,8801,41.45,9110,8802,-121.45,9110,8805,1.0002,9201,8806,262467.1916,9002,8807,0,9002,,,,,,,,,,,,, +6792,"NAD83(CORS96) / Oregon Bend-Redmond-Prineville zone (m)",9001,6783,6745,9801,1,0,4499,8801,44.4,9110,8802,-121.15,9110,8805,1.00012,9201,8806,80000,9001,8807,130000,9001,,,,,,,,,,,,, +6793,"NAD83(CORS96) / Oregon Bend-Redmond-Prineville zone (ft)",9002,6783,6746,9801,1,0,4495,8801,44.4,9110,8802,-121.15,9110,8805,1.00012,9201,8806,262467.1916,9002,8807,426509.1864,9002,,,,,,,,,,,,, +6794,"NAD83(2011) / Oregon Bend-Redmond-Prineville zone (m)",9001,6318,6745,9801,1,0,4499,8801,44.4,9110,8802,-121.15,9110,8805,1.00012,9201,8806,80000,9001,8807,130000,9001,,,,,,,,,,,,, +6795,"NAD83(2011) / Oregon Bend-Redmond-Prineville zone (ft)",9002,6318,6746,9801,1,0,4495,8801,44.4,9110,8802,-121.15,9110,8805,1.00012,9201,8806,262467.1916,9002,8807,426509.1864,9002,,,,,,,,,,,,, +6796,"NAD83(CORS96) / Oregon Bend-Burns zone (m)",9001,6783,6747,9801,1,0,4499,8801,43.4,9110,8802,-119.45,9110,8805,1.0002,9201,8806,120000,9001,8807,60000,9001,,,,,,,,,,,,, +6797,"NAD83(CORS96) / Oregon Bend-Burns zone (ft)",9002,6783,6748,9801,1,0,4495,8801,43.4,9110,8802,-119.45,9110,8805,1.0002,9201,8806,393700.7874,9002,8807,196850.3937,9002,,,,,,,,,,,,, +6798,"NAD83(2011) / Oregon Bend-Burns zone (m)",9001,6318,6747,9801,1,0,4499,8801,43.4,9110,8802,-119.45,9110,8805,1.0002,9201,8806,120000,9001,8807,60000,9001,,,,,,,,,,,,, +6799,"NAD83(2011) / Oregon Bend-Burns zone (ft)",9002,6318,6748,9801,1,0,4495,8801,43.4,9110,8802,-119.45,9110,8805,1.0002,9201,8806,393700.7874,9002,8807,196850.3937,9002,,,,,,,,,,,,, +6800,"NAD83(CORS96) / Oregon Canyonville-Grants Pass zone (m)",9001,6783,6749,9807,1,0,4499,8801,42.3,9110,8802,-123.2,9110,8805,1.00007,9201,8806,40000,9001,8807,0,9001,,,,,,,,,,,,, +6801,"NAD83(CORS96) / Oregon Canyonville-Grants Pass zone (ft)",9002,6783,6750,9807,1,0,4495,8801,42.3,9110,8802,-123.2,9110,8805,1.00007,9201,8806,131233.5958,9002,8807,0,9002,,,,,,,,,,,,, +6802,"NAD83(2011) / Oregon Canyonville-Grants Pass zone (m)",9001,6318,6749,9807,1,0,4499,8801,42.3,9110,8802,-123.2,9110,8805,1.00007,9201,8806,40000,9001,8807,0,9001,,,,,,,,,,,,, +6803,"NAD83(2011) / Oregon Canyonville-Grants Pass zone (ft)",9002,6318,6750,9807,1,0,4495,8801,42.3,9110,8802,-123.2,9110,8805,1.00007,9201,8806,131233.5958,9002,8807,0,9002,,,,,,,,,,,,, +6804,"NAD83(CORS96) / Oregon Columbia River East zone (m)",9001,6783,6751,9801,1,0,4499,8801,45.4,9110,8802,-120.3,9110,8805,1.000008,9201,8806,150000,9001,8807,30000,9001,,,,,,,,,,,,, +6805,"NAD83(CORS96) / Oregon Columbia River East zone (ft)",9002,6783,6752,9801,1,0,4495,8801,45.4,9110,8802,-120.3,9110,8805,1.000008,9201,8806,492125.9843,9002,8807,98425.1969,9002,,,,,,,,,,,,, +6806,"NAD83(2011) / Oregon Columbia River East zone (m)",9001,6318,6751,9801,1,0,4499,8801,45.4,9110,8802,-120.3,9110,8805,1.000008,9201,8806,150000,9001,8807,30000,9001,,,,,,,,,,,,, +6807,"NAD83(2011) / Oregon Columbia River East zone (ft)",9002,6318,6752,9801,1,0,4495,8801,45.4,9110,8802,-120.3,9110,8805,1.000008,9201,8806,492125.9843,9002,8807,98425.1969,9002,,,,,,,,,,,,, +6808,"NAD83(CORS96) / Oregon Columbia River West zone (m)",9001,6783,6753,9812,1,0,4499,8806,7000000,9001,8807,-3000000,9001,8811,45.55,9110,8812,-123,9110,8813,295,9102,8814,295,9102,8815,1,9201,,,,,,, +6809,"NAD83(CORS96) / Oregon Columbia River West zone (ft)",9002,6783,6754,9812,1,0,4495,8806,22965879.2651,9002,8807,-9842519.685,9002,8811,45.55,9110,8812,-123,9110,8813,295,9102,8814,295,9102,8815,1,9201,,,,,,, +6810,"NAD83(2011) / Oregon Columbia River West zone (m)",9001,6318,6753,9812,1,0,4499,8806,7000000,9001,8807,-3000000,9001,8811,45.55,9110,8812,-123,9110,8813,295,9102,8814,295,9102,8815,1,9201,,,,,,, +6811,"NAD83(2011) / Oregon Columbia River West zone (ft)",9002,6318,6754,9812,1,0,4495,8806,22965879.2651,9002,8807,-9842519.685,9002,8811,45.55,9110,8812,-123,9110,8813,295,9102,8814,295,9102,8815,1,9201,,,,,,, +6812,"NAD83(CORS96) / Oregon Cottage Grove-Canyonville zone (m)",9001,6783,6755,9807,1,0,4499,8801,42.5,9110,8802,-123.2,9110,8805,1.000023,9201,8806,50000,9001,8807,0,9001,,,,,,,,,,,,, +6813,"NAD83(CORS96) / Oregon Cottage Grove-Canyonville zone (ft)",9002,6783,6756,9807,1,0,4495,8801,42.5,9110,8802,-123.2,9110,8805,1.000023,9201,8806,164041.9948,9002,8807,0,9002,,,,,,,,,,,,, +6814,"NAD83(2011) / Oregon Cottage Grove-Canyonville zone (m)",9001,6318,6755,9807,1,0,4499,8801,42.5,9110,8802,-123.2,9110,8805,1.000023,9201,8806,50000,9001,8807,0,9001,,,,,,,,,,,,, +6815,"NAD83(2011) / Oregon Cottage Grove-Canyonville zone (ft)",9002,6318,6756,9807,1,0,4495,8801,42.5,9110,8802,-123.2,9110,8805,1.000023,9201,8806,164041.9948,9002,8807,0,9002,,,,,,,,,,,,, +6816,"NAD83(CORS96) / Oregon Dufur-Madras zone (m)",9001,6783,6757,9807,1,0,4499,8801,44.3,9110,8802,-121,9110,8805,1.00011,9201,8806,80000,9001,8807,0,9001,,,,,,,,,,,,, +6817,"NAD83(CORS96) / Oregon Dufur-Madras zone (ft)",9002,6783,6758,9807,1,0,4495,8801,44.3,9110,8802,-121,9110,8805,1.00011,9201,8806,262467.1916,9002,8807,0,9002,,,,,,,,,,,,, +6818,"NAD83(2011) / Oregon Dufur-Madras zone (m)",9001,6318,6757,9807,1,0,4499,8801,44.3,9110,8802,-121,9110,8805,1.00011,9201,8806,80000,9001,8807,0,9001,,,,,,,,,,,,, +6819,"NAD83(2011) / Oregon Dufur-Madras zone (ft)",9002,6318,6758,9807,1,0,4495,8801,44.3,9110,8802,-121,9110,8805,1.00011,9201,8806,262467.1916,9002,8807,0,9002,,,,,,,,,,,,, +6820,"NAD83(CORS96) / Oregon Eugene zone (m)",9001,6783,6759,9807,1,0,4499,8801,43.45,9110,8802,-123.1,9110,8805,1.000015,9201,8806,50000,9001,8807,0,9001,,,,,,,,,,,,, +6821,"NAD83(CORS96) / Oregon Eugene zone (ft)",9002,6783,6760,9807,1,0,4495,8801,43.45,9110,8802,-123.1,9110,8805,1.000015,9201,8806,164041.9948,9002,8807,0,9002,,,,,,,,,,,,, +6822,"NAD83(2011) / Oregon Eugene zone (m)",9001,6318,6759,9807,1,0,4499,8801,43.45,9110,8802,-123.1,9110,8805,1.000015,9201,8806,50000,9001,8807,0,9001,,,,,,,,,,,,, +6823,"NAD83(2011) / Oregon Eugene zone (ft)",9002,6318,6760,9807,1,0,4495,8801,43.45,9110,8802,-123.1,9110,8805,1.000015,9201,8806,164041.9948,9002,8807,0,9002,,,,,,,,,,,,, +6824,"NAD83(CORS96) / Oregon Grants Pass-Ashland zone (m)",9001,6783,6761,9807,1,0,4499,8801,41.45,9110,8802,-123.2,9110,8805,1.000043,9201,8806,50000,9001,8807,0,9001,,,,,,,,,,,,, +6825,"NAD83(CORS96) / Oregon Grants Pass-Ashland zone (ft)",9002,6783,6762,9807,1,0,4495,8801,41.45,9110,8802,-123.2,9110,8805,1.000043,9201,8806,164041.9948,9002,8807,0,9002,,,,,,,,,,,,, +6826,"NAD83(2011) / Oregon Grants Pass-Ashland zone (m)",9001,6318,6761,9807,1,0,4499,8801,41.45,9110,8802,-123.2,9110,8805,1.000043,9201,8806,50000,9001,8807,0,9001,,,,,,,,,,,,, +6827,"NAD83(2011) / Oregon Grants Pass-Ashland zone (ft)",9002,6318,6762,9807,1,0,4495,8801,41.45,9110,8802,-123.2,9110,8805,1.000043,9201,8806,164041.9948,9002,8807,0,9002,,,,,,,,,,,,, +6828,"NAD83(CORS96) / Oregon Gresham-Warm Springs zone (m)",9001,6783,6763,9807,1,0,4499,8801,45,9110,8802,-122.2,9110,8805,1.00005,9201,8806,10000,9001,8807,0,9001,,,,,,,,,,,,, +6829,"NAD83(CORS96) / Oregon Gresham-Warm Springs zone (ft)",9002,6783,6764,9807,1,0,4495,8801,45,9110,8802,-122.2,9110,8805,1.00005,9201,8806,32808.399,9002,8807,0,9002,,,,,,,,,,,,, +6830,"NAD83(2011) / Oregon Gresham-Warm Springs zone (m)",9001,6318,6763,9807,1,0,4499,8801,45,9110,8802,-122.2,9110,8805,1.00005,9201,8806,10000,9001,8807,0,9001,,,,,,,,,,,,, +6831,"NAD83(2011) / Oregon Gresham-Warm Springs zone (ft)",9002,6318,6764,9807,1,0,4495,8801,45,9110,8802,-122.2,9110,8805,1.00005,9201,8806,32808.399,9002,8807,0,9002,,,,,,,,,,,,, +6832,"NAD83(CORS96) / Oregon La Grande zone (m)",9001,6783,6765,9807,1,0,4499,8801,45,9102,8802,-118,9102,8805,1.00013,9201,8806,40000,9001,8807,0,9001,,,,,,,,,,,,, +6833,"NAD83(CORS96) / Oregon La Grande zone (ft)",9002,6783,6766,9807,1,0,4495,8801,45,9102,8802,-118,9102,8805,1.00013,9201,8806,131233.5958,9002,8807,0,9002,,,,,,,,,,,,, +6834,"NAD83(2011) / Oregon La Grande zone (m)",9001,6318,6765,9807,1,0,4499,8801,45,9102,8802,-118,9102,8805,1.00013,9201,8806,40000,9001,8807,0,9001,,,,,,,,,,,,, +6835,"NAD83(2011) / Oregon La Grande zone (ft)",9002,6318,6766,9807,1,0,4495,8801,45,9102,8802,-118,9102,8805,1.00013,9201,8806,131233.5958,9002,8807,0,9002,,,,,,,,,,,,, +6836,"NAD83(CORS96) / Oregon Ontario zone (m)",9001,6783,6767,9807,1,0,4499,8801,43.15,9110,8802,-117,9110,8805,1.0001,9201,8806,80000,9001,8807,0,9001,,,,,,,,,,,,, +6837,"NAD83(CORS96) / Oregon Ontario zone (ft)",9002,6783,6768,9807,1,0,4495,8801,43.15,9110,8802,-117,9110,8805,1.0001,9201,8806,262467.1916,9002,8807,0,9002,,,,,,,,,,,,, +6838,"NAD83(2011) / Oregon Ontario zone (m)",9001,6318,6767,9807,1,0,4499,8801,43.15,9110,8802,-117,9110,8805,1.0001,9201,8806,80000,9001,8807,0,9001,,,,,,,,,,,,, +6839,"NAD83(2011) / Oregon Ontario zone (ft)",9002,6318,6768,9807,1,0,4495,8801,43.15,9110,8802,-117,9110,8805,1.0001,9201,8806,262467.1916,9002,8807,0,9002,,,,,,,,,,,,, +6840,"NAD83(CORS96) / Oregon Coast zone (m)",9001,6783,6769,9812,1,0,4499,8806,-300000,9001,8807,-4600000,9001,8811,44.45,9110,8812,-124.03,9110,8813,5,9102,8814,5,9102,8815,1,9201,,,,,,, +6841,"NAD83(CORS96) / Oregon Coast zone (ft)",9002,6783,6770,9812,1,0,4495,8806,-984251.9685,9002,8807,-15091863.5171,9002,8811,44.45,9110,8812,-124.03,9110,8813,5,9102,8814,5,9102,8815,1,9201,,,,,,, +6842,"NAD83(2011) / Oregon Coast zone (m)",9001,6318,6769,9812,1,0,4499,8806,-300000,9001,8807,-4600000,9001,8811,44.45,9110,8812,-124.03,9110,8813,5,9102,8814,5,9102,8815,1,9201,,,,,,, +6843,"NAD83(2011) / Oregon Coast zone (ft)",9002,6318,6770,9812,1,0,4495,8806,-984251.9685,9002,8807,-15091863.5171,9002,8811,44.45,9110,8812,-124.03,9110,8813,5,9102,8814,5,9102,8815,1,9201,,,,,,, +6844,"NAD83(CORS96) / Oregon Pendleton zone (m)",9001,6783,6771,9807,1,0,4499,8801,45.15,9110,8802,-119.1,9110,8805,1.000045,9201,8806,60000,9001,8807,0,9001,,,,,,,,,,,,, +6845,"NAD83(CORS96) / Oregon Pendleton zone (ft)",9002,6783,6772,9807,1,0,4495,8801,45.15,9110,8802,-119.1,9110,8805,1.000045,9201,8806,196850.3937,9002,8807,0,9002,,,,,,,,,,,,, +6846,"NAD83(2011) / Oregon Pendleton zone (m)",9001,6318,6771,9807,1,0,4499,8801,45.15,9110,8802,-119.1,9110,8805,1.000045,9201,8806,60000,9001,8807,0,9001,,,,,,,,,,,,, +6847,"NAD83(2011) / Oregon Pendleton zone (ft)",9002,6318,6772,9807,1,0,4495,8801,45.15,9110,8802,-119.1,9110,8805,1.000045,9201,8806,196850.3937,9002,8807,0,9002,,,,,,,,,,,,, +6848,"NAD83(CORS96) / Oregon Pendleton-La Grande zone (m)",9001,6783,6773,9807,1,0,4499,8801,45.05,9110,8802,-118.2,9110,8805,1.000175,9201,8806,30000,9001,8807,0,9001,,,,,,,,,,,,, +6849,"NAD83(CORS96) / Oregon Pendleton-La Grande zone (ft)",9002,6783,6774,9807,1,0,4495,8801,45.05,9110,8802,-118.2,9110,8805,1.000175,9201,8806,98425.1969,9002,8807,0,9002,,,,,,,,,,,,, +6850,"NAD83(2011) / Oregon Pendleton-La Grande zone (m)",9001,6318,6773,9807,1,0,4499,8801,45.05,9110,8802,-118.2,9110,8805,1.000175,9201,8806,30000,9001,8807,0,9001,,,,,,,,,,,,, +6851,"NAD83(2011) / Oregon Pendleton-La Grande zone (ft)",9002,6318,6774,9807,1,0,4495,8801,45.05,9110,8802,-118.2,9110,8805,1.000175,9201,8806,98425.1969,9002,8807,0,9002,,,,,,,,,,,,, +6852,"NAD83(CORS96) / Oregon Portland zone (m)",9001,6783,6775,9801,1,0,4499,8801,45.3,9110,8802,-122.45,9110,8805,1.000002,9201,8806,100000,9001,8807,50000,9001,,,,,,,,,,,,, +6853,"NAD83(CORS96) / Oregon Portland zone (ft)",9002,6783,6776,9801,1,0,4495,8801,45.3,9110,8802,-122.45,9110,8805,1.000002,9201,8806,328083.9895,9002,8807,164041.9948,9002,,,,,,,,,,,,, +6854,"NAD83(2011) / Oregon Portland zone (m)",9001,6318,6775,9801,1,0,4499,8801,45.3,9110,8802,-122.45,9110,8805,1.000002,9201,8806,100000,9001,8807,50000,9001,,,,,,,,,,,,, +6855,"NAD83(2011) / Oregon Portland zone (ft)",9002,6318,6776,9801,1,0,4495,8801,45.3,9110,8802,-122.45,9110,8805,1.000002,9201,8806,328083.9895,9002,8807,164041.9948,9002,,,,,,,,,,,,, +6856,"NAD83(CORS96) / Oregon Salem zone (m)",9001,6783,6777,9807,1,0,4499,8801,44.2,9110,8802,-123.05,9110,8805,1.00001,9201,8806,50000,9001,8807,0,9001,,,,,,,,,,,,, +6857,"NAD83(CORS96) / Oregon Salem zone (ft)",9002,6783,6778,9807,1,0,4495,8801,44.2,9110,8802,-123.05,9110,8805,1.00001,9201,8806,164041.9948,9002,8807,0,9002,,,,,,,,,,,,, +6858,"NAD83(2011) / Oregon Salem zone (m)",9001,6318,6777,9807,1,0,4499,8801,44.2,9110,8802,-123.05,9110,8805,1.00001,9201,8806,50000,9001,8807,0,9001,,,,,,,,,,,,, +6859,"NAD83(2011) / Oregon Salem zone (ft)",9002,6318,6778,9807,1,0,4495,8801,44.2,9110,8802,-123.05,9110,8805,1.00001,9201,8806,164041.9948,9002,8807,0,9002,,,,,,,,,,,,, +6860,"NAD83(CORS96) / Oregon Santiam Pass zone (m)",9001,6783,6779,9807,1,0,4499,8801,44.05,9110,8802,-122.3,9110,8805,1.000155,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6861,"NAD83(CORS96) / Oregon Santiam Pass zone (ft)",9002,6783,6780,9807,1,0,4495,8801,44.05,9110,8802,-122.3,9110,8805,1.000155,9201,8806,0,9002,8807,0,9002,,,,,,,,,,,,, +6862,"NAD83(2011) / Oregon Santiam Pass zone (m)",9001,6318,6779,9807,1,0,4499,8801,44.05,9110,8802,-122.3,9110,8805,1.000155,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +6863,"NAD83(2011) / Oregon Santiam Pass zone (ft)",9002,6318,6780,9807,1,0,4495,8801,44.05,9110,8802,-122.3,9110,8805,1.000155,9201,8806,0,9002,8807,0,9002,,,,,,,,,,,,, +6867,"NAD83(CORS96) / Oregon LCC (m)",9001,6783,13633,9802,1,0,4499,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +6868,"NAD83(CORS96) / Oregon GIC Lambert (ft)",9002,6783,15374,9802,1,0,4495,8821,41.45,9110,8822,-120.3,9110,8823,43,9110,8824,45.3,9110,8826,1312335.958,9002,8827,0,9002,,,,,,,,,, +6870,"ETRS89 / Albania TM 2010",9001,4258,6869,9807,1,0,4530,8801,0,9102,8802,20,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6875,"RDN2008 / Italy zone (N-E)",9001,6706,6877,9807,1,0,4500,8801,0,9102,8802,12,9102,8805,0.9985,9201,8806,7000000,9001,8807,0,9001,,,,,,,,,,,,, +6876,"RDN2008 / Zone 12 (N-E)",9001,6706,6878,9807,1,0,4500,8801,0,9102,8802,12,9102,8805,1,9201,8806,3000000,9001,8807,0,9001,,,,,,,,,,,,, +6879,"NAD83(2011) / Wisconsin Central",9001,6318,14832,9802,1,0,4499,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +6880,"NAD83(2011) / Nebraska (ftUS)",9003,6318,15396,9802,1,0,4497,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +6884,"NAD83(CORS96) / Oregon North",9001,6783,13631,9802,1,0,4499,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,2500000,9001,8827,0,9001,,,,,,,,,, +6885,"NAD83(CORS96) / Oregon North (ft)",9002,6783,15351,9802,1,0,4495,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,8202099.738,9002,8827,0,9002,,,,,,,,,, +6886,"NAD83(CORS96) / Oregon South",9001,6783,13632,9802,1,0,4499,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,1500000,9001,8827,0,9001,,,,,,,,,, +6887,"NAD83(CORS96) / Oregon South (ft)",9002,6783,15352,9802,1,0,4495,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,4921259.843,9002,8827,0,9002,,,,,,,,,, +6915,"South East Island 1943 / UTM zone 40N",9001,6892,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +6922,"NAD83 / Kansas LCC",9001,4269,6920,9802,1,0,4499,8821,36,9110,8822,-98.15,9110,8823,39.3,9110,8824,37.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +6923,"NAD83 / Kansas LCC (ftUS)",9003,4269,6921,9802,1,0,4497,8821,36,9110,8822,-98.15,9110,8823,39.3,9110,8824,37.3,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +6924,"NAD83(2011) / Kansas LCC",9001,6318,6920,9802,1,0,4499,8821,36,9110,8822,-98.15,9110,8823,39.3,9110,8824,37.3,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +6925,"NAD83(2011) / Kansas LCC (ftUS)",9003,6318,6921,9802,1,0,4497,8821,36,9110,8822,-98.15,9110,8823,39.3,9110,8824,37.3,9110,8826,1312333.3333,9003,8827,0,9003,,,,,,,,,, +6931,"WGS 84 / NSIDC EASE-Grid 2.0 North",9001,4326,6929,9820,1,0,4469,8801,90,9102,8802,0,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +6932,"WGS 84 / NSIDC EASE-Grid 2.0 South",9001,4326,6930,9820,1,0,4470,8801,-90,9102,8802,0,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +6933,"WGS 84 / NSIDC EASE-Grid 2.0 Global",9001,4326,6928,9835,1,0,4499,8802,0,9102,8806,0,9001,8807,0,9001,8823,30,9102,,,,,,,,,,,,,,,, +6956,"VN-2000 / TM-3 zone 481",9001,4756,6952,9807,1,0,4400,8801,0,9102,8802,102,9102,8805,0.9999,9201,8806,0,9001,8807,500000,9001,,,,,,,,,,,,, +6957,"VN-2000 / TM-3 zone 482",9001,4756,6953,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9999,9201,8806,0,9001,8807,500000,9001,,,,,,,,,,,,, +6958,"VN-2000 / TM-3 zone 491",9001,4756,6954,9807,1,0,4400,8801,0,9102,8802,108,9102,8805,0.9999,9201,8806,0,9001,8807,500000,9001,,,,,,,,,,,,, +6959,"VN-2000 / TM-3 Da Nang zone",9001,4756,6955,9807,1,0,4400,8801,0,9110,8802,107.45,9110,8805,0.9999,9201,8806,0,9001,8807,500000,9001,,,,,,,,,,,,, +6962,"ETRS89 / Albania LCC 2010",9001,4258,6961,9802,1,0,4530,8821,41,9102,8822,20,9102,8823,39,9102,8824,43,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +6966,"NAD27 / Michigan North",9003,4267,6965,1051,1,0,4497,1038,1.0000382,9201,8821,44.47,9110,8822,-87,9110,8823,45.29,9110,8824,47.05,9110,8826,2000000,9003,8827,0,9003,,,,,,, +6984,Israeli Grid 05,9001,6983,18204,9807,1,0,4400,8801,31.4403817,9110,8802,35.1216261,9110,8805,1.0000067,9201,8806,219529.584,9001,8807,626907.39,9001,,,,,,,,,,,,, +6991,"Israeli Grid 05/12",9001,6990,18204,9807,1,0,4400,8801,31.4403817,9110,8802,35.1216261,9110,8805,1.0000067,9201,8806,219529.584,9001,8807,626907.39,9001,,,,,,,,,,,,, +6996,"NAD83(2011) / San Francisco CS13",9001,6318,6994,9807,1,1,4499,8801,37.75,9102,8802,-122.45,9102,8805,1.000007,9202,8806,48000,9001,8807,24000,9001,,,,,,,,,,,,, +6997,"NAD83(2011) / San Francisco CS13 (ftUS)",9003,6318,6995,9807,1,1,4497,8801,37.75,9102,8802,-122.45,9102,8805,1.000007,9202,8806,157480,9003,8807,78740,9003,,,,,,,,,,,,, +7005,"Nahrwan 1934 / UTM zone 37N",9001,4744,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7006,"Nahrwan 1934 / UTM zone 38N",9001,4744,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7007,"Nahrwan 1934 / UTM zone 39N",9001,4744,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7057,"NAD83(2011) / IaRCS zone 1",9003,6318,7043,9801,1,0,4497,8801,43.12,9110,8802,-95.15,9110,8805,1.000052,9201,8806,11500000,9003,8807,9600000,9003,,,,,,,,,,,,, +7058,"NAD83(2011) / IaRCS zone 2",9003,6318,7044,9801,1,0,4497,8801,43.1,9110,8802,-92.45,9110,8805,1.000043,9201,8806,12500000,9003,8807,9800000,9003,,,,,,,,,,,,, +7059,"NAD83(2011) / IaRCS zone 3",9003,6318,7045,9807,1,0,4497,8801,40.15,9110,8802,-91.12,9110,8805,1.000035,9201,8806,13500000,9003,8807,8300000,9003,,,,,,,,,,,,, +7060,"NAD83(2011) / IaRCS zone 4",9003,6318,7046,9801,1,0,4497,8801,42.32,9110,8802,-94.5,9110,8805,1.000045,9201,8806,14500000,9003,8807,8600000,9003,,,,,,,,,,,,, +7061,"NAD83(2011) / IaRCS zone 5",9003,6318,7047,9801,1,0,4497,8801,42.39,9110,8802,-92.15,9110,8805,1.000032,9201,8806,15500000,9003,8807,8900000,9003,,,,,,,,,,,,, +7062,"NAD83(2011) / IaRCS zone 6",9003,6318,7048,9807,1,0,4497,8801,40.15,9110,8802,-95.44,9110,8805,1.000039,9201,8806,16500000,9003,8807,6600000,9003,,,,,,,,,,,,, +7063,"NAD83(2011) / IaRCS zone 7",9003,6318,7049,9807,1,0,4497,8801,40.15,9110,8802,-94.38,9110,8805,1.000045,9201,8806,17500000,9003,8807,6800000,9003,,,,,,,,,,,,, +7064,"NAD83(2011) / IaRCS zone 8",9003,6318,7050,9807,1,0,4497,8801,40.15,9110,8802,-93.43,9110,8805,1.000033,9201,8806,18500000,9003,8807,7000000,9003,,,,,,,,,,,,, +7065,"NAD83(2011) / IaRCS zone 9",9003,6318,7051,9807,1,0,4497,8801,40.15,9110,8802,-92.49,9110,8805,1.000027,9201,8806,19500000,9003,8807,7200000,9003,,,,,,,,,,,,, +7066,"NAD83(2011) / IaRCS zone 10",9003,6318,7052,9801,1,0,4497,8801,41.5,9110,8802,-91.4,9110,8805,1.00002,9201,8806,20500000,9003,8807,8000000,9003,,,,,,,,,,,,, +7067,"NAD83(2011) / IaRCS zone 11",9003,6318,7053,9807,1,0,4497,8801,40.15,9110,8802,-90.32,9110,8805,1.000027,9201,8806,21500000,9003,8807,7600000,9003,,,,,,,,,,,,, +7068,"NAD83(2011) / IaRCS zone 12",9003,6318,7054,9801,1,0,4497,8801,40.55,9110,8802,-93.45,9110,8805,1.000037,9201,8806,22500000,9003,8807,6200000,9003,,,,,,,,,,,,, +7069,"NAD83(2011) / IaRCS zone 13",9003,6318,7055,9807,1,0,4497,8801,40.15,9110,8802,-91.55,9110,8805,1.00002,9201,8806,23500000,9003,8807,6400000,9003,,,,,,,,,,,,, +7070,"NAD83(2011) / IaRCS zone 14",9003,6318,7056,9807,1,0,4497,8801,40.15,9110,8802,-91.15,9110,8805,1.000018,9201,8806,24500000,9003,8807,6200000,9003,,,,,,,,,,,,, +7074,"RGTAAF07 / UTM zone 37S",9001,7073,16137,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7075,"RGTAAF07 / UTM zone 38S",9001,7073,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7076,"RGTAAF07 / UTM zone 39S",9001,7073,16139,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7077,"RGTAAF07 / UTM zone 40S",9001,7073,16140,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7078,"RGTAAF07 / UTM zone 41S",9001,7073,16141,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7079,"RGTAAF07 / UTM zone 42S",9001,7073,16142,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7080,"RGTAAF07 / UTM zone 43S",9001,7073,16143,9807,1,0,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7081,"RGTAAF07 / UTM zone 44S",9001,7073,16144,9807,1,0,4400,8801,0,9102,8802,81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7082,"RGTAAF07 / Terre Adelie Polar Stereographic",9001,7073,19983,9830,1,0,4400,8826,300000,9001,8827,200000,9001,8832,-67,9102,8833,140,9102,,,,,,,,,,,,,,,, +7109,"NAD83(2011) / RMTCRS St Mary (m)",9001,6318,7089,9807,1,0,4499,8801,48.3,9110,8802,-112.3,9110,8805,1.00016,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +7110,"NAD83(2011) / RMTCRS Blackfeet (m)",9001,6318,7091,9807,1,0,4499,8801,48,9110,8802,-112.3,9110,8805,1.00019,9201,8806,100000,9001,8807,0,9001,,,,,,,,,,,,, +7111,"NAD83(2011) / RMTCRS Milk River (m)",9001,6318,7093,9801,1,0,4499,8801,48.3,9110,8802,-111,9110,8805,1.000145,9201,8806,150000,9001,8807,200000,9001,,,,,,,,,,,,, +7112,"NAD83(2011) / RMTCRS Fort Belknap (m)",9001,6318,7095,9801,1,0,4499,8801,48.3,9110,8802,-108.3,9110,8805,1.00012,9201,8806,200000,9001,8807,150000,9001,,,,,,,,,,,,, +7113,"NAD83(2011) / RMTCRS Fort Peck Assiniboine (m)",9001,6318,7097,9801,1,0,4499,8801,48.2,9110,8802,-105.3,9110,8805,1.00012,9201,8806,200000,9001,8807,100000,9001,,,,,,,,,,,,, +7114,"NAD83(2011) / RMTCRS Fort Peck Sioux (m)",9001,6318,7099,9801,1,0,4499,8801,48.2,9110,8802,-105.3,9110,8805,1.00009,9201,8806,100000,9001,8807,50000,9001,,,,,,,,,,,,, +7115,"NAD83(2011) / RMTCRS Crow (m)",9001,6318,7101,9807,1,0,4499,8801,44.45,9110,8802,-107.45,9110,8805,1.000148,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +7116,"NAD83(2011) / RMTCRS Bobcat (m)",9001,6318,7103,9801,1,0,4499,8801,46.15,9110,8802,-111.15,9110,8805,1.000185,9201,8806,100000,9001,8807,100000,9001,,,,,,,,,,,,, +7117,"NAD83(2011) / RMTCRS Billings (m)",9001,6318,7105,9801,1,0,4499,8801,45.47,9110,8802,-108.25,9110,8805,1.0001515,9201,8806,200000,9001,8807,50000,9001,,,,,,,,,,,,, +7118,"NAD83(2011) / RMTCRS Wind River (m)",9001,6318,7107,9807,1,0,4499,8801,42.4,9110,8802,-108.2,9110,8805,1.00024,9201,8806,100000,9001,8807,0,9001,,,,,,,,,,,,, +7119,"NAD83(2011) / RMTCRS St Mary (ft)",9002,6318,7090,9807,1,0,4495,8801,48.3,9110,8802,-112.3,9110,8805,1.00016,9201,8806,492125.9843,9002,8807,0,9002,,,,,,,,,,,,, +7120,"NAD83(2011) / RMTCRS Blackfeet (ft)",9002,6318,7092,9807,1,0,4495,8801,48,9110,8802,-112.3,9110,8805,1.00019,9201,8806,328083.9895,9002,8807,0,9002,,,,,,,,,,,,, +7121,"NAD83(2011) / RMTCRS Milk River (ft)",9002,6318,7094,9801,1,0,4495,8801,48.3,9110,8802,-111,9110,8805,1.000145,9201,8806,492125.9843,9002,8807,656167.979,9002,,,,,,,,,,,,, +7122,"NAD83(2011) / RMTCRS Fort Belknap (ft)",9002,6318,7096,9801,1,0,4495,8801,48.3,9110,8802,-108.3,9110,8805,1.00012,9201,8806,656167.979,9002,8807,492125.9843,9002,,,,,,,,,,,,, +7123,"NAD83(2011) / RMTCRS Fort Peck Assiniboine (ft)",9002,6318,7098,9801,1,0,4495,8801,48.2,9110,8802,-105.3,9110,8805,1.00012,9201,8806,656167.979,9002,8807,328083.9895,9002,,,,,,,,,,,,, +7124,"NAD83(2011) / RMTCRS Fort Peck Sioux (ft)",9002,6318,7100,9801,1,0,4495,8801,48.2,9110,8802,-105.3,9110,8805,1.00009,9201,8806,328083.9895,9002,8807,164041.9938,9002,,,,,,,,,,,,, +7125,"NAD83(2011) / RMTCRS Crow (ft)",9002,6318,7102,9807,1,0,4495,8801,44.45,9110,8802,-107.45,9110,8805,1.000148,9201,8806,656167.979,9002,8807,0,9002,,,,,,,,,,,,, +7126,"NAD83(2011) / RMTCRS Bobcat (ft)",9002,6318,7104,9801,1,0,4495,8801,46.15,9110,8802,-111.15,9110,8805,1.000185,9201,8806,328083.9895,9002,8807,328083.9895,9002,,,,,,,,,,,,, +7127,"NAD83(2011) / RMTCRS Billings (ft)",9002,6318,7106,9801,1,0,4495,8801,45.47,9110,8802,-108.25,9110,8805,1.0001515,9201,8806,656167.979,9002,8807,164041.9948,9002,,,,,,,,,,,,, +7128,"NAD83(2011) / RMTCRS Wind River (ftUS)",9003,6318,7108,9807,1,0,4497,8801,42.4,9110,8802,-108.2,9110,8805,1.00024,9201,8806,328083.3333,9003,8807,0,9003,,,,,,,,,,,,, +7131,"NAD83(2011) / San Francisco CS13",9001,6318,7129,9807,1,0,4499,8801,37.75,9102,8802,-122.45,9102,8805,1.000007,9201,8806,48000,9001,8807,24000,9001,,,,,,,,,,,,, +7132,"NAD83(2011) / San Francisco CS13 (ftUS)",9003,6318,7130,9807,1,0,4497,8801,37.75,9102,8802,-122.45,9102,8805,1.000007,9201,8806,157480,9003,8807,78740,9003,,,,,,,,,,,,, +7142,"Palestine 1923 / Palestine Grid modified",9001,4281,7141,9807,1,0,4400,8801,31.4402749,9110,8802,35.124349,9110,8805,1,9201,8806,170251.555,9001,8807,126867.909,9001,,,,,,,,,,,,, +7257,"NAD83(2011) / InGCS Adams (m)",9001,6318,7143,9807,1,0,4499,8801,40.33,9110,8802,-84.57,9110,8805,1.000034,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7258,"NAD83(2011) / InGCS Adams (ftUS)",9003,6318,7144,9807,1,0,4497,8801,40.33,9110,8802,-84.57,9110,8805,1.000034,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7259,"NAD83(2011) / InGCS Allen (m)",9001,6318,7145,9807,1,0,4499,8801,40.54,9110,8802,-85.03,9110,8805,1.000031,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7260,"NAD83(2011) / InGCS Allen (ftUS)",9003,6318,7146,9807,1,0,4497,8801,40.54,9110,8802,-85.03,9110,8805,1.000031,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7261,"NAD83(2011) / InGCS Bartholomew (m)",9001,6318,7147,9807,1,0,4499,8801,39,9110,8802,-85.51,9110,8805,1.000026,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7262,"NAD83(2011) / InGCS Bartholomew (ftUS)",9003,6318,7148,9807,1,0,4497,8801,39,9110,8802,-85.51,9110,8805,1.000026,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7263,"NAD83(2011) / InGCS Benton (m)",9001,6318,7149,9807,1,0,4499,8801,40.27,9110,8802,-87.18,9110,8805,1.000029,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7264,"NAD83(2011) / InGCS Benton (ftUS)",9003,6318,7150,9807,1,0,4497,8801,40.27,9110,8802,-87.18,9110,8805,1.000029,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7265,"NAD83(2011) / InGCS Blackford-Delaware (m)",9001,6318,7151,9807,1,0,4499,8801,40.03,9110,8802,-85.24,9110,8805,1.000038,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7266,"NAD83(2011) / InGCS Blackford-Delaware (ftUS)",9003,6318,7152,9807,1,0,4497,8801,40.03,9110,8802,-85.24,9110,8805,1.000038,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7267,"NAD83(2011) / InGCS Boone-Hendricks (m)",9001,6318,7153,9807,1,0,4499,8801,39.36,9110,8802,-86.3,9110,8805,1.000036,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7268,"NAD83(2011) / InGCS Boone-Hendricks (ftUS)",9003,6318,7154,9807,1,0,4497,8801,39.36,9110,8802,-86.3,9110,8805,1.000036,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7269,"NAD83(2011) / InGCS Brown (m)",9001,6318,7155,9807,1,0,4499,8801,39,9110,8802,-86.18,9110,8805,1.00003,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7270,"NAD83(2011) / InGCS Brown (ftUS)",9003,6318,7156,9807,1,0,4497,8801,39,9110,8802,-86.18,9110,8805,1.00003,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7271,"NAD83(2011) / InGCS Carroll (m)",9001,6318,7157,9807,1,0,4499,8801,40.24,9110,8802,-86.39,9110,8805,1.000026,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7272,"NAD83(2011) / InGCS Carroll (ftUS)",9003,6318,7158,9807,1,0,4497,8801,40.24,9110,8802,-86.39,9110,8805,1.000026,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7273,"NAD83(2011) / InGCS Cass (m)",9001,6318,7159,9807,1,0,4499,8801,40.33,9110,8802,-86.24,9110,8805,1.000028,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7274,"NAD83(2011) / InGCS Cass (ftUS)",9003,6318,7160,9807,1,0,4497,8801,40.33,9110,8802,-86.24,9110,8805,1.000028,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7275,"NAD83(2011) / InGCS Clark-Floyd-Scott (m)",9001,6318,7161,9807,1,0,4499,8801,38.09,9110,8802,-85.36,9110,8805,1.000021,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7276,"NAD83(2011) / InGCS Clark-Floyd-Scott (ftUS)",9003,6318,7162,9807,1,0,4497,8801,38.09,9110,8802,-85.36,9110,8805,1.000021,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7277,"NAD83(2011) / InGCS Clay (m)",9001,6318,7163,9807,1,0,4499,8801,39.09,9110,8802,-87.09,9110,8805,1.000024,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7278,"NAD83(2011) / InGCS Clay (ftUS)",9003,6318,7164,9807,1,0,4497,8801,39.09,9110,8802,-87.09,9110,8805,1.000024,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7279,"NAD83(2011) / InGCS Clinton (m)",9001,6318,7165,9807,1,0,4499,8801,40.09,9110,8802,-86.36,9110,8805,1.000032,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7280,"NAD83(2011) / InGCS Clinton (ftUS)",9003,6318,7166,9807,1,0,4497,8801,40.09,9110,8802,-86.36,9110,8805,1.000032,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7281,"NAD83(2011) / InGCS Crawford-Lawrence-Orange (m)",9001,6318,7167,9807,1,0,4499,8801,38.06,9110,8802,-86.3,9110,8805,1.000025,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7282,"NAD83(2011) / InGCS Crawford-Lawrence-Orange (ftUS)",9003,6318,7168,9807,1,0,4497,8801,38.06,9110,8802,-86.3,9110,8805,1.000025,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7283,"NAD83(2011) / InGCS Daviess-Greene (m)",9001,6318,7169,9807,1,0,4499,8801,38.27,9110,8802,-87.06,9110,8805,1.000018,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7284,"NAD83(2011) / InGCS Daviess-Greene (ftUS)",9003,6318,7170,9807,1,0,4497,8801,38.27,9110,8802,-87.06,9110,8805,1.000018,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7285,"NAD83(2011) / InGCS Dearborn-Ohio-Switzerland (m)",9001,6318,7171,9807,1,0,4499,8801,38.39,9110,8802,-84.54,9110,8805,1.000029,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7286,"NAD83(2011) / InGCS Dearborn-Ohio-Switzerland (ftUS)",9003,6318,7172,9807,1,0,4497,8801,38.39,9110,8802,-84.54,9110,8805,1.000029,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7287,"NAD83(2011) / InGCS Decatur-Rush (m)",9001,6318,7173,9807,1,0,4499,8801,39.06,9110,8802,-85.39,9110,8805,1.000036,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7288,"NAD83(2011) / InGCS Decatur-Rush (ftUS)",9003,6318,7174,9807,1,0,4497,8801,39.06,9110,8802,-85.39,9110,8805,1.000036,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7289,"NAD83(2011) / InGCS DeKalb (m)",9001,6318,7175,9807,1,0,4499,8801,41.15,9110,8802,-84.57,9110,8805,1.000036,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7290,"NAD83(2011) / InGCS DeKalb (ftUS)",9003,6318,7176,9807,1,0,4497,8801,41.15,9110,8802,-84.57,9110,8805,1.000036,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7291,"NAD83(2011) / InGCS Dubois-Martin (m)",9001,6318,7177,9807,1,0,4499,8801,38.12,9110,8802,-86.57,9110,8805,1.00002,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7292,"NAD83(2011) / InGCS Dubois-Martin (ftUS)",9003,6318,7178,9807,1,0,4497,8801,38.12,9110,8802,-86.57,9110,8805,1.00002,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7293,"NAD83(2011) / InGCS Elkhart-Kosciusko-Wabash (m)",9001,6318,7179,9807,1,0,4499,8801,40.39,9110,8802,-85.51,9110,8805,1.000033,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7294,"NAD83(2011) / InGCS Elkhart-Kosciusko-Wabash (ftUS)",9003,6318,7180,9807,1,0,4497,8801,40.39,9110,8802,-85.51,9110,8805,1.000033,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7295,"NAD83(2011) / InGCS Fayette-Franklin-Union (m)",9001,6318,7181,9807,1,0,4499,8801,39.15,9110,8802,-85.03,9110,8805,1.000038,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7296,"NAD83(2011) / InGCS Fayette-Franklin-Union (ftUS)",9003,6318,7182,9807,1,0,4497,8801,39.15,9110,8802,-85.03,9110,8805,1.000038,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7297,"NAD83(2011) / InGCS Fountain-Warren (m)",9001,6318,7183,9807,1,0,4499,8801,39.57,9110,8802,-87.18,9110,8805,1.000025,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7298,"NAD83(2011) / InGCS Fountain-Warren (ftUS)",9003,6318,7184,9807,1,0,4497,8801,39.57,9110,8802,-87.18,9110,8805,1.000025,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7299,"NAD83(2011) / InGCS Fulton-Marshall-St. Joseph (m)",9001,6318,7185,9807,1,0,4499,8801,40.54,9110,8802,-86.18,9110,8805,1.000031,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7300,"NAD83(2011) / InGCS Fulton-Marshall-St. Joseph (ftUS)",9003,6318,7186,9807,1,0,4497,8801,40.54,9110,8802,-86.18,9110,8805,1.000031,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7301,"NAD83(2011) / InGCS Gibson (m)",9001,6318,7187,9807,1,0,4499,8801,38.09,9110,8802,-87.39,9110,8805,1.000013,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7302,"NAD83(2011) / InGCS Gibson (ftUS)",9003,6318,7188,9807,1,0,4497,8801,38.09,9110,8802,-87.39,9110,8805,1.000013,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7303,"NAD83(2011) / InGCS Grant (m)",9001,6318,7189,9807,1,0,4499,8801,40.21,9110,8802,-85.42,9110,8805,1.000034,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7304,"NAD83(2011) / InGCS Grant (ftUS)",9003,6318,7190,9807,1,0,4497,8801,40.21,9110,8802,-85.42,9110,8805,1.000034,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7305,"NAD83(2011) / InGCS Hamilton-Tipton (m)",9001,6318,7191,9807,1,0,4499,8801,39.54,9110,8802,-86,9110,8805,1.000034,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7306,"NAD83(2011) / InGCS Hamilton-Tipton (ftUS)",9003,6318,7192,9807,1,0,4497,8801,39.54,9110,8802,-86,9110,8805,1.000034,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7307,"NAD83(2011) / InGCS Hancock-Madison (m)",9001,6318,7193,9807,1,0,4499,8801,39.39,9110,8802,-85.48,9110,8805,1.000036,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7308,"NAD83(2011) / InGCS Hancock-Madison (ftUS)",9003,6318,7194,9807,1,0,4497,8801,39.39,9110,8802,-85.48,9110,8805,1.000036,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7309,"NAD83(2011) / InGCS Harrison-Washington (m)",9001,6318,7195,9807,1,0,4499,8801,37.57,9110,8802,-86.09,9110,8805,1.000027,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7310,"NAD83(2011) / InGCS Harrison-Washington (ftUS)",9003,6318,7196,9807,1,0,4497,8801,37.57,9110,8802,-86.09,9110,8805,1.000027,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7311,"NAD83(2011) / InGCS Henry (m)",9001,6318,7197,9807,1,0,4499,8801,39.45,9110,8802,-85.27,9110,8805,1.000043,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7312,"NAD83(2011) / InGCS Henry (ftUS)",9003,6318,7198,9807,1,0,4497,8801,39.45,9110,8802,-85.27,9110,8805,1.000043,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7313,"NAD83(2011) / InGCS Howard-Miami (m)",9001,6318,7199,9807,1,0,4499,8801,40.21,9110,8802,-86.09,9110,8805,1.000031,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7314,"NAD83(2011) / InGCS Howard-Miami (ftUS)",9003,6318,7200,9807,1,0,4497,8801,40.21,9110,8802,-86.09,9110,8805,1.000031,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7315,"NAD83(2011) / InGCS Huntington-Whitley (m)",9001,6318,7201,9807,1,0,4499,8801,40.39,9110,8802,-85.3,9110,8805,1.000034,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7316,"NAD83(2011) / InGCS Huntington-Whitley (ftUS)",9003,6318,7202,9807,1,0,4497,8801,40.39,9110,8802,-85.3,9110,8805,1.000034,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7317,"NAD83(2011) / InGCS Jackson (m)",9001,6318,7203,9807,1,0,4499,8801,38.42,9110,8802,-85.57,9110,8805,1.000022,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7318,"NAD83(2011) / InGCS Jackson (ftUS)",9003,6318,7204,9807,1,0,4497,8801,38.42,9110,8802,-85.57,9110,8805,1.000022,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7319,"NAD83(2011) / InGCS Jasper-Porter (m)",9001,6318,7205,9807,1,0,4499,8801,40.42,9110,8802,-87.06,9110,8805,1.000027,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7320,"NAD83(2011) / InGCS Jasper-Porter (ftUS)",9003,6318,7206,9807,1,0,4497,8801,40.42,9110,8802,-87.06,9110,8805,1.000027,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7321,"NAD83(2011) / InGCS Jay (m)",9001,6318,7207,9807,1,0,4499,8801,40.18,9110,8802,-85,9110,8805,1.000038,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7322,"NAD83(2011) / InGCS Jay (ftUS)",9003,6318,7208,9807,1,0,4497,8801,40.18,9110,8802,-85,9110,8805,1.000038,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7323,"NAD83(2011) / InGCS Jefferson (m)",9001,6318,7209,9807,1,0,4499,8801,38.33,9110,8802,-85.21,9110,8805,1.000028,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7324,"NAD83(2011) / InGCS Jefferson (ftUS)",9003,6318,7210,9807,1,0,4497,8801,38.33,9110,8802,-85.21,9110,8805,1.000028,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7325,"NAD83(2011) / InGCS Jennings (m)",9001,6318,7211,9807,1,0,4499,8801,38.48,9110,8802,-85.48,9110,8805,1.000025,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7326,"NAD83(2011) / InGCS Jennings (ftUS)",9003,6318,7212,9807,1,0,4497,8801,38.48,9110,8802,-85.48,9110,8805,1.000025,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7327,"NAD83(2011) / InGCS Johnson-Marion (m)",9001,6318,7213,9807,1,0,4499,8801,39.18,9110,8802,-86.09,9110,8805,1.000031,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7328,"NAD83(2011) / InGCS Johnson-Marion (ftUS)",9003,6318,7214,9807,1,0,4497,8801,39.18,9110,8802,-86.09,9110,8805,1.000031,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7329,"NAD83(2011) / InGCS Knox (m)",9001,6318,7215,9807,1,0,4499,8801,38.24,9110,8802,-87.27,9110,8805,1.000015,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7330,"NAD83(2011) / InGCS Knox (ftUS)",9003,6318,7216,9807,1,0,4497,8801,38.24,9110,8802,-87.27,9110,8805,1.000015,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7331,"NAD83(2011) / InGCS LaGrange-Noble (m)",9001,6318,7217,9807,1,0,4499,8801,41.15,9110,8802,-85.27,9110,8805,1.000037,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7332,"NAD83(2011) / InGCS LaGrange-Noble (ftUS)",9003,6318,7218,9807,1,0,4497,8801,41.15,9110,8802,-85.27,9110,8805,1.000037,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7333,"NAD83(2011) / InGCS Lake-Newton (m)",9001,6318,7219,9807,1,0,4499,8801,40.42,9110,8802,-87.24,9110,8805,1.000026,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7334,"NAD83(2011) / InGCS Lake-Newton (ftUS)",9003,6318,7220,9807,1,0,4497,8801,40.42,9110,8802,-87.24,9110,8805,1.000026,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7335,"NAD83(2011) / InGCS LaPorte-Pulaski-Starke (m)",9001,6318,7221,9807,1,0,4499,8801,40.54,9110,8802,-86.45,9110,8805,1.000027,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7336,"NAD83(2011) / InGCS LaPorte-Pulaski-Starke (ftUS)",9003,6318,7222,9807,1,0,4497,8801,40.54,9110,8802,-86.45,9110,8805,1.000027,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7337,"NAD83(2011) / InGCS Monroe-Morgan (m)",9001,6318,7223,9807,1,0,4499,8801,38.57,9110,8802,-86.3,9110,8805,1.000028,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7338,"NAD83(2011) / InGCS Monroe-Morgan (ftUS)",9003,6318,7224,9807,1,0,4497,8801,38.57,9110,8802,-86.3,9110,8805,1.000028,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7339,"NAD83(2011) / InGCS Montgomery-Putnam (m)",9001,6318,7225,9807,1,0,4499,8801,39.27,9110,8802,-86.57,9110,8805,1.000031,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7340,"NAD83(2011) / InGCS Montgomery-Putnam (ftUS)",9003,6318,7226,9807,1,0,4497,8801,39.27,9110,8802,-86.57,9110,8805,1.000031,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7341,"NAD83(2011) / InGCS Owen (m)",9001,6318,7227,9807,1,0,4499,8801,39.09,9110,8802,-86.54,9110,8805,1.000026,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7342,"NAD83(2011) / InGCS Owen (ftUS)",9003,6318,7228,9807,1,0,4497,8801,39.09,9110,8802,-86.54,9110,8805,1.000026,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7343,"NAD83(2011) / InGCS Parke-Vermillion (m)",9001,6318,7229,9807,1,0,4499,8801,39.36,9110,8802,-87.21,9110,8805,1.000022,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7344,"NAD83(2011) / InGCS Parke-Vermillion (ftUS)",9003,6318,7230,9807,1,0,4497,8801,39.36,9110,8802,-87.21,9110,8805,1.000022,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7345,"NAD83(2011) / InGCS Perry (m)",9001,6318,7231,9807,1,0,4499,8801,37.48,9110,8802,-86.42,9110,8805,1.00002,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7346,"NAD83(2011) / InGCS Perry (ftUS)",9003,6318,7232,9807,1,0,4497,8801,37.48,9110,8802,-86.42,9110,8805,1.00002,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7347,"NAD83(2011) / InGCS Pike-Warrick (m)",9001,6318,7233,9807,1,0,4499,8801,37.51,9110,8802,-87.18,9110,8805,1.000015,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7348,"NAD83(2011) / InGCS Pike-Warrick (ftUS)",9003,6318,7234,9807,1,0,4497,8801,37.51,9110,8802,-87.18,9110,8805,1.000015,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7349,"NAD83(2011) / InGCS Posey (m)",9001,6318,7235,9807,1,0,4499,8801,37.45,9110,8802,-87.57,9110,8805,1.000013,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7350,"NAD83(2011) / InGCS Posey (ftUS)",9003,6318,7236,9807,1,0,4497,8801,37.45,9110,8802,-87.57,9110,8805,1.000013,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7351,"NAD83(2011) / InGCS Randolph-Wayne (m)",9001,6318,7237,9807,1,0,4499,8801,39.42,9110,8802,-85.03,9110,8805,1.000044,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7352,"NAD83(2011) / InGCS Randolph-Wayne (ftUS)",9003,6318,7238,9807,1,0,4497,8801,39.42,9110,8802,-85.03,9110,8805,1.000044,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7353,"NAD83(2011) / InGCS Ripley (m)",9001,6318,7239,9807,1,0,4499,8801,38.54,9110,8802,-85.18,9110,8805,1.000038,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7354,"NAD83(2011) / InGCS Ripley (ftUS)",9003,6318,7240,9807,1,0,4497,8801,38.54,9110,8802,-85.18,9110,8805,1.000038,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7355,"NAD83(2011) / InGCS Shelby (m)",9001,6318,7241,9807,1,0,4499,8801,39.18,9110,8802,-85.54,9110,8805,1.00003,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7356,"NAD83(2011) / InGCS Shelby (ftUS)",9003,6318,7242,9807,1,0,4497,8801,39.18,9110,8802,-85.54,9110,8805,1.00003,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7357,"NAD83(2011) / InGCS Spencer (m)",9001,6318,7243,9807,1,0,4499,8801,37.45,9110,8802,-87.03,9110,8805,1.000014,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7358,"NAD83(2011) / InGCS Spencer (ftUS)",9003,6318,7244,9807,1,0,4497,8801,37.45,9110,8802,-87.03,9110,8805,1.000014,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7359,"NAD83(2011) / InGCS Steuben (m)",9001,6318,7245,9807,1,0,4499,8801,41.3,9110,8802,-85,9110,8805,1.000041,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7360,"NAD83(2011) / InGCS Steuben (ftUS)",9003,6318,7246,9807,1,0,4497,8801,41.3,9110,8802,-85,9110,8805,1.000041,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7361,"NAD83(2011) / InGCS Sullivan (m)",9001,6318,7247,9807,1,0,4499,8801,38.54,9110,8802,-87.3,9110,8805,1.000017,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7362,"NAD83(2011) / InGCS Sullivan (ftUS)",9003,6318,7248,9807,1,0,4497,8801,38.54,9110,8802,-87.3,9110,8805,1.000017,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7363,"NAD83(2011) / InGCS Tippecanoe-White (m)",9001,6318,7249,9807,1,0,4499,8801,40.12,9110,8802,-86.54,9110,8805,1.000026,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7364,"NAD83(2011) / InGCS Tippecanoe-White (ftUS)",9003,6318,7250,9807,1,0,4497,8801,40.12,9110,8802,-86.54,9110,8805,1.000026,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7365,"NAD83(2011) / InGCS Vanderburgh (m)",9001,6318,7251,9807,1,0,4499,8801,37.48,9110,8802,-87.33,9110,8805,1.000015,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7366,"NAD83(2011) / InGCS Vanderburgh (ftUS)",9003,6318,7252,9807,1,0,4497,8801,37.48,9110,8802,-87.33,9110,8805,1.000015,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7367,"NAD83(2011) / InGCS Vigo (m)",9001,6318,7253,9807,1,0,4499,8801,39.15,9110,8802,-87.27,9110,8805,1.00002,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7368,"NAD83(2011) / InGCS Vigo (ftUS)",9003,6318,7254,9807,1,0,4497,8801,39.15,9110,8802,-87.27,9110,8805,1.00002,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7369,"NAD83(2011) / InGCS Wells (m)",9001,6318,7255,9807,1,0,4499,8801,40.33,9110,8802,-85.15,9110,8805,1.000034,9201,8806,240000,9001,8807,36000,9001,,,,,,,,,,,,, +7370,"NAD83(2011) / InGCS Wells (ftUS)",9003,6318,7256,9807,1,0,4497,8801,40.33,9110,8802,-85.15,9110,8805,1.000034,9201,8806,787400,9003,8807,118110,9003,,,,,,,,,,,,, +7374,"ONGD14 / UTM zone 39N",9001,7373,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7375,"ONGD14 / UTM zone 40N",9001,7373,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7376,"ONGD14 / UTM zone 41N",9001,7373,16041,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7528,"NAD83(2011) / WISCRS Adams and Juneau (m)",9001,6318,7484,9807,1,0,4499,8801,43.22,9110,8802,-90,9110,8805,1.0000365285,9201,8806,147218.6942,9001,8807,0.0037,9001,,,,,,,,,,,,, +7529,"NAD83(2011) / WISCRS Ashland (m)",9001,6318,7378,9807,1,0,4499,8801,45.4222,9110,8802,-90.372,9110,8805,1.0000495683,9201,8806,172821.9461,9001,8807,0.0017,9001,,,,,,,,,,,,, +7530,"NAD83(2011) / WISCRS Barron (m)",9001,6318,7426,9807,1,0,4499,8801,45.08,9110,8802,-91.51,9110,8805,1.0000486665,9201,8806,93150,9001,8807,0.0029,9001,,,,,,,,,,,,, +7531,"NAD83(2011) / WISCRS Bayfield (m)",9001,6318,7380,9801,1,0,4499,8801,46.4010734158,9110,8802,-91.091,9110,8805,1.0000331195,9201,8806,228600.4575,9001,8807,148551.4837,9001,,,,,,,,,,,,, +7532,"NAD83(2011) / WISCRS Brown (m)",9001,6318,7428,9807,1,0,4499,8801,43,9102,8802,-88,9102,8805,1.00002,9201,8806,31600,9001,8807,4600,9001,,,,,,,,,,,,, +7533,"NAD83(2011) / WISCRS Buffalo (m)",9001,6318,7430,9807,1,0,4499,8801,43.2853,9110,8802,-91.475,9110,8805,1.0000382778,9201,8806,175260.3502,9001,8807,0.0048,9001,,,,,,,,,,,,, +7534,"NAD83(2011) / WISCRS Burnett (m)",9001,6318,7382,9801,1,0,4499,8801,45.5355373517,9110,8802,-92.2728,9110,8805,1.0000383841,9201,8806,64008.1276,9001,8807,59445.9043,9001,,,,,,,,,,,,, +7535,"NAD83(2011) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (m)",9001,6318,7486,9807,1,0,4499,8801,42.431,9110,8802,-88.3,9110,8805,1.0000286569,9201,8806,244754.8893,9001,8807,0.0049,9001,,,,,,,,,,,,, +7536,"NAD83(2011) / WISCRS Chippewa (m)",9001,6318,7432,9801,1,0,4499,8801,44.5840284835,9110,8802,-91.174,9110,8805,1.0000391127,9201,8806,60045.72,9001,8807,44091.4346,9001,,,,,,,,,,,,, +7537,"NAD83(2011) / WISCRS Clark (m)",9001,6318,7434,9807,1,0,4499,8801,43.36,9110,8802,-90.423,9110,8805,1.0000463003,9201,8806,199949.1989,9001,8807,0.0086,9001,,,,,,,,,,,,, +7538,"NAD83(2011) / WISCRS Columbia (m)",9001,6318,7488,9801,1,0,4499,8801,43.2745167925,9110,8802,-89.234,9110,8805,1.00003498,9201,8806,169164.3381,9001,8807,111569.6134,9001,,,,,,,,,,,,, +7539,"NAD83(2011) / WISCRS Crawford (m)",9001,6318,7490,9801,1,0,4499,8801,43.1200200178,9110,8802,-90.562,9110,8805,1.0000349151,9201,8806,113690.6274,9001,8807,53703.1201,9001,,,,,,,,,,,,, +7540,"NAD83(2011) / WISCRS Dane (m)",9001,6318,7492,9801,1,0,4499,8801,43.0410257735,9110,8802,-89.252,9110,8805,1.0000384786,9201,8806,247193.2944,9001,8807,146591.9896,9001,,,,,,,,,,,,, +7541,"NAD83(2011) / WISCRS Dodge and Jefferson (m)",9001,6318,7494,9807,1,0,4499,8801,41.282,9110,8802,-88.463,9110,8805,1.0000346418,9201,8806,263347.7263,9001,8807,0.0076,9001,,,,,,,,,,,,, +7542,"NAD83(2011) / WISCRS Door (m)",9001,6318,7436,9807,1,0,4499,8801,44.24,9110,8802,-87.162,9110,8805,1.0000187521,9201,8806,158801.1176,9001,8807,0.0023,9001,,,,,,,,,,,,, +7543,"NAD83(2011) / WISCRS Douglas (m)",9001,6318,7384,9807,1,0,4499,8801,45.53,9110,8802,-91.55,9110,8805,1.0000385418,9201,8806,59131.3183,9001,8807,0.0041,9001,,,,,,,,,,,,, +7544,"NAD83(2011) / WISCRS Dunn (m)",9001,6318,7438,9807,1,0,4499,8801,44.243,9110,8802,-91.534,9110,8805,1.0000410324,9201,8806,51816.104,9001,8807,0.003,9001,,,,,,,,,,,,, +7545,"NAD83(2011) / WISCRS Eau Claire (m)",9001,6318,7440,9801,1,0,4499,8801,44.5220212055,9110,8802,-91.172,9110,8805,1.000035079,9201,8806,120091.4402,9001,8807,91687.9239,9001,,,,,,,,,,,,, +7546,"NAD83(2011) / WISCRS Florence (m)",9001,6318,7386,9807,1,0,4499,8801,45.262,9110,8802,-88.083,9110,8805,1.0000552095,9201,8806,133502.6683,9001,8807,0.0063,9001,,,,,,,,,,,,, +7547,"NAD83(2011) / WISCRS Forest (m)",9001,6318,7388,9807,1,0,4499,8801,44.002,9110,8802,-88.38,9110,8805,1.0000673004,9201,8806,275844.5533,9001,8807,0.0157,9001,,,,,,,,,,,,, +7548,"NAD83(2011) / WISCRS Grant (m)",9001,6318,7496,9807,1,0,4499,8801,41.244,9110,8802,-90.48,9110,8805,1.0000349452,9201,8806,242316.4841,9001,8807,0.01,9001,,,,,,,,,,,,, +7549,"NAD83(2011) / WISCRS Green and Lafayette (m)",9001,6318,7498,9801,1,0,4499,8801,42.3815224197,9110,8802,-89.502,9110,8805,1.0000390487,9201,8806,170078.7403,9001,8807,45830.2947,9001,,,,,,,,,,,,, +7550,"NAD83(2011) / WISCRS Green Lake and Marquette (m)",9001,6318,7500,9801,1,0,4499,8801,43.4825200424,9110,8802,-89.143,9110,8805,1.0000344057,9201,8806,150876.3018,9001,8807,79170.7795,9001,,,,,,,,,,,,, +7551,"NAD83(2011) / WISCRS Iowa (m)",9001,6318,7502,9807,1,0,4499,8801,42.322,9110,8802,-90.094,9110,8805,1.0000394961,9201,8806,113081.0261,9001,8807,0.0045,9001,,,,,,,,,,,,, +7552,"NAD83(2011) / WISCRS Iron (m)",9001,6318,7390,9807,1,0,4499,8801,45.26,9110,8802,-90.152,9110,8805,1.0000677153,9201,8806,220980.4419,9001,8807,0.0085,9001,,,,,,,,,,,,, +7553,"NAD83(2011) / WISCRS Jackson (m)",9001,6318,7450,9807,1,0,4499,8801,44.151200646,9110,8802,-90.503946747,9110,8805,1.0000353,9201,8806,27000,9001,8807,25000,9001,,,,,,,,,,,,, +7554,"NAD83(2011) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (m)",9001,6318,7504,9807,1,0,4499,8801,42.13,9110,8802,-87.534,9110,8805,1.0000260649,9201,8806,185928.3728,9001,8807,0.0009,9001,,,,,,,,,,,,, +7555,"NAD83(2011) / WISCRS Kewaunee, Manitowoc and Sheboygan (m)",9001,6318,7506,9807,1,0,4499,8801,43.16,9110,8802,-87.33,9110,8805,1.0000233704,9201,8806,79857.7614,9001,8807,0.0012,9001,,,,,,,,,,,,, +7556,"NAD83(2011) / WISCRS La Crosse (m)",9001,6318,7508,9807,1,0,4499,8801,43.2704,9110,8802,-91.19,9110,8805,1.0000319985,9201,8806,130454.6598,9001,8807,0.0033,9001,,,,,,,,,,,,, +7557,"NAD83(2011) / WISCRS Langlade (m)",9001,6318,7452,9801,1,0,4499,8801,45.0915253579,9110,8802,-89.02,9110,8805,1.0000627024,9201,8806,198425.197,9001,8807,105279.7829,9001,,,,,,,,,,,,, +7558,"NAD83(2011) / WISCRS Lincoln (m)",9001,6318,7454,9807,1,0,4499,8801,44.504,9110,8802,-89.44,9110,8805,1.0000599003,9201,8806,116129.0323,9001,8807,0.0058,9001,,,,,,,,,,,,, +7559,"NAD83(2011) / WISCRS Marathon (m)",9001,6318,7456,9801,1,0,4499,8801,44.5403255925,9110,8802,-89.4612,9110,8805,1.000053289,9201,8806,74676.1493,9001,8807,55049.2669,9001,,,,,,,,,,,,, +7560,"NAD83(2011) / WISCRS Marinette (m)",9001,6318,7458,9807,1,0,4499,8801,44.413,9110,8802,-87.424,9110,8805,1.0000234982,9201,8806,238658.8794,9001,8807,0.0032,9001,,,,,,,,,,,,, +7561,"NAD83(2011) / WISCRS Menominee (m)",9001,6318,7460,9807,1,0,4499,8801,44.43,9110,8802,-88.25,9110,8805,1.0000362499,9201,8806,105461.0121,9001,8807,0.0029,9001,,,,,,,,,,,,, +7562,"NAD83(2011) / WISCRS Monroe (m)",9001,6318,7510,9801,1,0,4499,8801,44.0000266143,9110,8802,-90.383,9110,8805,1.0000434122,9201,8806,204521.209,9001,8807,121923.9861,9001,,,,,,,,,,,,, +7563,"NAD83(2011) / WISCRS Oconto (m)",9001,6318,7462,9807,1,0,4499,8801,44.235,9110,8802,-87.543,9110,8805,1.0000236869,9201,8806,182880.3676,9001,8807,0.0033,9001,,,,,,,,,,,,, +7564,"NAD83(2011) / WISCRS Oneida (m)",9001,6318,7392,9801,1,0,4499,8801,45.4215205573,9110,8802,-89.324,9110,8805,1.0000686968,9201,8806,70104.1401,9001,8807,57588.0346,9001,,,,,,,,,,,,, +7565,"NAD83(2011) / WISCRS Pepin and Pierce (m)",9001,6318,7464,9801,1,0,4499,8801,44.3810135939,9110,8802,-92.134,9110,8805,1.0000362977,9201,8806,167640.3354,9001,8807,86033.0876,9001,,,,,,,,,,,,, +7566,"NAD83(2011) / WISCRS Polk (m)",9001,6318,7466,9807,1,0,4499,8801,44.394,9110,8802,-92.38,9110,8805,1.0000433849,9201,8806,141732.2823,9001,8807,0.0059,9001,,,,,,,,,,,,, +7567,"NAD83(2011) / WISCRS Portage (m)",9001,6318,7468,9801,1,0,4499,8801,44.2500566311,9110,8802,-89.3,9110,8805,1.000039936,9201,8806,56388.1128,9001,8807,50022.1874,9001,,,,,,,,,,,,, +7568,"NAD83(2011) / WISCRS Price (m)",9001,6318,7394,9807,1,0,4499,8801,44.332,9110,8802,-90.292,9110,8805,1.0000649554,9201,8806,227990.8546,9001,8807,0.0109,9001,,,,,,,,,,,,, +7569,"NAD83(2011) / WISCRS Richland (m)",9001,6318,7512,9801,1,0,4499,8801,43.1920326539,9110,8802,-90.255,9110,8805,1.0000375653,9201,8806,202387.6048,9001,8807,134255.4253,9001,,,,,,,,,,,,, +7570,"NAD83(2011) / WISCRS Rock (m)",9001,6318,7514,9807,1,0,4499,8801,41.564,9110,8802,-89.042,9110,8805,1.0000337311,9201,8806,146304.2926,9001,8807,0.0068,9001,,,,,,,,,,,,, +7571,"NAD83(2011) / WISCRS Rusk (m)",9001,6318,7470,9807,1,0,4499,8801,43.551,9110,8802,-91.04,9110,8805,1.0000495976,9201,8806,250546.1013,9001,8807,0.0234,9001,,,,,,,,,,,,, +7572,"NAD83(2011) / WISCRS Sauk (m)",9001,6318,7516,9807,1,0,4499,8801,42.491,9110,8802,-89.54,9110,8805,1.0000373868,9201,8806,185623.5716,9001,8807,0.0051,9001,,,,,,,,,,,,, +7573,"NAD83(2011) / WISCRS Sawyer (m)",9001,6318,7396,9801,1,0,4499,8801,45.5400356873,9110,8802,-91.07,9110,8805,1.0000573461,9201,8806,216713.2336,9001,8807,120734.1631,9001,,,,,,,,,,,,, +7574,"NAD83(2011) / WISCRS Shawano (m)",9001,6318,7472,9807,1,0,4499,8801,44.021,9110,8802,-88.362,9110,8805,1.000032144,9201,8806,262433.3253,9001,8807,0.0096,9001,,,,,,,,,,,,, +7575,"NAD83(2011) / WISCRS St. Croix (m)",9001,6318,7474,9807,1,0,4499,8801,44.021,9110,8802,-92.38,9110,8805,1.0000381803,9201,8806,165506.7302,9001,8807,0.0103,9001,,,,,,,,,,,,, +7576,"NAD83(2011) / WISCRS Taylor (m)",9001,6318,7476,9801,1,0,4499,8801,45.1040159509,9110,8802,-90.29,9110,8805,1.0000597566,9201,8806,187147.5744,9001,8807,107746.7522,9001,,,,,,,,,,,,, +7577,"NAD83(2011) / WISCRS Trempealeau (m)",9001,6318,7478,9807,1,0,4499,8801,43.094,9110,8802,-91.22,9110,8805,1.0000361538,9201,8806,256946.9138,9001,8807,0.0041,9001,,,,,,,,,,,,, +7578,"NAD83(2011) / WISCRS Vernon (m)",9001,6318,7518,9801,1,0,4499,8801,43.3430118583,9110,8802,-90.47,9110,8805,1.0000408158,9201,8806,222504.4451,9001,8807,47532.0602,9001,,,,,,,,,,,,, +7579,"NAD83(2011) / WISCRS Vilas (m)",9001,6318,7398,9801,1,0,4499,8801,46.0440238726,9110,8802,-89.292,9110,8805,1.0000730142,9201,8806,134417.0689,9001,8807,50337.1092,9001,,,,,,,,,,,,, +7580,"NAD83(2011) / WISCRS Walworth (m)",9001,6318,7520,9801,1,0,4499,8801,42.4010063549,9110,8802,-88.323,9110,8805,1.0000367192,9201,8806,232562.8651,9001,8807,111088.2224,9001,,,,,,,,,,,,, +7581,"NAD83(2011) / WISCRS Washburn (m)",9001,6318,7424,9801,1,0,4499,8801,45.57403914,9110,8802,-91.47,9110,8805,1.0000475376,9201,8806,234086.8682,9001,8807,188358.6058,9001,,,,,,,,,,,,, +7582,"NAD83(2011) / WISCRS Washington (m)",9001,6318,7522,9807,1,0,4499,8801,42.5505,9110,8802,-88.035,9110,8805,1.00003738,9201,8806,120091.4415,9001,8807,0.003,9001,,,,,,,,,,,,, +7583,"NAD83(2011) / WISCRS Waukesha (m)",9001,6318,7524,9807,1,0,4499,8801,42.341,9110,8802,-88.133,9110,8805,1.0000346179,9201,8806,208788.418,9001,8807,0.0034,9001,,,,,,,,,,,,, +7584,"NAD83(2011) / WISCRS Waupaca (m)",9001,6318,7480,9807,1,0,4499,8801,43.2513,9110,8802,-88.49,9110,8805,1.0000333645,9201,8806,185013.9709,9001,8807,0.007,9001,,,,,,,,,,,,, +7585,"NAD83(2011) / WISCRS Waushara (m)",9001,6318,7526,9801,1,0,4499,8801,44.0650198565,9110,8802,-89.143,9110,8805,1.0000392096,9201,8806,120091.4402,9001,8807,45069.7587,9001,,,,,,,,,,,,, +7586,"NAD83(2011) / WISCRS Wood (m)",9001,6318,7482,9801,1,0,4499,8801,44.214534369,9110,8802,-90,9110,8805,1.0000421209,9201,8806,208483.6173,9001,8807,134589.754,9001,,,,,,,,,,,,, +7587,"NAD83(2011) / WISCRS Adams and Juneau (ftUS)",9003,6318,7485,9807,1,0,4497,8801,43.22,9110,8802,-90,9110,8805,1.0000365285,9201,8806,482999.999,9003,8807,0.012,9003,,,,,,,,,,,,, +7588,"NAD83(2011) / WISCRS Ashland (ftUS)",9003,6318,7379,9807,1,0,4497,8801,45.4222,9110,8802,-90.372,9110,8805,1.0000495683,9201,8806,567000.001,9003,8807,0.006,9003,,,,,,,,,,,,, +7589,"NAD83(2011) / WISCRS Barron (ftUS)",9003,6318,7427,9807,1,0,4497,8801,45.08,9110,8802,-91.51,9110,8805,1.0000486665,9201,8806,305609.625,9003,8807,0.01,9003,,,,,,,,,,,,, +7590,"NAD83(2011) / WISCRS Bayfield (ftUS)",9003,6318,7381,9801,1,0,4497,8801,46.4010734158,9110,8802,-91.091,9110,8805,1.0000331195,9201,8806,750000.001,9003,8807,487372.659,9003,,,,,,,,,,,,, +7591,"NAD83(2011) / WISCRS Brown (ftUS)",9003,6318,7429,9807,1,0,4497,8801,43,9110,8802,-88,9110,8805,1.00002,9201,8806,103674.333,9003,8807,15091.833,9003,,,,,,,,,,,,, +7592,"NAD83(2011) / WISCRS Buffalo (ftUS)",9003,6318,7431,9807,1,0,4497,8801,43.2853,9110,8802,-91.475,9110,8805,1.0000382778,9201,8806,574999.999,9003,8807,0.016,9003,,,,,,,,,,,,, +7593,"NAD83(2011) / WISCRS Burnett (ftUS)",9003,6318,7383,9801,1,0,4497,8801,45.5355373517,9110,8802,-92.2728,9110,8805,1.0000383841,9201,8806,209999.999,9003,8807,195032.104,9003,,,,,,,,,,,,, +7594,"NAD83(2011) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (ftUS)",9003,6318,7487,9807,1,0,4497,8801,42.431,9110,8802,-88.3,9110,8805,1.0000286569,9201,8806,802999.999,9003,8807,0.016,9003,,,,,,,,,,,,, +7595,"NAD83(2011) / WISCRS Chippewa (ftUS)",9003,6318,7433,9801,1,0,4497,8801,44.5840284835,9110,8802,-91.174,9110,8805,1.0000391127,9201,8806,197000,9003,8807,144656.648,9003,,,,,,,,,,,,, +7596,"NAD83(2011) / WISCRS Clark (ftUS)",9003,6318,7435,9807,1,0,4497,8801,43.36,9110,8802,-90.423,9110,8805,1.0000463003,9201,8806,655999.997,9003,8807,0.028,9003,,,,,,,,,,,,, +7597,"NAD83(2011) / WISCRS Columbia (ftUS)",9003,6318,7489,9801,1,0,4497,8801,43.2745167925,9110,8802,-89.234,9110,8805,1.00003498,9201,8806,554999.999,9003,8807,366041.307,9003,,,,,,,,,,,,, +7598,"NAD83(2011) / WISCRS Crawford (ftUS)",9003,6318,7491,9801,1,0,4497,8801,43.1200200178,9110,8802,-90.562,9110,8805,1.0000349151,9201,8806,373000,9003,8807,176190.987,9003,,,,,,,,,,,,, +7599,"NAD83(2011) / WISCRS Dane (ftUS)",9003,6318,7493,9801,1,0,4497,8801,43.0410257735,9110,8802,-89.252,9110,8805,1.0000384786,9201,8806,811000,9003,8807,480943.886,9003,,,,,,,,,,,,, +7600,"NAD83(2011) / WISCRS Dodge and Jefferson (ftUS)",9003,6318,7495,9807,1,0,4497,8801,41.282,9110,8802,-88.463,9110,8805,1.0000346418,9201,8806,863999.999,9003,8807,0.025,9003,,,,,,,,,,,,, +7601,"NAD83(2011) / WISCRS Door (ftUS)",9003,6318,7437,9807,1,0,4497,8801,44.24,9110,8802,-87.162,9110,8805,1.0000187521,9201,8806,521000,9003,8807,0.008,9003,,,,,,,,,,,,, +7602,"NAD83(2011) / WISCRS Douglas (ftUS)",9003,6318,7385,9807,1,0,4497,8801,45.53,9110,8802,-91.55,9110,8805,1.0000385418,9201,8806,194000,9003,8807,0.013,9003,,,,,,,,,,,,, +7603,"NAD83(2011) / WISCRS Dunn (ftUS)",9003,6318,7439,9807,1,0,4497,8801,44.243,9110,8802,-91.534,9110,8805,1.0000410324,9201,8806,170000.001,9003,8807,0.01,9003,,,,,,,,,,,,, +7604,"NAD83(2011) / WISCRS Eau Claire (ftUS)",9003,6318,7441,9801,1,0,4497,8801,44.5220212055,9110,8802,-91.172,9110,8805,1.000035079,9201,8806,394000,9003,8807,300812.797,9003,,,,,,,,,,,,, +7605,"NAD83(2011) / WISCRS Florence (ftUS)",9003,6318,7387,9807,1,0,4497,8801,45.262,9110,8802,-88.083,9110,8805,1.0000552095,9201,8806,438000.004,9003,8807,0.021,9003,,,,,,,,,,,,, +7606,"NAD83(2011) / WISCRS Forest (ftUS)",9003,6318,7389,9807,1,0,4497,8801,44.002,9110,8802,-88.38,9110,8805,1.0000673004,9201,8806,905000.005,9003,8807,0.052,9003,,,,,,,,,,,,, +7607,"NAD83(2011) / WISCRS Grant (ftUS)",9003,6318,7497,9807,1,0,4497,8801,41.244,9110,8802,-90.48,9110,8805,1.0000349452,9201,8806,794999.998,9003,8807,0.033,9003,,,,,,,,,,,,, +7608,"NAD83(2011) / WISCRS Green and Lafayette (ftUS)",9003,6318,7499,9801,1,0,4497,8801,42.3815224197,9110,8802,-89.502,9110,8805,1.0000390487,9201,8806,558000,9003,8807,150361.559,9003,,,,,,,,,,,,, +7609,"NAD83(2011) / WISCRS Green Lake and Marquette (ftUS)",9003,6318,7501,9801,1,0,4497,8801,43.4825200424,9110,8802,-89.143,9110,8805,1.0000344057,9201,8806,495000,9003,8807,259746.132,9003,,,,,,,,,,,,, +7610,"NAD83(2011) / WISCRS Iowa (ftUS)",9003,6318,7503,9807,1,0,4497,8801,42.322,9110,8802,-90.094,9110,8805,1.0000394961,9201,8806,371000,9003,8807,0.015,9003,,,,,,,,,,,,, +7611,"NAD83(2011) / WISCRS Iron (ftUS)",9003,6318,7391,9807,1,0,4497,8801,45.26,9110,8802,-90.152,9110,8805,1.0000677153,9201,8806,725000,9003,8807,0.028,9003,,,,,,,,,,,,, +7612,"NAD83(2011) / WISCRS Jackson (ftUS)",9003,6318,7451,9807,1,0,4497,8801,44.151200646,9110,8802,-90.503946747,9110,8805,1.0000353,9201,8806,88582.5,9003,8807,82020.833,9003,,,,,,,,,,,,, +7613,"NAD83(2011) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (ftUS)",9003,6318,7505,9807,1,0,4497,8801,42.13,9110,8802,-87.534,9110,8805,1.0000260649,9201,8806,610000.003,9003,8807,0.003,9003,,,,,,,,,,,,, +7614,"NAD83(2011) / WISCRS Kewaunee, Manitowoc and Sheboygan (ftUS)",9003,6318,7507,9807,1,0,4497,8801,43.16,9110,8802,-87.33,9110,8805,1.0000233704,9201,8806,262000.006,9003,8807,0.004,9003,,,,,,,,,,,,, +7615,"NAD83(2011) / WISCRS La Crosse (ftUS)",9003,6318,7509,9807,1,0,4497,8801,43.2704,9110,8802,-91.19,9110,8805,1.0000319985,9201,8806,427999.996,9003,8807,0.011,9003,,,,,,,,,,,,, +7616,"NAD83(2011) / WISCRS Langlade (ftUS)",9003,6318,7453,9801,1,0,4497,8801,45.0915253579,9110,8802,-89.02,9110,8805,1.0000627024,9201,8806,651000,9003,8807,345405.421,9003,,,,,,,,,,,,, +7617,"NAD83(2011) / WISCRS Lincoln (ftUS)",9003,6318,7455,9807,1,0,4497,8801,44.504,9110,8802,-89.44,9110,8805,1.0000599003,9201,8806,381000,9003,8807,0.019,9003,,,,,,,,,,,,, +7618,"NAD83(2011) / WISCRS Marathon (ftUS)",9003,6318,7457,9801,1,0,4497,8801,44.5403255925,9110,8802,-89.4612,9110,8805,1.000053289,9201,8806,245000,9003,8807,180607.47,9003,,,,,,,,,,,,, +7619,"NAD83(2011) / WISCRS Marinette (ftUS)",9003,6318,7459,9807,1,0,4497,8801,44.413,9110,8802,-87.424,9110,8805,1.0000234982,9201,8806,783000.007,9003,8807,0.01,9003,,,,,,,,,,,,, +7620,"NAD83(2011) / WISCRS Menominee (ftUS)",9003,6318,7461,9807,1,0,4497,8801,44.43,9110,8802,-88.25,9110,8805,1.0000362499,9201,8806,346000.004,9003,8807,0.01,9003,,,,,,,,,,,,, +7621,"NAD83(2011) / WISCRS Monroe (ftUS)",9003,6318,7511,9801,1,0,4497,8801,44.0000266143,9110,8802,-90.383,9110,8805,1.0000434122,9201,8806,671000,9003,8807,400012.278,9003,,,,,,,,,,,,, +7622,"NAD83(2011) / WISCRS Oconto (ftUS)",9003,6318,7463,9807,1,0,4497,8801,44.235,9110,8802,-87.543,9110,8805,1.0000236869,9201,8806,600000.006,9003,8807,0.011,9003,,,,,,,,,,,,, +7623,"NAD83(2011) / WISCRS Oneida (ftUS)",9003,6318,7393,9801,1,0,4497,8801,45.4215205573,9110,8802,-89.324,9110,8805,1.0000686968,9201,8806,230000,9003,8807,188936.744,9003,,,,,,,,,,,,, +7624,"NAD83(2011) / WISCRS Pepin and Pierce (ftUS)",9003,6318,7465,9801,1,0,4497,8801,44.3810135939,9110,8802,-92.134,9110,8805,1.0000362977,9201,8806,550000,9003,8807,282260.222,9003,,,,,,,,,,,,, +7625,"NAD83(2011) / WISCRS Polk (ftUS)",9003,6318,7467,9807,1,0,4497,8801,44.394,9110,8802,-92.38,9110,8805,1.0000433849,9201,8806,464999.996,9003,8807,0.019,9003,,,,,,,,,,,,, +7626,"NAD83(2011) / WISCRS Portage (ftUS)",9003,6318,7469,9801,1,0,4497,8801,44.2500566311,9110,8802,-89.3,9110,8805,1.000039936,9201,8806,185000,9003,8807,164114.46,9003,,,,,,,,,,,,, +7627,"NAD83(2011) / WISCRS Price (ftUS)",9003,6318,7395,9807,1,0,4497,8801,44.332,9110,8802,-90.292,9110,8805,1.0000649554,9201,8806,747999.995,9003,8807,0.036,9003,,,,,,,,,,,,, +7628,"NAD83(2011) / WISCRS Richland (ftUS)",9003,6318,7513,9801,1,0,4497,8801,43.1920326539,9110,8802,-90.255,9110,8805,1.0000375653,9201,8806,664000,9003,8807,440469.675,9003,,,,,,,,,,,,, +7629,"NAD83(2011) / WISCRS Rock (ftUS)",9003,6318,7515,9807,1,0,4497,8801,41.564,9110,8802,-89.042,9110,8805,1.0000337311,9201,8806,480000,9003,8807,0.022,9003,,,,,,,,,,,,, +7630,"NAD83(2011) / WISCRS Rusk (ftUS)",9003,6318,7471,9807,1,0,4497,8801,43.551,9110,8802,-91.04,9110,8805,1.0000495976,9201,8806,822000.001,9003,8807,0.077,9003,,,,,,,,,,,,, +7631,"NAD83(2011) / WISCRS Sauk (ftUS)",9003,6318,7517,9807,1,0,4497,8801,42.491,9110,8802,-89.54,9110,8805,1.0000373868,9201,8806,609000.001,9003,8807,0.017,9003,,,,,,,,,,,,, +7632,"NAD83(2011) / WISCRS Sawyer (ftUS)",9003,6318,7397,9801,1,0,4497,8801,45.5400356873,9110,8802,-91.07,9110,8805,1.0000573461,9201,8806,711000.001,9003,8807,396108.667,9003,,,,,,,,,,,,, +7633,"NAD83(2011) / WISCRS Shawano (ftUS)",9003,6318,7473,9807,1,0,4497,8801,44.021,9110,8802,-88.362,9110,8805,1.000032144,9201,8806,861000.001,9003,8807,0.031,9003,,,,,,,,,,,,, +7634,"NAD83(2011) / WISCRS St. Croix (ftUS)",9003,6318,7475,9807,1,0,4497,8801,44.021,9110,8802,-92.38,9110,8805,1.0000381803,9201,8806,542999.997,9003,8807,0.034,9003,,,,,,,,,,,,, +7635,"NAD83(2011) / WISCRS Taylor (ftUS)",9003,6318,7477,9801,1,0,4497,8801,45.1040159509,9110,8802,-90.29,9110,8805,1.0000597566,9201,8806,614000,9003,8807,353499.136,9003,,,,,,,,,,,,, +7636,"NAD83(2011) / WISCRS Trempealeau (ftUS)",9003,6318,7479,9807,1,0,4497,8801,43.094,9110,8802,-91.22,9110,8805,1.0000361538,9201,8806,843000,9003,8807,0.013,9003,,,,,,,,,,,,, +7637,"NAD83(2011) / WISCRS Vernon (ftUS)",9003,6318,7519,9801,1,0,4497,8801,43.3430118583,9110,8802,-90.47,9110,8805,1.0000408158,9201,8806,730000,9003,8807,155944.768,9003,,,,,,,,,,,,, +7638,"NAD83(2011) / WISCRS Vilas (ftUS)",9003,6318,7399,9801,1,0,4497,8801,46.0440238726,9110,8802,-89.292,9110,8805,1.0000730142,9201,8806,441000,9003,8807,165147.666,9003,,,,,,,,,,,,, +7639,"NAD83(2011) / WISCRS Walworth (ftUS)",9003,6318,7521,9801,1,0,4497,8801,42.4010063549,9110,8802,-88.323,9110,8805,1.0000367192,9201,8806,763000,9003,8807,364461.943,9003,,,,,,,,,,,,, +7640,"NAD83(2011) / WISCRS Washburn (ftUS)",9003,6318,7425,9801,1,0,4497,8801,45.57403914,9110,8802,-91.47,9110,8805,1.0000475376,9201,8806,768000,9003,8807,617973.193,9003,,,,,,,,,,,,, +7641,"NAD83(2011) / WISCRS Washington (ftUS)",9003,6318,7523,9807,1,0,4497,8801,42.5505,9110,8802,-88.035,9110,8805,1.00003738,9201,8806,394000.004,9003,8807,0.01,9003,,,,,,,,,,,,, +7642,"NAD83(2011) / WISCRS Waukesha (ftUS)",9003,6318,7525,9807,1,0,4497,8801,42.341,9110,8802,-88.133,9110,8805,1.0000346179,9201,8806,685000.001,9003,8807,0.011,9003,,,,,,,,,,,,, +7643,"NAD83(2011) / WISCRS Waupaca (ftUS)",9003,6318,7481,9807,1,0,4497,8801,43.2513,9110,8802,-88.49,9110,8805,1.0000333645,9201,8806,607000.003,9003,8807,0.023,9003,,,,,,,,,,,,, +7644,"NAD83(2011) / WISCRS Waushara (ftUS)",9003,6318,7527,9801,1,0,4497,8801,44.0650198565,9110,8802,-89.143,9110,8805,1.0000392096,9201,8806,394000,9003,8807,147866.367,9003,,,,,,,,,,,,, +7645,"NAD83(2011) / WISCRS Wood (ftUS)",9003,6318,7483,9801,1,0,4497,8801,44.214534369,9110,8802,-90,9110,8805,1.0000421209,9201,8806,684000.001,9003,8807,441566.551,9003,,,,,,,,,,,,, +7692,"Kyrg-06 / zone 1",9001,7686,7687,9807,1,0,4400,8801,0,9110,8802,68.31,9110,8805,1,9201,8806,1300000,9001,8807,14743.5,9001,,,,,,,,,,,,, +7693,"Kyrg-06 / zone 2",9001,7686,7688,9807,1,0,4400,8801,0,9110,8802,71.31,9110,8805,1,9201,8806,2300000,9001,8807,14743.5,9001,,,,,,,,,,,,, +7694,"Kyrg-06 / zone 3",9001,7686,7689,9807,1,0,4400,8801,0,9110,8802,74.31,9110,8805,1,9201,8806,3300000,9001,8807,14743.5,9001,,,,,,,,,,,,, +7695,"Kyrg-06 / zone 4",9001,7686,7690,9807,1,0,4400,8801,0,9110,8802,77.31,9110,8805,1,9201,8806,4300000,9001,8807,14743.5,9001,,,,,,,,,,,,, +7696,"Kyrg-06 / zone 5",9001,7686,7691,9807,1,0,4400,8801,0,9110,8802,80.31,9110,8805,1,9201,8806,5300000,9001,8807,14743.5,9001,,,,,,,,,,,,, +7755,"WGS 84 / India NSF LCC",9001,4326,7722,9802,1,0,4499,8821,24,9102,8822,80,9102,8823,12.2822638,9110,8824,35.1022096,9110,8826,4000000,9001,8827,4000000,9001,,,,,,,,,, +7756,"WGS 84 / Andhra Pradesh",9001,4326,7723,9802,1,0,4499,8821,16.25543298,9102,8822,80.875,9102,8823,13.75,9102,8824,18.75,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7757,"WGS 84 / Arunachal Pradesh",9001,4326,7724,9802,1,0,4499,8821,28.00157897,9102,8822,94.5,9102,8823,27,9102,8824,29,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7758,"WGS 84 / Assam",9001,4326,7725,9802,1,0,4499,8821,26.00257703,9102,8822,92.75,9102,8823,24.4,9110,8824,27.2,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7759,"WGS 84 / Bihar",9001,4326,7726,9802,1,0,4499,8821,25.87725247,9102,8822,85.875,9102,8823,24.625,9102,8824,27.125,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7760,"WGS 84 / Delhi",9001,4326,7727,9802,1,0,4499,8821,28.62510126,9102,8822,77,9102,8823,28.223,9110,8824,28.523,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7761,"WGS 84 / Gujarat",9001,4326,7728,9802,1,0,4499,8821,22.37807121,9102,8822,71.375,9102,8823,20.473,9110,8824,23.573,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7762,"WGS 84 / Haryana",9001,4326,7729,9802,1,0,4499,8821,29.25226266,9102,8822,76,9102,8823,28.05,9110,8824,30.25,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7763,"WGS 84 / Himachal Pradesh",9001,4326,7730,9802,1,0,4499,8821,31.75183497,9102,8822,77.375,9102,8823,30.75,9102,8824,32.75,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7764,"WGS 84 / Jammu and Kashmir",9001,4326,7731,9802,1,0,4499,8821,34.75570874,9102,8822,76.5,9102,8823,33.05,9110,8824,36.25,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7765,"WGS 84 / Jharkhand",9001,4326,7732,9802,1,0,4499,8821,23.62652682,9102,8822,85.625,9102,8823,22.323,9110,8824,24.423,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7766,"WGS 84 / Madhya Pradesh",9001,4326,7733,9802,1,0,4499,8821,24.00529821,9102,8822,78.375,9102,8823,22,9102,8824,26,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7767,"WGS 84 / Maharashtra",9001,4326,7734,9802,1,0,4499,8821,18.88015774,9102,8822,76.75,9102,8823,16.373,9110,8824,21.073,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7768,"WGS 84 / Manipur",9001,4326,7735,9802,1,0,4499,8821,24.75060911,9102,8822,94,9102,8823,24.05,9110,8824,25.25,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7769,"WGS 84 / Meghalaya",9001,4326,7736,9802,1,0,4499,8821,25.62524747,9102,8822,91.375,9102,8823,25.123,9110,8824,26.023,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7770,"WGS 84 / Nagaland",9001,4326,7737,9802,1,0,4499,8821,26.12581974,9102,8822,94.375,9102,8823,25.223,9110,8824,26.523,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7771,"WGS 84 / India Northeast",9001,4326,7738,9802,1,0,4499,8821,25.63452135,9102,8822,93.5,9102,8823,23.023,9110,8824,28.123,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7772,"WGS 84 / Orissa",9001,4326,7739,9802,1,0,4499,8821,20.25305174,9102,8822,84.375,9102,8823,18.35,9110,8824,21.55,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7773,"WGS 84 / Punjab",9001,4326,7740,9802,1,0,4499,8821,31.00178226,9102,8822,75.375,9102,8823,30,9102,8824,32,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7774,"WGS 84 / Rajasthan",9001,4326,7741,9802,1,0,4499,8821,26.88505546,9102,8822,73.875,9102,8823,24.173,9110,8824,29.273,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7775,"WGS 84 / Uttar Pradesh",9001,4326,7742,9802,1,0,4499,8821,27.13270823,9102,8822,80.875,9102,8823,24.523,9110,8824,29.223,9110,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7776,"WGS 84 / Uttaranchal",9001,4326,7743,9802,1,0,4499,8821,30.0017132,9102,8822,79.375,9102,8823,29,9102,8824,31,9102,8826,1000000,9001,8827,1000000,9001,,,,,,,,,, +7777,"WGS 84 / Andaman and Nicobar",9001,4326,7744,9807,1,0,4499,8801,10.25,9102,8802,93.25,9102,8805,0.9999428,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7778,"WGS 84 / Chhattisgarh",9001,4326,7745,9807,1,0,4499,8801,21,9102,8802,82.25,9102,8805,0.9998332,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7779,"WGS 84 / Goa",9001,4326,7746,9807,1,0,4499,8801,15.375,9102,8802,74,9102,8805,0.9999913,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7780,"WGS 84 / Karnataka",9001,4326,7747,9807,1,0,4499,8801,15.125,9102,8802,76.375,9102,8805,0.9998012,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7781,"WGS 84 / Kerala",9001,4326,7748,9807,1,0,4499,8801,10.5,9102,8802,76,9102,8805,0.9999177,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7782,"WGS 84 / Lakshadweep",9001,4326,7749,9807,1,0,4499,8801,10,9102,8802,73.125,9102,8805,0.9999536,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7783,"WGS 84 / Mizoram",9001,4326,7750,9807,1,0,4499,8801,23.125,9102,8802,92.75,9102,8805,0.9999821,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7784,"WGS 84 / Sikkim",9001,4326,7751,9807,1,0,4499,8801,27.625,9102,8802,88.5,9102,8805,0.9999926,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7785,"WGS 84 / Tamil Nadu",9001,4326,7752,9807,1,0,4499,8801,10.875,9102,8802,78.375,9102,8805,0.9997942,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7786,"WGS 84 / Tripura",9001,4326,7753,9807,1,0,4499,8801,23.75,9102,8802,91.75,9102,8805,0.9999822,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7787,"WGS 84 / West Bengal",9001,4326,7754,9807,1,0,4499,8801,24.375,9102,8802,87.875,9102,8805,0.9998584,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +7791,"RDN2008 / UTM zone 32N",9001,6706,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7792,"RDN2008 / UTM zone 33N",9001,6706,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7793,"RDN2008 / UTM zone 34N",9001,6706,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7794,"RDN2008 / Italy zone (E-N)",9001,6706,6877,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,0.9985,9201,8806,7000000,9001,8807,0,9001,,,,,,,,,,,,, +7795,"RDN2008 / Zone 12 (E-N)",9001,6706,6878,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,1,9201,8806,3000000,9001,8807,0,9001,,,,,,,,,,,,, +7799,"BGS2005 / UTM zone 34N (N-E)",9001,7798,16034,9807,1,0,4531,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7800,"BGS2005 / UTM zone 35N (N-E)",9001,7798,16035,9807,1,0,4531,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7801,"BGS2005 / CCS2005",9001,7798,7802,9802,1,0,4531,8821,42.400435246,9110,8822,25.3,9110,8823,42,9110,8824,43.2,9110,8826,500000,9001,8827,4725824.3591,9001,,,,,,,,,, +7803,"BGS2005 / UTM zone 34N",9001,7798,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7804,"BGS2005 / UTM zone 35N",9001,7798,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7805,"BGS2005 / UTM zone 36N",9001,7798,16036,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +7825,"Pulkovo 1942 / CS63 zone X1",9001,4284,7818,9807,1,0,4530,8801,0.05,9110,8802,23.3,9110,8805,1,9201,8806,1300000,9001,8807,0,9001,,,,,,,,,,,,, +7826,"Pulkovo 1942 / CS63 zone X2",9001,4284,7819,9807,1,0,4530,8801,0.05,9110,8802,26.3,9110,8805,1,9201,8806,2300000,9001,8807,0,9001,,,,,,,,,,,,, +7827,"Pulkovo 1942 / CS63 zone X3",9001,4284,7820,9807,1,0,4530,8801,0.05,9110,8802,29.3,9110,8805,1,9201,8806,3300000,9001,8807,0,9001,,,,,,,,,,,,, +7828,"Pulkovo 1942 / CS63 zone X4",9001,4284,7821,9807,1,0,4530,8801,0.05,9110,8802,32.3,9110,8805,1,9201,8806,4300000,9001,8807,0,9001,,,,,,,,,,,,, +7829,"Pulkovo 1942 / CS63 zone X5",9001,4284,7822,9807,1,0,4530,8801,0.05,9110,8802,35.3,9110,8805,1,9201,8806,5300000,9001,8807,0,9001,,,,,,,,,,,,, +7830,"Pulkovo 1942 / CS63 zone X6",9001,4284,7823,9807,1,0,4530,8801,0.05,9110,8802,38.3,9110,8805,1,9201,8806,6300000,9001,8807,0,9001,,,,,,,,,,,,, +7831,"Pulkovo 1942 / CS63 zone X7",9001,4284,7824,9807,1,0,4530,8801,0.05,9110,8802,41.3,9110,8805,1,9201,8806,7300000,9001,8807,0,9001,,,,,,,,,,,,, +7845,"GDA2020 / GA LCC",9001,7844,17362,9802,1,0,4400,8821,0,9102,8822,134,9102,8823,-18,9102,8824,-36,9102,8826,0,9001,8827,0,9001,,,,,,,,,, +7846,"GDA2020 / MGA zone 46",9001,7844,6729,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7847,"GDA2020 / MGA zone 47",9001,7844,6730,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7848,"GDA2020 / MGA zone 48",9001,7844,17348,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7849,"GDA2020 / MGA zone 49",9001,7844,17349,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7850,"GDA2020 / MGA zone 50",9001,7844,17350,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7851,"GDA2020 / MGA zone 51",9001,7844,17351,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7852,"GDA2020 / MGA zone 52",9001,7844,17352,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7853,"GDA2020 / MGA zone 53",9001,7844,17353,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7854,"GDA2020 / MGA zone 54",9001,7844,17354,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7855,"GDA2020 / MGA zone 55",9001,7844,17355,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7856,"GDA2020 / MGA zone 56",9001,7844,17356,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7857,"GDA2020 / MGA zone 57",9001,7844,17357,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7858,"GDA2020 / MGA zone 58",9001,7844,17358,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7859,"GDA2020 / MGA zone 59",9001,7844,6731,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7877,"Astro DOS 71 / SHLG71",9001,4710,7875,9807,1,0,4400,8801,-15.58,9110,8802,-5.43,9110,8805,1,9201,8806,300000,9001,8807,2000000,9001,,,,,,,,,,,,, +7878,"Astro DOS 71 / UTM zone 30S",9001,4710,16130,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7882,"St. Helena Tritan / SHLG(Tritan)",9001,7881,7876,9807,1,0,4400,8801,-15.58,9110,8802,-5.43,9110,8805,1,9201,8806,299483.737,9001,8807,2000527.879,9001,,,,,,,,,,,,, +7883,"St. Helena Tritan / UTM zone 30S",9001,7881,16130,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7887,SHMG2015,9001,7886,16130,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +7899,"GDA2020 / Vicgrid",9001,7844,17361,9802,1,0,4400,8821,-37,9102,8822,145,9102,8823,-36,9102,8824,-38,9102,8826,2500000,9001,8827,2500000,9001,,,,,,,,,, +7991,"NAD27 / MTM zone 10",9001,4267,17710,9807,1,0,4499,8801,0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +7992,"Malongo 1987 / UTM zone 33S",9001,4259,16133,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +8013,"GDA2020 / ALB2020",9001,7844,7993,9807,1,0,4400,8801,0,9110,8802,117.53,9110,8805,1.0000044,9201,8806,50000,9001,8807,4100000,9001,,,,,,,,,,,,, +8014,"GDA2020 / BIO2020",9001,7844,7994,9807,1,0,4400,8801,0,9110,8802,115.15,9110,8805,1.0000022,9201,8806,60000,9001,8807,2700000,9001,,,,,,,,,,,,, +8015,"GDA2020 / BRO2020",9001,7844,7995,9807,1,0,4400,8801,0,9110,8802,122.2,9110,8805,1.00000298,9201,8806,50000,9001,8807,2300000,9001,,,,,,,,,,,,, +8016,"GDA2020 / BCG2020",9001,7844,7996,9807,1,0,4400,8801,0,9110,8802,115.26,9110,8805,0.99999592,9201,8806,50000,9001,8807,4000000,9001,,,,,,,,,,,,, +8017,"GDA2020 / CARN2020",9001,7844,7997,9807,1,0,4400,8801,0,9110,8802,113.4,9110,8805,0.99999796,9201,8806,50000,9001,8807,3050000,9001,,,,,,,,,,,,, +8018,"GDA2020 / CIG2020",9001,7844,7998,9807,1,0,4400,8801,0,9110,8802,105.373,9110,8805,1.00002514,9201,8806,50000,9001,8807,1400000,9001,,,,,,,,,,,,, +8019,"GDA2020 / CKIG2020",9001,7844,7999,9807,1,0,4400,8801,0,9110,8802,96.523,9110,8805,0.99999387,9201,8806,50000,9001,8807,1600000,9001,,,,,,,,,,,,, +8020,"GDA2020 / COL2020",9001,7844,8000,9807,1,0,4400,8801,0,9110,8802,115.56,9110,8805,1.000019,9201,8806,40000,9001,8807,4100000,9001,,,,,,,,,,,,, +8021,"GDA2020 / ESP2020",9001,7844,8001,9807,1,0,4400,8801,0,9110,8802,121.53,9110,8805,1.0000055,9201,8806,50000,9001,8807,4050000,9001,,,,,,,,,,,,, +8022,"GDA2020 / EXM2020",9001,7844,8002,9807,1,0,4400,8801,0,9110,8802,114.04,9110,8805,1.00000236,9201,8806,50000,9001,8807,2750000,9001,,,,,,,,,,,,, +8023,"GDA2020 / GCG2020",9001,7844,8003,9807,1,0,4400,8801,0,9110,8802,114.35,9110,8805,1.00000628,9201,8806,50000,9001,8807,3450000,9001,,,,,,,,,,,,, +8024,"GDA2020 / GOLD2020",9001,7844,8004,9807,1,0,4400,8801,0,9110,8802,121.3,9110,8805,1.00004949,9201,8806,60000,9001,8807,3800000,9001,,,,,,,,,,,,, +8025,"GDA2020 / JCG2020",9001,7844,8005,9807,1,0,4400,8801,0,9110,8802,114.59,9110,8805,1.00000314,9201,8806,50000,9001,8807,3650000,9001,,,,,,,,,,,,, +8026,"GDA2020 / KALB2020",9001,7844,8006,9807,1,0,4400,8801,0,9110,8802,114.1855,9110,8805,1.000014,9201,8806,55000,9001,8807,3700000,9001,,,,,,,,,,,,, +8027,"GDA2020 / KAR2020",9001,7844,8007,9807,1,0,4400,8801,0,9110,8802,116.56,9110,8805,0.9999989,9201,8806,50000,9001,8807,2550000,9001,,,,,,,,,,,,, +8028,"GDA2020 / KUN2020",9001,7844,8008,9807,1,0,4400,8801,0,9110,8802,128.45,9110,8805,1.0000165,9201,8806,50000,9001,8807,2100000,9001,,,,,,,,,,,,, +8029,"GDA2020 / LCG2020",9001,7844,8009,9807,1,0,4400,8801,0,9110,8802,115.22,9110,8805,1.00000157,9201,8806,50000,9001,8807,3750000,9001,,,,,,,,,,,,, +8030,"GDA2020 / MRCG2020",9001,7844,8010,9807,1,0,4400,8801,0,9110,8802,115.1,9110,8805,1.0000055,9201,8806,50000,9001,8807,4050000,9001,,,,,,,,,,,,, +8031,"GDA2020 / PCG2020",9001,7844,8011,9807,1,0,4400,8801,0,9110,8802,115.49,9110,8805,0.99999906,9201,8806,50000,9001,8807,3900000,9001,,,,,,,,,,,,, +8032,"GDA2020 / PHG2020",9001,7844,8012,9807,1,0,4400,8801,0,9110,8802,118.36,9110,8805,1.00000135,9201,8806,50000,9001,8807,2500000,9001,,,,,,,,,,,,, +8035,"WGS 84 / TM Zone 20N (ftUS)",9003,4326,8033,9807,1,0,4497,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +8036,"WGS 84 / TM Zone 21N (ftUS)",9003,4326,8034,9807,1,0,4497,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,1640416.667,9003,8807,0,9003,,,,,,,,,,,,, +8044,"Gusterberg Grid (Ferro)",9001,8042,8040,9806,1,0,6501,8801,48.021847,9110,8802,31.481505,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +8045,"St. Stephen Grid (Ferro)",9001,8043,8041,9806,1,0,6501,8801,48.123154,9110,8802,34.022732,9110,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +8058,"GDA2020 / NSW Lambert",9001,7844,17364,9802,1,0,4400,8821,-33.25,9102,8822,147,9102,8823,-30.75,9102,8824,-35.75,9102,8826,9300000,9001,8827,4500000,9001,,,,,,,,,, +8059,"GDA2020 / SA Lambert",9001,7844,17359,9802,1,0,4400,8821,-32,9102,8822,135,9102,8823,-28,9102,8824,-36,9102,8826,1000000,9001,8827,2000000,9001,,,,,,,,,, +8065,"NAD83(2011) / PCCS zone 1 (ft)",9002,6318,8061,9815,1,0,4495,8811,32.15,9110,8812,-111.24,9110,8813,45,9102,8814,45,9102,8815,1.00011,9201,8816,160000,9002,8817,800000,9002,,,,,,, +8066,"NAD83(2011) / PCCS zone 2 (ft)",9002,6318,8062,9807,1,0,4495,8801,31.15,9110,8802,-112.1,9110,8805,1.00009,9201,8806,1800000,9002,8807,1000000,9002,,,,,,,,,,,,, +8067,"NAD83(2011) / PCCS zone 3 (ft)",9002,6318,8063,9807,1,0,4495,8801,31.3,9110,8802,-113.1,9110,8805,1.000055,9201,8806,600000,9002,8807,0,9002,,,,,,,,,,,,, +8068,"NAD83(2011) / PCCS zone 4 (ft)",9002,6318,8064,9801,1,0,4495,8801,30.3,9110,8802,-110.45,9110,8805,0.9998,9201,8806,30000,9002,8807,-620000,9002,,,,,,,,,,,,, +8082,"NAD83(CSRS)v6 / MTM Nova Scotia zone 4",9001,8252,8080,9807,1,0,4400,8801,0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,24500000,9001,8807,0,9001,,,,,,,,,,,,, +8083,"NAD83(CSRS)v6 / MTM Nova Scotia zone 5",9001,8252,8081,9807,1,0,4400,8801,0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +8088,"ISN2016 / Lambert 2016",9001,8086,8087,9802,1,0,4499,8821,65,9110,8822,-19,9110,8823,64.15,9110,8824,65.45,9110,8826,2700000,9001,8827,300000,9001,,,,,,,,,, +8090,"NAD83(HARN) / WISCRS Florence (m)",9001,4152,7386,9807,1,0,4499,8801,45.262,9110,8802,-88.083,9110,8805,1.0000552095,9201,8806,133502.6683,9001,8807,0.0063,9001,,,,,,,,,,,,, +8091,"NAD83(HARN) / WISCRS Florence (ftUS)",9003,4152,7387,9807,1,0,4497,8801,45.262,9110,8802,-88.083,9110,8805,1.0000552095,9201,8806,438000.004,9003,8807,0.021,9003,,,,,,,,,,,,, +8092,"NAD83(HARN) / WISCRS Eau Claire (m)",9001,4152,7440,9801,1,0,4499,8801,44.5220212055,9110,8802,-91.172,9110,8805,1.000035079,9201,8806,120091.4402,9001,8807,91687.9239,9001,,,,,,,,,,,,, +8093,"NAD83(HARN) / WISCRS Eau Claire (ftUS)",9003,4152,7441,9801,1,0,4497,8801,44.5220212055,9110,8802,-91.172,9110,8805,1.000035079,9201,8806,394000,9003,8807,300812.797,9003,,,,,,,,,,,,, +8095,"NAD83(HARN) / WISCRS Wood (m)",9001,4152,7482,9801,1,0,4499,8801,44.214534369,9110,8802,-90,9110,8805,1.0000421209,9201,8806,208483.6173,9001,8807,134589.754,9001,,,,,,,,,,,,, +8096,"NAD83(HARN) / WISCRS Wood (ftUS)",9003,4152,7483,9801,1,0,4497,8801,44.214534369,9110,8802,-90,9110,8805,1.0000421209,9201,8806,684000.001,9003,8807,441566.551,9003,,,,,,,,,,,,, +8097,"NAD83(HARN) / WISCRS Waushara (m)",9001,4152,7526,9801,1,0,4499,8801,44.0650198565,9110,8802,-89.143,9110,8805,1.0000392096,9201,8806,120091.4402,9001,8807,45069.7587,9001,,,,,,,,,,,,, +8098,"NAD83(HARN) / WISCRS Waushara (ftUS)",9003,4152,7527,9801,1,0,4497,8801,44.0650198565,9110,8802,-89.143,9110,8805,1.0000392096,9201,8806,394000,9003,8807,147866.367,9003,,,,,,,,,,,,, +8099,"NAD83(HARN) / WISCRS Waupaca (m)",9001,4152,7480,9807,1,0,4499,8801,43.2513,9110,8802,-88.49,9110,8805,1.0000333645,9201,8806,185013.9709,9001,8807,0.007,9001,,,,,,,,,,,,, +8100,"NAD83(HARN) / WISCRS Waupaca (ftUS)",9003,4152,7481,9807,1,0,4497,8801,43.2513,9110,8802,-88.49,9110,8805,1.0000333645,9201,8806,607000.003,9003,8807,0.023,9003,,,,,,,,,,,,, +8101,"NAD83(HARN) / WISCRS Waukesha (m)",9001,4152,7524,9807,1,0,4499,8801,42.341,9110,8802,-88.133,9110,8805,1.0000346179,9201,8806,208788.418,9001,8807,0.0034,9001,,,,,,,,,,,,, +8102,"NAD83(HARN) / WISCRS Waukesha (ftUS)",9003,4152,7525,9807,1,0,4497,8801,42.341,9110,8802,-88.133,9110,8805,1.0000346179,9201,8806,685000.001,9003,8807,0.011,9003,,,,,,,,,,,,, +8103,"NAD83(HARN) / WISCRS Washington (m)",9001,4152,7522,9807,1,0,4499,8801,42.5505,9110,8802,-88.035,9110,8805,1.00003738,9201,8806,120091.4415,9001,8807,0.003,9001,,,,,,,,,,,,, +8104,"NAD83(HARN) / WISCRS Washington (ftUS)",9003,4152,7523,9807,1,0,4497,8801,42.5505,9110,8802,-88.035,9110,8805,1.00003738,9201,8806,394000.004,9003,8807,0.01,9003,,,,,,,,,,,,, +8105,"NAD83(HARN) / WISCRS Washburn (m)",9001,4152,7424,9801,1,0,4499,8801,45.57403914,9110,8802,-91.47,9110,8805,1.0000475376,9201,8806,234086.8682,9001,8807,188358.6058,9001,,,,,,,,,,,,, +8106,"NAD83(HARN) / WISCRS Washburn (ftUS)",9003,4152,7425,9801,1,0,4497,8801,45.57403914,9110,8802,-91.47,9110,8805,1.0000475376,9201,8806,768000,9003,8807,617973.193,9003,,,,,,,,,,,,, +8107,"NAD83(HARN) / WISCRS Walworth (m)",9001,4152,7520,9801,1,0,4499,8801,42.4010063549,9110,8802,-88.323,9110,8805,1.0000367192,9201,8806,232562.8651,9001,8807,111088.2224,9001,,,,,,,,,,,,, +8108,"NAD83(HARN) / WISCRS Walworth (ftUS)",9003,4152,7521,9801,1,0,4497,8801,42.4010063549,9110,8802,-88.323,9110,8805,1.0000367192,9201,8806,763000,9003,8807,364461.943,9003,,,,,,,,,,,,, +8109,"NAD83(HARN) / WISCRS Vilas (m)",9001,4152,7398,9801,1,0,4499,8801,46.0440238726,9110,8802,-89.292,9110,8805,1.0000730142,9201,8806,134417.0689,9001,8807,50337.1092,9001,,,,,,,,,,,,, +8110,"NAD83(HARN) / WISCRS Vilas (ftUS)",9003,4152,7399,9801,1,0,4497,8801,46.0440238726,9110,8802,-89.292,9110,8805,1.0000730142,9201,8806,441000,9003,8807,165147.666,9003,,,,,,,,,,,,, +8111,"NAD83(HARN) / WISCRS Vernon (m)",9001,4152,7518,9801,1,0,4499,8801,43.3430118583,9110,8802,-90.47,9110,8805,1.0000408158,9201,8806,222504.4451,9001,8807,47532.0602,9001,,,,,,,,,,,,, +8112,"NAD83(HARN) / WISCRS Vernon (ftUS)",9003,4152,7519,9801,1,0,4497,8801,43.3430118583,9110,8802,-90.47,9110,8805,1.0000408158,9201,8806,730000,9003,8807,155944.768,9003,,,,,,,,,,,,, +8113,"NAD83(HARN) / WISCRS Trempealeau (m)",9001,4152,7478,9807,1,0,4499,8801,43.094,9110,8802,-91.22,9110,8805,1.0000361538,9201,8806,256946.9138,9001,8807,0.0041,9001,,,,,,,,,,,,, +8114,"NAD83(HARN) / WISCRS Trempealeau (ftUS)",9003,4152,7479,9807,1,0,4497,8801,43.094,9110,8802,-91.22,9110,8805,1.0000361538,9201,8806,843000,9003,8807,0.013,9003,,,,,,,,,,,,, +8115,"NAD83(HARN) / WISCRS Taylor (m)",9001,4152,7476,9801,1,0,4499,8801,45.1040159509,9110,8802,-90.29,9110,8805,1.0000597566,9201,8806,187147.5744,9001,8807,107746.7522,9001,,,,,,,,,,,,, +8116,"NAD83(HARN) / WISCRS Taylor (ftUS)",9003,4152,7477,9801,1,0,4497,8801,45.1040159509,9110,8802,-90.29,9110,8805,1.0000597566,9201,8806,614000,9003,8807,353499.136,9003,,,,,,,,,,,,, +8117,"NAD83(HARN) / WISCRS St. Croix (m)",9001,4152,7474,9807,1,0,4499,8801,44.021,9110,8802,-92.38,9110,8805,1.0000381803,9201,8806,165506.7302,9001,8807,0.0103,9001,,,,,,,,,,,,, +8118,"NAD83(HARN) / WISCRS St. Croix (ftUS)",9003,4152,7475,9807,1,0,4497,8801,44.021,9110,8802,-92.38,9110,8805,1.0000381803,9201,8806,542999.997,9003,8807,0.034,9003,,,,,,,,,,,,, +8119,"NAD83(HARN) / WISCRS Shawano (m)",9001,4152,7472,9807,1,0,4499,8801,44.021,9110,8802,-88.362,9110,8805,1.000032144,9201,8806,262433.3253,9001,8807,0.0096,9001,,,,,,,,,,,,, +8120,"NAD83(HARN) / WISCRS Shawano (ftUS)",9003,4152,7473,9807,1,0,4497,8801,44.021,9110,8802,-88.362,9110,8805,1.000032144,9201,8806,861000.001,9003,8807,0.031,9003,,,,,,,,,,,,, +8121,"NAD83(HARN) / WISCRS Sawyer (m)",9001,4152,7396,9801,1,0,4499,8801,45.5400356873,9110,8802,-91.07,9110,8805,1.0000573461,9201,8806,216713.2336,9001,8807,120734.1631,9001,,,,,,,,,,,,, +8122,"NAD83(HARN) / WISCRS Sawyer (ftUS)",9003,4152,7397,9801,1,0,4497,8801,45.5400356873,9110,8802,-91.07,9110,8805,1.0000573461,9201,8806,711000.001,9003,8807,396108.667,9003,,,,,,,,,,,,, +8123,"NAD83(HARN) / WISCRS Sauk (m)",9001,4152,7516,9807,1,0,4499,8801,42.491,9110,8802,-89.54,9110,8805,1.0000373868,9201,8806,185623.5716,9001,8807,0.0051,9001,,,,,,,,,,,,, +8124,"NAD83(HARN) / WISCRS Sauk (ftUS)",9003,4152,7517,9807,1,0,4497,8801,42.491,9110,8802,-89.54,9110,8805,1.0000373868,9201,8806,609000.001,9003,8807,0.017,9003,,,,,,,,,,,,, +8125,"NAD83(HARN) / WISCRS Rusk (m)",9001,4152,7470,9807,1,0,4499,8801,43.551,9110,8802,-91.04,9110,8805,1.0000495976,9201,8806,250546.1013,9001,8807,0.0234,9001,,,,,,,,,,,,, +8126,"NAD83(HARN) / WISCRS Rusk (ftUS)",9003,4152,7471,9807,1,0,4497,8801,43.551,9110,8802,-91.04,9110,8805,1.0000495976,9201,8806,822000.001,9003,8807,0.077,9003,,,,,,,,,,,,, +8127,"NAD83(HARN) / WISCRS Rock (m)",9001,4152,7514,9807,1,0,4499,8801,41.564,9110,8802,-89.042,9110,8805,1.0000337311,9201,8806,146304.2926,9001,8807,0.0068,9001,,,,,,,,,,,,, +8128,"NAD83(HARN) / WISCRS Rock (ftUS)",9003,4152,7515,9807,1,0,4497,8801,41.564,9110,8802,-89.042,9110,8805,1.0000337311,9201,8806,480000,9003,8807,0.022,9003,,,,,,,,,,,,, +8129,"NAD83(HARN) / WISCRS Richland (m)",9001,4152,7512,9801,1,0,4499,8801,43.1920326539,9110,8802,-90.255,9110,8805,1.0000375653,9201,8806,202387.6048,9001,8807,134255.4253,9001,,,,,,,,,,,,, +8130,"NAD83(HARN) / WISCRS Richland (ftUS)",9003,4152,7513,9801,1,0,4497,8801,43.1920326539,9110,8802,-90.255,9110,8805,1.0000375653,9201,8806,664000,9003,8807,440469.675,9003,,,,,,,,,,,,, +8131,"NAD83(HARN) / WISCRS Price (m)",9001,4152,7394,9807,1,0,4499,8801,44.332,9110,8802,-90.292,9110,8805,1.0000649554,9201,8806,227990.8546,9001,8807,0.0109,9001,,,,,,,,,,,,, +8132,"NAD83(HARN) / WISCRS Price (ftUS)",9003,4152,7395,9807,1,0,4497,8801,44.332,9110,8802,-90.292,9110,8805,1.0000649554,9201,8806,747999.995,9003,8807,0.036,9003,,,,,,,,,,,,, +8133,"NAD83(HARN) / WISCRS Portage (m)",9001,4152,7468,9801,1,0,4499,8801,44.2500566311,9110,8802,-89.3,9110,8805,1.000039936,9201,8806,56388.1128,9001,8807,50022.1874,9001,,,,,,,,,,,,, +8134,"NAD83(HARN) / WISCRS Portage (ftUS)",9003,4152,7469,9801,1,0,4497,8801,44.2500566311,9110,8802,-89.3,9110,8805,1.000039936,9201,8806,185000,9003,8807,164114.46,9003,,,,,,,,,,,,, +8135,"NAD83(HARN) / WISCRS Polk (m)",9001,4152,7466,9807,1,0,4499,8801,44.394,9110,8802,-92.38,9110,8805,1.0000433849,9201,8806,141732.2823,9001,8807,0.0059,9001,,,,,,,,,,,,, +8136,"NAD83(HARN) / WISCRS Polk (ftUS)",9003,4152,7467,9807,1,0,4497,8801,44.394,9110,8802,-92.38,9110,8805,1.0000433849,9201,8806,464999.996,9003,8807,0.019,9003,,,,,,,,,,,,, +8137,"NAD83(HARN) / WISCRS Pepin and Pierce (m)",9001,4152,7464,9801,1,0,4499,8801,44.3810135939,9110,8802,-92.134,9110,8805,1.0000362977,9201,8806,167640.3354,9001,8807,86033.0876,9001,,,,,,,,,,,,, +8138,"NAD83(HARN) / WISCRS Pepin and Pierce (ftUS)",9003,4152,7465,9801,1,0,4497,8801,44.3810135939,9110,8802,-92.134,9110,8805,1.0000362977,9201,8806,550000,9003,8807,282260.222,9003,,,,,,,,,,,,, +8139,"NAD83(HARN) / WISCRS Oneida (m)",9001,4152,7392,9801,1,0,4499,8801,45.4215205573,9110,8802,-89.324,9110,8805,1.0000686968,9201,8806,70104.1401,9001,8807,57588.0346,9001,,,,,,,,,,,,, +8140,"NAD83(HARN) / WISCRS Oneida (ftUS)",9003,4152,7393,9801,1,0,4497,8801,45.4215205573,9110,8802,-89.324,9110,8805,1.0000686968,9201,8806,230000,9003,8807,188936.744,9003,,,,,,,,,,,,, +8141,"NAD83(HARN) / WISCRS Oconto (m)",9001,4152,7462,9807,1,0,4499,8801,44.235,9110,8802,-87.543,9110,8805,1.0000236869,9201,8806,182880.3676,9001,8807,0.0033,9001,,,,,,,,,,,,, +8142,"NAD83(HARN) / WISCRS Oconto (ftUS)",9003,4152,7463,9807,1,0,4497,8801,44.235,9110,8802,-87.543,9110,8805,1.0000236869,9201,8806,600000.006,9003,8807,0.011,9003,,,,,,,,,,,,, +8143,"NAD83(HARN) / WISCRS Monroe (m)",9001,4152,7510,9801,1,0,4499,8801,44.0000266143,9110,8802,-90.383,9110,8805,1.0000434122,9201,8806,204521.209,9001,8807,121923.9861,9001,,,,,,,,,,,,, +8144,"NAD83(HARN) / WISCRS Monroe (ftUS)",9003,4152,7511,9801,1,0,4497,8801,44.0000266143,9110,8802,-90.383,9110,8805,1.0000434122,9201,8806,671000,9003,8807,400012.278,9003,,,,,,,,,,,,, +8145,"NAD83(HARN) / WISCRS Menominee (m)",9001,4152,7460,9807,1,0,4499,8801,44.43,9110,8802,-88.25,9110,8805,1.0000362499,9201,8806,105461.0121,9001,8807,0.0029,9001,,,,,,,,,,,,, +8146,"NAD83(HARN) / WISCRS Menominee (ftUS)",9003,4152,7461,9807,1,0,4497,8801,44.43,9110,8802,-88.25,9110,8805,1.0000362499,9201,8806,346000.004,9003,8807,0.01,9003,,,,,,,,,,,,, +8147,"NAD83(HARN) / WISCRS Marinette (m)",9001,4152,7458,9807,1,0,4499,8801,44.413,9110,8802,-87.424,9110,8805,1.0000234982,9201,8806,238658.8794,9001,8807,0.0032,9001,,,,,,,,,,,,, +8148,"NAD83(HARN) / WISCRS Marinette (ftUS)",9003,4152,7459,9807,1,0,4497,8801,44.413,9110,8802,-87.424,9110,8805,1.0000234982,9201,8806,783000.007,9003,8807,0.01,9003,,,,,,,,,,,,, +8149,"NAD83(HARN) / WISCRS Marathon (m)",9001,4152,7456,9801,1,0,4499,8801,44.5403255925,9110,8802,-89.4612,9110,8805,1.000053289,9201,8806,74676.1493,9001,8807,55049.2669,9001,,,,,,,,,,,,, +8150,"NAD83(HARN) / WISCRS Marathon (ftUS)",9003,4152,7457,9801,1,0,4497,8801,44.5403255925,9110,8802,-89.4612,9110,8805,1.000053289,9201,8806,245000,9003,8807,180607.47,9003,,,,,,,,,,,,, +8151,"NAD83(HARN) / WISCRS Lincoln (m)",9001,4152,7454,9807,1,0,4499,8801,44.504,9110,8802,-89.44,9110,8805,1.0000599003,9201,8806,116129.0323,9001,8807,0.0058,9001,,,,,,,,,,,,, +8152,"NAD83(HARN) / WISCRS Lincoln (ftUS)",9003,4152,7455,9807,1,0,4497,8801,44.504,9110,8802,-89.44,9110,8805,1.0000599003,9201,8806,381000,9003,8807,0.019,9003,,,,,,,,,,,,, +8153,"NAD83(HARN) / WISCRS Langlade (m)",9001,4152,7452,9801,1,0,4499,8801,45.0915253579,9110,8802,-89.02,9110,8805,1.0000627024,9201,8806,198425.197,9001,8807,105279.7829,9001,,,,,,,,,,,,, +8154,"NAD83(HARN) / WISCRS Langlade (ftUS)",9003,4152,7453,9801,1,0,4497,8801,45.0915253579,9110,8802,-89.02,9110,8805,1.0000627024,9201,8806,651000,9003,8807,345405.421,9003,,,,,,,,,,,,, +8155,"NAD83(HARN) / WISCRS La Crosse (m)",9001,4152,7508,9807,1,0,4499,8801,43.2704,9110,8802,-91.19,9110,8805,1.0000319985,9201,8806,130454.6598,9001,8807,0.0033,9001,,,,,,,,,,,,, +8156,"NAD83(HARN) / WISCRS La Crosse (ftUS)",9003,4152,7509,9807,1,0,4497,8801,43.2704,9110,8802,-91.19,9110,8805,1.0000319985,9201,8806,427999.996,9003,8807,0.011,9003,,,,,,,,,,,,, +8157,"NAD83(HARN) / WISCRS Kewaunee, Manitowoc and Sheboygan (m)",9001,4152,7506,9807,1,0,4499,8801,43.16,9110,8802,-87.33,9110,8805,1.0000233704,9201,8806,79857.7614,9001,8807,0.0012,9001,,,,,,,,,,,,, +8158,"NAD83(HARN) / WISCRS Kewaunee, Manitowoc and Sheboygan (ftUS)",9003,4152,7507,9807,1,0,4497,8801,43.16,9110,8802,-87.33,9110,8805,1.0000233704,9201,8806,262000.006,9003,8807,0.004,9003,,,,,,,,,,,,, +8159,"NAD83(HARN) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (m)",9001,4152,7504,9807,1,0,4499,8801,42.13,9110,8802,-87.534,9110,8805,1.0000260649,9201,8806,185928.3728,9001,8807,0.0009,9001,,,,,,,,,,,,, +8160,"NAD83(HARN) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (ftUS)",9003,4152,7505,9807,1,0,4497,8801,42.13,9110,8802,-87.534,9110,8805,1.0000260649,9201,8806,610000.003,9003,8807,0.003,9003,,,,,,,,,,,,, +8161,"NAD83(HARN) / WISCRS Jackson (m)",9001,4152,7450,9807,1,0,4499,8801,44.151200646,9110,8802,-90.503946747,9110,8805,1.0000353,9201,8806,27000,9001,8807,25000,9001,,,,,,,,,,,,, +8162,"NAD83(HARN) / WISCRS Jackson (ftUS)",9003,4152,7451,9807,1,0,4497,8801,44.151200646,9110,8802,-90.503946747,9110,8805,1.0000353,9201,8806,88582.5,9003,8807,82020.833,9003,,,,,,,,,,,,, +8163,"NAD83(HARN) / WISCRS Iron (m)",9001,4152,7390,9807,1,0,4499,8801,45.26,9110,8802,-90.152,9110,8805,1.0000677153,9201,8806,220980.4419,9001,8807,0.0085,9001,,,,,,,,,,,,, +8164,"NAD83(HARN) / WISCRS Iron (ftUS)",9003,4152,7391,9807,1,0,4497,8801,45.26,9110,8802,-90.152,9110,8805,1.0000677153,9201,8806,725000,9003,8807,0.028,9003,,,,,,,,,,,,, +8165,"NAD83(HARN) / WISCRS Iowa (m)",9001,4152,7502,9807,1,0,4499,8801,42.322,9110,8802,-90.094,9110,8805,1.0000394961,9201,8806,113081.0261,9001,8807,0.0045,9001,,,,,,,,,,,,, +8166,"NAD83(HARN) / WISCRS Iowa (ftUS)",9003,4152,7503,9807,1,0,4497,8801,42.322,9110,8802,-90.094,9110,8805,1.0000394961,9201,8806,371000,9003,8807,0.015,9003,,,,,,,,,,,,, +8167,"NAD83(HARN) / WISCRS Green Lake and Marquette (m)",9001,4152,7500,9801,1,0,4499,8801,43.4825200424,9110,8802,-89.143,9110,8805,1.0000344057,9201,8806,150876.3018,9001,8807,79170.7795,9001,,,,,,,,,,,,, +8168,"NAD83(HARN) / WISCRS Green Lake and Marquette (ftUS)",9003,4152,7501,9801,1,0,4497,8801,43.4825200424,9110,8802,-89.143,9110,8805,1.0000344057,9201,8806,495000,9003,8807,259746.132,9003,,,,,,,,,,,,, +8169,"NAD83(HARN) / WISCRS Green and Lafayette (m)",9001,4152,7498,9801,1,0,4499,8801,42.3815224197,9110,8802,-89.502,9110,8805,1.0000390487,9201,8806,170078.7403,9001,8807,45830.2947,9001,,,,,,,,,,,,, +8170,"NAD83(HARN) / WISCRS Green and Lafayette (ftUS)",9003,4152,7499,9801,1,0,4497,8801,42.3815224197,9110,8802,-89.502,9110,8805,1.0000390487,9201,8806,558000,9003,8807,150361.559,9003,,,,,,,,,,,,, +8171,"NAD83(HARN) / WISCRS Grant (m)",9001,4152,7496,9807,1,0,4499,8801,41.244,9110,8802,-90.48,9110,8805,1.0000349452,9201,8806,242316.4841,9001,8807,0.01,9001,,,,,,,,,,,,, +8172,"NAD83(HARN) / WISCRS Grant (ftUS)",9003,4152,7497,9807,1,0,4497,8801,41.244,9110,8802,-90.48,9110,8805,1.0000349452,9201,8806,794999.998,9003,8807,0.033,9003,,,,,,,,,,,,, +8173,"NAD83(HARN) / WISCRS Forest (m)",9001,4152,7388,9807,1,0,4499,8801,44.002,9110,8802,-88.38,9110,8805,1.0000673004,9201,8806,275844.5533,9001,8807,0.0157,9001,,,,,,,,,,,,, +8177,"NAD83(HARN) / WISCRS Forest (ftUS)",9003,4152,7389,9807,1,0,4497,8801,44.002,9110,8802,-88.38,9110,8805,1.0000673004,9201,8806,905000.005,9003,8807,0.052,9003,,,,,,,,,,,,, +8179,"NAD83(HARN) / WISCRS Dunn (m)",9001,4152,7438,9807,1,0,4499,8801,44.243,9110,8802,-91.534,9110,8805,1.0000410324,9201,8806,51816.104,9001,8807,0.003,9001,,,,,,,,,,,,, +8180,"NAD83(HARN) / WISCRS Dunn (ftUS)",9003,4152,7439,9807,1,0,4497,8801,44.243,9110,8802,-91.534,9110,8805,1.0000410324,9201,8806,170000.001,9003,8807,0.01,9003,,,,,,,,,,,,, +8181,"NAD83(HARN) / WISCRS Douglas (m)",9001,4152,7384,9807,1,0,4499,8801,45.53,9110,8802,-91.55,9110,8805,1.0000385418,9201,8806,59131.3183,9001,8807,0.0041,9001,,,,,,,,,,,,, +8182,"NAD83(HARN) / WISCRS Douglas (ftUS)",9003,4152,7385,9807,1,0,4497,8801,45.53,9110,8802,-91.55,9110,8805,1.0000385418,9201,8806,194000,9003,8807,0.013,9003,,,,,,,,,,,,, +8184,"NAD83(HARN) / WISCRS Door (m)",9001,4152,7436,9807,1,0,4499,8801,44.24,9110,8802,-87.162,9110,8805,1.0000187521,9201,8806,158801.1176,9001,8807,0.0023,9001,,,,,,,,,,,,, +8185,"NAD83(HARN) / WISCRS Door (ftUS)",9003,4152,7437,9807,1,0,4497,8801,44.24,9110,8802,-87.162,9110,8805,1.0000187521,9201,8806,521000,9003,8807,0.008,9003,,,,,,,,,,,,, +8187,"NAD83(HARN) / WISCRS Dodge and Jefferson (m)",9001,4152,7494,9807,1,0,4499,8801,41.282,9110,8802,-88.463,9110,8805,1.0000346418,9201,8806,263347.7263,9001,8807,0.0076,9001,,,,,,,,,,,,, +8189,"NAD83(HARN) / WISCRS Dodge and Jefferson (ftUS)",9003,4152,7495,9807,1,0,4497,8801,41.282,9110,8802,-88.463,9110,8805,1.0000346418,9201,8806,863999.999,9003,8807,0.025,9003,,,,,,,,,,,,, +8191,"NAD83(HARN) / WISCRS Dane (m)",9001,4152,7492,9801,1,0,4499,8801,43.0410257735,9110,8802,-89.252,9110,8805,1.0000384786,9201,8806,247193.2944,9001,8807,146591.9896,9001,,,,,,,,,,,,, +8193,"NAD83(HARN) / WISCRS Dane (ftUS)",9003,4152,7493,9801,1,0,4497,8801,43.0410257735,9110,8802,-89.252,9110,8805,1.0000384786,9201,8806,811000,9003,8807,480943.886,9003,,,,,,,,,,,,, +8196,"NAD83(HARN) / WISCRS Crawford (m)",9001,4152,7490,9801,1,0,4499,8801,43.1200200178,9110,8802,-90.562,9110,8805,1.0000349151,9201,8806,113690.6274,9001,8807,53703.1201,9001,,,,,,,,,,,,, +8197,"NAD83(HARN) / WISCRS Crawford (ftUS)",9003,4152,7491,9801,1,0,4497,8801,43.1200200178,9110,8802,-90.562,9110,8805,1.0000349151,9201,8806,373000,9003,8807,176190.987,9003,,,,,,,,,,,,, +8198,"NAD83(HARN) / WISCRS Columbia (m)",9001,4152,7488,9801,1,0,4499,8801,43.2745167925,9110,8802,-89.234,9110,8805,1.00003498,9201,8806,169164.3381,9001,8807,111569.6134,9001,,,,,,,,,,,,, +8200,"NAD83(HARN) / WISCRS Columbia (ftUS)",9003,4152,7489,9801,1,0,4497,8801,43.2745167925,9110,8802,-89.234,9110,8805,1.00003498,9201,8806,554999.999,9003,8807,366041.307,9003,,,,,,,,,,,,, +8201,"NAD83(HARN) / WISCRS Clark (m)",9001,4152,7434,9807,1,0,4499,8801,43.36,9110,8802,-90.423,9110,8805,1.0000463003,9201,8806,199949.1989,9001,8807,0.0086,9001,,,,,,,,,,,,, +8202,"NAD83(HARN) / WISCRS Clark (ftUS)",9003,4152,7435,9807,1,0,4497,8801,43.36,9110,8802,-90.423,9110,8805,1.0000463003,9201,8806,655999.997,9003,8807,0.028,9003,,,,,,,,,,,,, +8203,"NAD83(HARN) / WISCRS Chippewa (m)",9001,4152,7432,9801,1,0,4499,8801,44.5840284835,9110,8802,-91.174,9110,8805,1.0000391127,9201,8806,60045.72,9001,8807,44091.4346,9001,,,,,,,,,,,,, +8204,"NAD83(HARN) / WISCRS Chippewa (ftUS)",9003,4152,7433,9801,1,0,4497,8801,44.5840284835,9110,8802,-91.174,9110,8805,1.0000391127,9201,8806,197000,9003,8807,144656.648,9003,,,,,,,,,,,,, +8205,"NAD83(HARN) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (m)",9001,4152,7486,9807,1,0,4499,8801,42.431,9110,8802,-88.3,9110,8805,1.0000286569,9201,8806,244754.8893,9001,8807,0.0049,9001,,,,,,,,,,,,, +8206,"NAD83(HARN) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (ftUS)",9003,4152,7487,9807,1,0,4497,8801,42.431,9110,8802,-88.3,9110,8805,1.0000286569,9201,8806,802999.999,9003,8807,0.016,9003,,,,,,,,,,,,, +8207,"NAD83(HARN) / WISCRS Burnett (m)",9001,4152,7382,9801,1,0,4499,8801,45.5355373517,9110,8802,-92.2728,9110,8805,1.0000383841,9201,8806,64008.1276,9001,8807,59445.9043,9001,,,,,,,,,,,,, +8208,"NAD83(HARN) / WISCRS Burnett (ftUS)",9003,4152,7383,9801,1,0,4497,8801,45.5355373517,9110,8802,-92.2728,9110,8805,1.0000383841,9201,8806,209999.999,9003,8807,195032.104,9003,,,,,,,,,,,,, +8209,"NAD83(HARN) / WISCRS Buffalo (m)",9001,4152,7430,9807,1,0,4499,8801,43.2853,9110,8802,-91.475,9110,8805,1.0000382778,9201,8806,175260.3502,9001,8807,0.0048,9001,,,,,,,,,,,,, +8210,"NAD83(HARN) / WISCRS Buffalo (ftUS)",9003,4152,7431,9807,1,0,4497,8801,43.2853,9110,8802,-91.475,9110,8805,1.0000382778,9201,8806,574999.999,9003,8807,0.016,9003,,,,,,,,,,,,, +8212,"NAD83(HARN) / WISCRS Brown (m)",9001,4152,7428,9807,1,0,4499,8801,43,9102,8802,-88,9102,8805,1.00002,9201,8806,31600,9001,8807,4600,9001,,,,,,,,,,,,, +8213,"NAD83(HARN) / WISCRS Brown (ftUS)",9003,4152,7429,9807,1,0,4497,8801,43,9110,8802,-88,9110,8805,1.00002,9201,8806,103674.333,9003,8807,15091.833,9003,,,,,,,,,,,,, +8214,"NAD83(HARN) / WISCRS Bayfield (m)",9001,4152,7380,9801,1,0,4499,8801,46.4010734158,9110,8802,-91.091,9110,8805,1.0000331195,9201,8806,228600.4575,9001,8807,148551.4837,9001,,,,,,,,,,,,, +8216,"NAD83(HARN) / WISCRS Bayfield (ftUS)",9003,4152,7381,9801,1,0,4497,8801,46.4010734158,9110,8802,-91.091,9110,8805,1.0000331195,9201,8806,750000.001,9003,8807,487372.659,9003,,,,,,,,,,,,, +8218,"NAD83(HARN) / WISCRS Barron (m)",9001,4152,7426,9807,1,0,4499,8801,45.08,9110,8802,-91.51,9110,8805,1.0000486665,9201,8806,93150,9001,8807,0.0029,9001,,,,,,,,,,,,, +8220,"NAD83(HARN) / WISCRS Barron (ftUS)",9003,4152,7427,9807,1,0,4497,8801,45.08,9110,8802,-91.51,9110,8805,1.0000486665,9201,8806,305609.625,9003,8807,0.01,9003,,,,,,,,,,,,, +8222,"NAD83(HARN) / WISCRS Ashland (m)",9001,4152,7378,9807,1,0,4499,8801,45.4222,9110,8802,-90.372,9110,8805,1.0000495683,9201,8806,172821.9461,9001,8807,0.0017,9001,,,,,,,,,,,,, +8224,"NAD83(HARN) / WISCRS Ashland (ftUS)",9003,4152,7379,9807,1,0,4497,8801,45.4222,9110,8802,-90.372,9110,8805,1.0000495683,9201,8806,567000.001,9003,8807,0.006,9003,,,,,,,,,,,,, +8225,"NAD83(HARN) / WISCRS Adams and Juneau (m)",9001,4152,7484,9807,1,0,4499,8801,43.22,9110,8802,-90,9110,8805,1.0000365285,9201,8806,147218.6942,9001,8807,0.0037,9001,,,,,,,,,,,,, +8226,"NAD83(HARN) / WISCRS Adams and Juneau (ftUS)",9003,4152,7485,9807,1,0,4497,8801,43.22,9110,8802,-90,9110,8805,1.0000365285,9201,8806,482999.999,9003,8807,0.012,9003,,,,,,,,,,,,, +8311,"NAD83(2011) / Oregon Burns-Harper zone (m)",9001,6318,8273,9807,1,0,4499,8801,43.3,9110,8802,-117.4,9110,8805,1.00014,9201,8806,90000,9001,8807,0,9001,,,,,,,,,,,,, +8312,"NAD83(2011) / Oregon Burns-Harper zone (ft)",9002,6318,8274,9807,1,0,4495,8801,43.3,9110,8802,-117.4,9110,8805,1.00014,9201,8806,295275.5906,9002,8807,0,9002,,,,,,,,,,,,, +8313,"NAD83(2011) / Oregon Canyon City-Burns zone (m)",9001,6318,8275,9807,1,0,4499,8801,43.3,9110,8802,-119,9110,8805,1.00022,9201,8806,20000,9001,8807,0,9001,,,,,,,,,,,,, +8314,"NAD83(2011) / Oregon Canyon City-Burns zone (ft)",9002,6318,8276,9807,1,0,4495,8801,43.3,9110,8802,-119,9110,8805,1.00022,9201,8806,65616.7979,9002,8807,0,9002,,,,,,,,,,,,, +8315,"NAD83(2011) / Oregon Coast Range North zone (m)",9001,6318,8277,9801,1,0,4499,8801,45.35,9110,8802,-123.25,9110,8805,1.000045,9201,8806,30000,9001,8807,20000,9001,,,,,,,,,,,,, +8316,"NAD83(2011) / Oregon Coast Range North zone (ft)",9002,6318,8278,9801,1,0,4495,8801,45.35,9110,8802,-123.25,9110,8805,1.000045,9201,8806,98425.1969,9002,8807,65616.7979,9002,,,,,,,,,,,,, +8317,"NAD83(2011) / Oregon Dayville-Prairie City zone (m)",9001,6318,8279,9807,1,0,4499,8801,44.15,9110,8802,-119.38,9110,8805,1.00012,9201,8806,20000,9001,8807,0,9001,,,,,,,,,,,,, +8318,"NAD83(2011) / Oregon Dayville-Prairie City zone (ft)",9002,6318,8280,9807,1,0,4495,8801,44.15,9110,8802,-119.38,9110,8805,1.00012,9201,8806,65616.7979,9002,8807,0,9002,,,,,,,,,,,,, +8319,"NAD83(2011) / Oregon Denio-Burns zone (m)",9001,6318,8281,9807,1,0,4499,8801,41.45,9110,8802,-118.25,9110,8805,1.00019,9201,8806,80000,9001,8807,0,9001,,,,,,,,,,,,, +8320,"NAD83(2011) / Oregon Denio-Burns zone (ft)",9002,6318,8282,9807,1,0,4495,8801,41.45,9110,8802,-118.25,9110,8805,1.00019,9201,8806,262467.1916,9002,8807,0,9002,,,,,,,,,,,,, +8321,"NAD83(2011) / Oregon Halfway zone (m)",9001,6318,8283,9801,1,0,4499,8801,45.15,9110,8802,-117.15,9110,8805,1.000085,9201,8806,40000,9001,8807,70000,9001,,,,,,,,,,,,, +8322,"NAD83(2011) / Oregon Halfway zone (ft)",9002,6318,8284,9801,1,0,4495,8801,45.15,9110,8802,-117.15,9110,8805,1.000085,9201,8806,131233.5958,9002,8807,229658.7927,9002,,,,,,,,,,,,, +8323,"NAD83(2011) / Oregon Medford-Diamond Lake zone (m)",9001,6318,8285,9801,1,0,4499,8801,42,9110,8802,-122.15,9110,8805,1.00004,9201,8806,60000,9001,8807,-60000,9001,,,,,,,,,,,,, +8324,"NAD83(2011) / Oregon Medford-Diamond Lake zone (ft)",9002,6318,8286,9801,1,0,4495,8801,42,9110,8802,-122.15,9110,8805,1.00004,9201,8806,196850.3937,9002,8807,-196850.3937,9002,,,,,,,,,,,,, +8325,"NAD83(2011) / Oregon Mitchell zone (m)",9001,6318,8287,9801,1,0,4499,8801,47,9110,8802,-120.15,9110,8805,0.99927,9201,8806,30000,9001,8807,290000,9001,,,,,,,,,,,,, +8326,"NAD83(2011) / Oregon Mitchell zone (ft)",9002,6318,8288,9801,1,0,4495,8801,47,9110,8802,-120.15,9110,8805,0.99927,9201,8806,98425.1969,9002,8807,951443.5696,9002,,,,,,,,,,,,, +8327,"NAD83(2011) / Oregon North Central zone (m)",9001,6318,8289,9801,1,0,4499,8801,46.1,9110,8802,-120.3,9110,8805,1,9201,8806,100000,9001,8807,140000,9001,,,,,,,,,,,,, +8328,"NAD83(2011) / Oregon North Central zone (ft)",9002,6318,8290,9801,1,0,4495,8801,46.1,9110,8802,-120.3,9110,8805,1,9201,8806,328083.9895,9002,8807,459317.5853,9002,,,,,,,,,,,,, +8329,"NAD83(2011) / Oregon Ochoco Summit zone (m)",9001,6318,8291,9801,1,0,4499,8801,43.3,9110,8802,-120.3,9110,8805,1.00006,9201,8806,40000,9001,8807,-80000,9001,,,,,,,,,,,,, +8330,"NAD83(2011) / Oregon Ochoco Summit zone (ft)",9002,6318,8292,9801,1,0,4495,8801,43.3,9110,8802,-120.3,9110,8805,1.00006,9201,8806,131233.5958,9002,8807,-262467.1916,9002,,,,,,,,,,,,, +8331,"NAD83(2011) / Oregon Owyhee zone (m)",9001,6318,8293,9807,1,0,4499,8801,41.45,9110,8802,-117.35,9110,8805,1.00018,9201,8806,70000,9001,8807,0,9001,,,,,,,,,,,,, +8332,"NAD83(2011) / Oregon Owyhee zone (ft)",9002,6318,8294,9807,1,0,4495,8801,41.45,9110,8802,-117.35,9110,8805,1.00018,9201,8806,229658.7927,9002,8807,0,9002,,,,,,,,,,,,, +8333,"NAD83(2011) / Oregon Pilot Rock-Ukiah zone (m)",9001,6318,8295,9801,1,0,4499,8801,46.1,9110,8802,-119,9110,8805,1.000025,9201,8806,50000,9001,8807,130000,9001,,,,,,,,,,,,, +8334,"NAD83(2011) / Oregon Pilot Rock-Ukiah zone (ft)",9002,6318,8296,9801,1,0,4495,8801,46.1,9110,8802,-119,9110,8805,1.000025,9201,8806,164041.9948,9002,8807,426509.1864,9002,,,,,,,,,,,,, +8335,"NAD83(2011) / Oregon Prairie City-Brogan zone (m)",9001,6318,8297,9801,1,0,4499,8801,44,9110,8802,-118,9110,8805,1.00017,9201,8806,60000,9001,8807,0,9001,,,,,,,,,,,,, +8336,"NAD83(2011) / Oregon Prairie City-Brogan zone (ft)",9002,6318,8298,9801,1,0,4495,8801,44,9110,8802,-118,9110,8805,1.00017,9201,8806,196850.3937,9002,8807,0,9002,,,,,,,,,,,,, +8337,"NAD83(2011) / Oregon Riley-Lakeview zone (m)",9001,6318,8299,9807,1,0,4499,8801,41.45,9110,8802,-120.2,9110,8805,1.000215,9201,8806,70000,9001,8807,0,9001,,,,,,,,,,,,, +8338,"NAD83(2011) / Oregon Riley-Lakeview zone (ft)",9002,6318,8300,9807,1,0,4495,8801,41.45,9110,8802,-120.2,9110,8805,1.000215,9201,8806,229658.7927,9002,8807,0,9002,,,,,,,,,,,,, +8339,"NAD83(2011) / Oregon Siskiyou Pass zone (m)",9001,6318,8301,9801,1,0,4499,8801,42.3,9110,8802,-122.35,9110,8805,1.00015,9201,8806,10000,9001,8807,60000,9001,,,,,,,,,,,,, +8340,"NAD83(2011) / Oregon Siskiyou Pass zone (ft)",9002,6318,8302,9801,1,0,4495,8801,42.3,9110,8802,-122.35,9110,8805,1.00015,9201,8806,32808.399,9002,8807,196850.3937,9002,,,,,,,,,,,,, +8341,"NAD83(2011) / Oregon Ukiah-Fox zone (m)",9001,6318,8303,9801,1,0,4499,8801,45.15,9110,8802,-119,9110,8805,1.00014,9201,8806,30000,9001,8807,90000,9001,,,,,,,,,,,,, +8342,"NAD83(2011) / Oregon Ukiah-Fox zone (ft)",9002,6318,8304,9801,1,0,4495,8801,45.15,9110,8802,-119,9110,8805,1.00014,9201,8806,98425.1969,9002,8807,295275.5906,9002,,,,,,,,,,,,, +8343,"NAD83(2011) / Oregon Wallowa zone (m)",9001,6318,8305,9807,1,0,4499,8801,45.15,9110,8802,-117.3,9110,8805,1.000195,9201,8806,60000,9001,8807,0,9001,,,,,,,,,,,,, +8344,"NAD83(2011) / Oregon Wallowa zone (ft)",9002,6318,8306,9807,1,0,4495,8801,45.15,9110,8802,-117.3,9110,8805,1.000195,9201,8806,196850.3937,9002,8807,0,9002,,,,,,,,,,,,, +8345,"NAD83(2011) / Oregon Warner Highway zone (m)",9001,6318,8307,9801,1,0,4499,8801,42.3,9110,8802,-120,9110,8805,1.000245,9201,8806,40000,9001,8807,60000,9001,,,,,,,,,,,,, +8346,"NAD83(2011) / Oregon Warner Highway zone (ft)",9002,6318,8308,9801,1,0,4495,8801,42.3,9110,8802,-120,9110,8805,1.000245,9201,8806,131233.5958,9002,8807,196850.3937,9002,,,,,,,,,,,,, +8347,"NAD83(2011) / Oregon Willamette Pass zone (m)",9001,6318,8309,9807,1,0,4499,8801,43,9110,8802,-122,9110,8805,1.000223,9201,8806,20000,9001,8807,0,9001,,,,,,,,,,,,, +8348,"NAD83(2011) / Oregon Willamette Pass zone (ft)",9002,6318,8310,9807,1,0,4495,8801,43,9110,8802,-122,9110,8805,1.000223,9201,8806,65616.7979,9002,8807,0,9002,,,,,,,,,,,,, +20004,"Pulkovo 1995 / Gauss-Kruger zone 4",9001,4200,16204,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +20005,"Pulkovo 1995 / Gauss-Kruger zone 5",9001,4200,16205,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +20006,"Pulkovo 1995 / Gauss-Kruger zone 6",9001,4200,16206,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +20007,"Pulkovo 1995 / Gauss-Kruger zone 7",9001,4200,16207,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +20008,"Pulkovo 1995 / Gauss-Kruger zone 8",9001,4200,16208,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +20009,"Pulkovo 1995 / Gauss-Kruger zone 9",9001,4200,16209,9807,1,0,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +20010,"Pulkovo 1995 / Gauss-Kruger zone 10",9001,4200,16210,9807,1,0,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,10500000,9001,8807,0,9001,,,,,,,,,,,,, +20011,"Pulkovo 1995 / Gauss-Kruger zone 11",9001,4200,16211,9807,1,0,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,11500000,9001,8807,0,9001,,,,,,,,,,,,, +20012,"Pulkovo 1995 / Gauss-Kruger zone 12",9001,4200,16212,9807,1,0,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,12500000,9001,8807,0,9001,,,,,,,,,,,,, +20013,"Pulkovo 1995 / Gauss-Kruger zone 13",9001,4200,16213,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +20014,"Pulkovo 1995 / Gauss-Kruger zone 14",9001,4200,16214,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +20015,"Pulkovo 1995 / Gauss-Kruger zone 15",9001,4200,16215,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +20016,"Pulkovo 1995 / Gauss-Kruger zone 16",9001,4200,16216,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,16500000,9001,8807,0,9001,,,,,,,,,,,,, +20017,"Pulkovo 1995 / Gauss-Kruger zone 17",9001,4200,16217,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,17500000,9001,8807,0,9001,,,,,,,,,,,,, +20018,"Pulkovo 1995 / Gauss-Kruger zone 18",9001,4200,16218,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,18500000,9001,8807,0,9001,,,,,,,,,,,,, +20019,"Pulkovo 1995 / Gauss-Kruger zone 19",9001,4200,16219,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +20020,"Pulkovo 1995 / Gauss-Kruger zone 20",9001,4200,16220,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,20500000,9001,8807,0,9001,,,,,,,,,,,,, +20021,"Pulkovo 1995 / Gauss-Kruger zone 21",9001,4200,16221,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,21500000,9001,8807,0,9001,,,,,,,,,,,,, +20022,"Pulkovo 1995 / Gauss-Kruger zone 22",9001,4200,16222,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,22500000,9001,8807,0,9001,,,,,,,,,,,,, +20023,"Pulkovo 1995 / Gauss-Kruger zone 23",9001,4200,16223,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,23500000,9001,8807,0,9001,,,,,,,,,,,,, +20024,"Pulkovo 1995 / Gauss-Kruger zone 24",9001,4200,16224,9807,1,0,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,24500000,9001,8807,0,9001,,,,,,,,,,,,, +20025,"Pulkovo 1995 / Gauss-Kruger zone 25",9001,4200,16225,9807,1,0,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +20026,"Pulkovo 1995 / Gauss-Kruger zone 26",9001,4200,16226,9807,1,0,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,26500000,9001,8807,0,9001,,,,,,,,,,,,, +20027,"Pulkovo 1995 / Gauss-Kruger zone 27",9001,4200,16227,9807,1,0,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,27500000,9001,8807,0,9001,,,,,,,,,,,,, +20028,"Pulkovo 1995 / Gauss-Kruger zone 28",9001,4200,16228,9807,1,0,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,28500000,9001,8807,0,9001,,,,,,,,,,,,, +20029,"Pulkovo 1995 / Gauss-Kruger zone 29",9001,4200,16229,9807,1,0,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,29500000,9001,8807,0,9001,,,,,,,,,,,,, +20030,"Pulkovo 1995 / Gauss-Kruger zone 30",9001,4200,16230,9807,1,0,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,30500000,9001,8807,0,9001,,,,,,,,,,,,, +20031,"Pulkovo 1995 / Gauss-Kruger zone 31",9001,4200,16231,9807,1,0,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +20032,"Pulkovo 1995 / Gauss-Kruger zone 32",9001,4200,16232,9807,1,0,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +20064,"Pulkovo 1995 / Gauss-Kruger 4N",9001,4200,16304,9807,1,1,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20065,"Pulkovo 1995 / Gauss-Kruger 5N",9001,4200,16305,9807,1,1,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20066,"Pulkovo 1995 / Gauss-Kruger 6N",9001,4200,16306,9807,1,1,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20067,"Pulkovo 1995 / Gauss-Kruger 7N",9001,4200,16307,9807,1,1,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20068,"Pulkovo 1995 / Gauss-Kruger 8N",9001,4200,16308,9807,1,1,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20069,"Pulkovo 1995 / Gauss-Kruger 9N",9001,4200,16309,9807,1,1,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20070,"Pulkovo 1995 / Gauss-Kruger 10N",9001,4200,16310,9807,1,1,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20071,"Pulkovo 1995 / Gauss-Kruger 11N",9001,4200,16311,9807,1,1,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20072,"Pulkovo 1995 / Gauss-Kruger 12N",9001,4200,16312,9807,1,1,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20073,"Pulkovo 1995 / Gauss-Kruger 13N",9001,4200,16313,9807,1,1,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20074,"Pulkovo 1995 / Gauss-Kruger 14N",9001,4200,16314,9807,1,1,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20075,"Pulkovo 1995 / Gauss-Kruger 15N",9001,4200,16315,9807,1,1,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20076,"Pulkovo 1995 / Gauss-Kruger 16N",9001,4200,16316,9807,1,1,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20077,"Pulkovo 1995 / Gauss-Kruger 17N",9001,4200,16317,9807,1,1,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20078,"Pulkovo 1995 / Gauss-Kruger 18N",9001,4200,16318,9807,1,1,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20079,"Pulkovo 1995 / Gauss-Kruger 19N",9001,4200,16319,9807,1,1,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20080,"Pulkovo 1995 / Gauss-Kruger 20N",9001,4200,16320,9807,1,1,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20081,"Pulkovo 1995 / Gauss-Kruger 21N",9001,4200,16321,9807,1,1,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20082,"Pulkovo 1995 / Gauss-Kruger 22N",9001,4200,16322,9807,1,1,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20083,"Pulkovo 1995 / Gauss-Kruger 23N",9001,4200,16323,9807,1,1,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20084,"Pulkovo 1995 / Gauss-Kruger 24N",9001,4200,16324,9807,1,1,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20085,"Pulkovo 1995 / Gauss-Kruger 25N",9001,4200,16325,9807,1,1,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20086,"Pulkovo 1995 / Gauss-Kruger 26N",9001,4200,16326,9807,1,1,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20087,"Pulkovo 1995 / Gauss-Kruger 27N",9001,4200,16327,9807,1,1,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20088,"Pulkovo 1995 / Gauss-Kruger 28N",9001,4200,16328,9807,1,1,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20089,"Pulkovo 1995 / Gauss-Kruger 29N",9001,4200,16329,9807,1,1,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20090,"Pulkovo 1995 / Gauss-Kruger 30N",9001,4200,16330,9807,1,1,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20091,"Pulkovo 1995 / Gauss-Kruger 31N",9001,4200,16331,9807,1,1,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20092,"Pulkovo 1995 / Gauss-Kruger 32N",9001,4200,16332,9807,1,1,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20135,"Adindan / UTM zone 35N",9001,4201,16035,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20136,"Adindan / UTM zone 36N",9001,4201,16036,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20137,"Adindan / UTM zone 37N",9001,4201,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20138,"Adindan / UTM zone 38N",9001,4201,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20248,"AGD66 / AMG zone 48",9001,4202,17448,9807,1,1,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20249,"AGD66 / AMG zone 49",9001,4202,17449,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20250,"AGD66 / AMG zone 50",9001,4202,17450,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20251,"AGD66 / AMG zone 51",9001,4202,17451,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20252,"AGD66 / AMG zone 52",9001,4202,17452,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20253,"AGD66 / AMG zone 53",9001,4202,17453,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20254,"AGD66 / AMG zone 54",9001,4202,17454,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20255,"AGD66 / AMG zone 55",9001,4202,17455,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20256,"AGD66 / AMG zone 56",9001,4202,17456,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20257,"AGD66 / AMG zone 57",9001,4202,17457,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20258,"AGD66 / AMG zone 58",9001,4202,17458,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20348,"AGD84 / AMG zone 48",9001,4203,17448,9807,1,1,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20349,"AGD84 / AMG zone 49",9001,4203,17449,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20350,"AGD84 / AMG zone 50",9001,4203,17450,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20351,"AGD84 / AMG zone 51",9001,4203,17451,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20352,"AGD84 / AMG zone 52",9001,4203,17452,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20353,"AGD84 / AMG zone 53",9001,4203,17453,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20354,"AGD84 / AMG zone 54",9001,4203,17454,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20355,"AGD84 / AMG zone 55",9001,4203,17455,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20356,"AGD84 / AMG zone 56",9001,4203,17456,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20357,"AGD84 / AMG zone 57",9001,4203,17457,9807,1,1,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20358,"AGD84 / AMG zone 58",9001,4203,17458,9807,1,1,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20436,"Ain el Abd / UTM zone 36N",9001,4204,16036,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20437,"Ain el Abd / UTM zone 37N",9001,4204,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20438,"Ain el Abd / UTM zone 38N",9001,4204,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20439,"Ain el Abd / UTM zone 39N",9001,4204,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20440,"Ain el Abd / UTM zone 40N",9001,4204,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20499,"Ain el Abd / Bahrain Grid",9001,4204,19900,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20538,"Afgooye / UTM zone 38N",9001,4205,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20539,"Afgooye / UTM zone 39N",9001,4205,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +20790,"Lisbon (Lisbon) / Portuguese National Grid",9001,4803,19936,9807,1,0,4499,8801,39.4,9110,8802,1,9110,8805,1,9201,8806,200000,9001,8807,300000,9001,,,,,,,,,,,,, +20791,"Lisbon (Lisbon) / Portuguese Grid",9001,4803,19969,9807,1,0,4499,8801,39.4,9110,8802,1,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +20822,"Aratu / UTM zone 22S",9001,4208,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20823,"Aratu / UTM zone 23S",9001,4208,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20824,"Aratu / UTM zone 24S",9001,4208,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20934,"Arc 1950 / UTM zone 34S",9001,4209,16134,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20935,"Arc 1950 / UTM zone 35S",9001,4209,16135,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +20936,"Arc 1950 / UTM zone 36S",9001,4209,16136,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +21035,"Arc 1960 / UTM zone 35S",9001,4210,16135,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +21036,"Arc 1960 / UTM zone 36S",9001,4210,16136,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +21037,"Arc 1960 / UTM zone 37S",9001,4210,16137,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +21095,"Arc 1960 / UTM zone 35N",9001,4210,16035,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21096,"Arc 1960 / UTM zone 36N",9001,4210,16036,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21097,"Arc 1960 / UTM zone 37N",9001,4210,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21100,"Batavia (Jakarta) / NEIEZ",9001,4813,19905,9804,1,1,4499,8801,0,9102,8802,110,9102,8805,0.997,9201,8806,3900000,9001,8807,900000,9001,,,,,,,,,,,,, +21148,"Batavia / UTM zone 48S",9001,4211,16148,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +21149,"Batavia / UTM zone 49S",9001,4211,16149,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +21150,"Batavia / UTM zone 50S",9001,4211,16150,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +21291,"Barbados 1938 / British West Indies Grid",9001,4212,19942,9807,1,0,4400,8801,0,9102,8802,-62,9102,8805,0.9995,9201,8806,400000,9001,8807,0,9001,,,,,,,,,,,,, +21292,"Barbados 1938 / Barbados National Grid",9001,4212,19943,9807,1,0,4400,8801,13.1035,9110,8802,-59.3335,9110,8805,0.9999986,9201,8806,30000,9001,8807,75000,9001,,,,,,,,,,,,, +21413,"Beijing 1954 / Gauss-Kruger zone 13",9001,4214,16213,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +21414,"Beijing 1954 / Gauss-Kruger zone 14",9001,4214,16214,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +21415,"Beijing 1954 / Gauss-Kruger zone 15",9001,4214,16215,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +21416,"Beijing 1954 / Gauss-Kruger zone 16",9001,4214,16216,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,16500000,9001,8807,0,9001,,,,,,,,,,,,, +21417,"Beijing 1954 / Gauss-Kruger zone 17",9001,4214,16217,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,17500000,9001,8807,0,9001,,,,,,,,,,,,, +21418,"Beijing 1954 / Gauss-Kruger zone 18",9001,4214,16218,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,18500000,9001,8807,0,9001,,,,,,,,,,,,, +21419,"Beijing 1954 / Gauss-Kruger zone 19",9001,4214,16219,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +21420,"Beijing 1954 / Gauss-Kruger zone 20",9001,4214,16220,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,20500000,9001,8807,0,9001,,,,,,,,,,,,, +21421,"Beijing 1954 / Gauss-Kruger zone 21",9001,4214,16221,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,21500000,9001,8807,0,9001,,,,,,,,,,,,, +21422,"Beijing 1954 / Gauss-Kruger zone 22",9001,4214,16222,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,22500000,9001,8807,0,9001,,,,,,,,,,,,, +21423,"Beijing 1954 / Gauss-Kruger zone 23",9001,4214,16223,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,23500000,9001,8807,0,9001,,,,,,,,,,,,, +21453,"Beijing 1954 / Gauss-Kruger CM 75E",9001,4214,16313,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21454,"Beijing 1954 / Gauss-Kruger CM 81E",9001,4214,16314,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21455,"Beijing 1954 / Gauss-Kruger CM 87E",9001,4214,16315,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21456,"Beijing 1954 / Gauss-Kruger CM 93E",9001,4214,16316,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21457,"Beijing 1954 / Gauss-Kruger CM 99E",9001,4214,16317,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21458,"Beijing 1954 / Gauss-Kruger CM 105E",9001,4214,16318,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21459,"Beijing 1954 / Gauss-Kruger CM 111E",9001,4214,16319,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21460,"Beijing 1954 / Gauss-Kruger CM 117E",9001,4214,16320,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21461,"Beijing 1954 / Gauss-Kruger CM 123E",9001,4214,16321,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21462,"Beijing 1954 / Gauss-Kruger CM 129E",9001,4214,16322,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21463,"Beijing 1954 / Gauss-Kruger CM 135E",9001,4214,16323,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21473,"Beijing 1954 / Gauss-Kruger 13N",9001,4214,16313,9807,1,1,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21474,"Beijing 1954 / Gauss-Kruger 14N",9001,4214,16314,9807,1,1,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21475,"Beijing 1954 / Gauss-Kruger 15N",9001,4214,16315,9807,1,1,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21476,"Beijing 1954 / Gauss-Kruger 16N",9001,4214,16316,9807,1,1,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21477,"Beijing 1954 / Gauss-Kruger 17N",9001,4214,16317,9807,1,1,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21478,"Beijing 1954 / Gauss-Kruger 18N",9001,4214,16318,9807,1,1,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21479,"Beijing 1954 / Gauss-Kruger 19N",9001,4214,16319,9807,1,1,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21480,"Beijing 1954 / Gauss-Kruger 20N",9001,4214,16320,9807,1,1,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21481,"Beijing 1954 / Gauss-Kruger 21N",9001,4214,16321,9807,1,1,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21482,"Beijing 1954 / Gauss-Kruger 22N",9001,4214,16322,9807,1,1,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21483,"Beijing 1954 / Gauss-Kruger 23N",9001,4214,16323,9807,1,1,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21500,"Belge 1950 (Brussels) / Belge Lambert 50",9001,4809,19901,9802,1,0,4499,8821,90,9110,8822,0,9110,8823,49.5,9110,8824,51.1,9110,8826,150000,9001,8827,5400000,9001,,,,,,,,,, +21780,"Bern 1898 (Bern) / LV03C",9001,4801,19923,9815,1,0,4498,8811,46.570866,9110,8812,0,9110,8813,90,9110,8814,90,9110,8815,1,9201,8816,0,9001,8817,0,9001,,,,,,, +21781,"CH1903 / LV03",9001,4149,19922,9815,1,0,4498,8811,46.570866,9110,8812,7.26225,9110,8813,90,9110,8814,90,9110,8815,1,9201,8816,600000,9001,8817,200000,9001,,,,,,, +21782,"CH1903 / LV03C-G",9001,4149,19841,9815,1,0,4498,8811,46.570866,9110,8812,7.26225,9110,8813,90,9110,8814,90,9110,8815,1,9201,8816,0,9001,8817,0,9001,,,,,,, +21817,"Bogota 1975 / UTM zone 17N",9001,4218,16017,9807,1,1,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21818,"Bogota 1975 / UTM zone 18N",9001,4218,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +21891,"Bogota 1975 / Colombia West zone",9001,4218,18051,9807,1,1,4499,8801,4.355657,9110,8802,-77.04513,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +21892,"Bogota 1975 / Colombia Bogota zone",9001,4218,18052,9807,1,1,4499,8801,4.355657,9110,8802,-74.04513,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +21893,"Bogota 1975 / Colombia East Central zone",9001,4218,18053,9807,1,1,4499,8801,4.355657,9110,8802,-71.04513,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +21894,"Bogota 1975 / Colombia East",9001,4218,18054,9807,1,1,4499,8801,4.355657,9110,8802,-68.04513,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +21896,"Bogota 1975 / Colombia West zone",9001,4218,18051,9807,1,0,4530,8801,4.355657,9110,8802,-77.04513,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +21897,"Bogota 1975 / Colombia Bogota zone",9001,4218,18052,9807,1,0,4530,8801,4.355657,9110,8802,-74.04513,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +21898,"Bogota 1975 / Colombia East Central zone",9001,4218,18053,9807,1,0,4530,8801,4.355657,9110,8802,-71.04513,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +21899,"Bogota 1975 / Colombia East",9001,4218,18054,9807,1,0,4530,8801,4.355657,9110,8802,-68.04513,9110,8805,1,9201,8806,1000000,9001,8807,1000000,9001,,,,,,,,,,,,, +22032,"Camacupa / UTM zone 32S",9001,4220,16132,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22033,"Camacupa / UTM zone 33S",9001,4220,16133,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22091,"Camacupa / TM 11.30 SE",9001,4220,16611,9807,1,0,4400,8801,0,9110,8802,11.3,9110,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22092,"Camacupa / TM 12 SE",9001,4220,16612,9807,1,0,4400,8801,0,9102,8802,12,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22171,"POSGAR 98 / Argentina 1",9001,4190,18031,9807,1,0,4530,8801,-90,9102,8802,-72,9102,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +22172,"POSGAR 98 / Argentina 2",9001,4190,18032,9807,1,0,4530,8801,-90,9102,8802,-69,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +22173,"POSGAR 98 / Argentina 3",9001,4190,18033,9807,1,0,4530,8801,-90,9102,8802,-66,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +22174,"POSGAR 98 / Argentina 4",9001,4190,18034,9807,1,0,4530,8801,-90,9102,8802,-63,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +22175,"POSGAR 98 / Argentina 5",9001,4190,18035,9807,1,0,4530,8801,-90,9102,8802,-60,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +22176,"POSGAR 98 / Argentina 6",9001,4190,18036,9807,1,0,4530,8801,-90,9102,8802,-57,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +22177,"POSGAR 98 / Argentina 7",9001,4190,18037,9807,1,0,4530,8801,-90,9102,8802,-54,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +22181,"POSGAR 94 / Argentina 1",9001,4694,18031,9807,1,0,4530,8801,-90,9102,8802,-72,9102,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +22182,"POSGAR 94 / Argentina 2",9001,4694,18032,9807,1,0,4530,8801,-90,9102,8802,-69,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +22183,"POSGAR 94 / Argentina 3",9001,4694,18033,9807,1,0,4530,8801,-90,9102,8802,-66,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +22184,"POSGAR 94 / Argentina 4",9001,4694,18034,9807,1,0,4530,8801,-90,9102,8802,-63,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +22185,"POSGAR 94 / Argentina 5",9001,4694,18035,9807,1,0,4530,8801,-90,9102,8802,-60,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +22186,"POSGAR 94 / Argentina 6",9001,4694,18036,9807,1,0,4530,8801,-90,9102,8802,-57,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +22187,"POSGAR 94 / Argentina 7",9001,4694,18037,9807,1,0,4530,8801,-90,9102,8802,-54,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +22191,"Campo Inchauspe / Argentina 1",9001,4221,18031,9807,1,0,4530,8801,-90,9102,8802,-72,9102,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +22192,"Campo Inchauspe / Argentina 2",9001,4221,18032,9807,1,0,4530,8801,-90,9102,8802,-69,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +22193,"Campo Inchauspe / Argentina 3",9001,4221,18033,9807,1,0,4530,8801,-90,9102,8802,-66,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +22194,"Campo Inchauspe / Argentina 4",9001,4221,18034,9807,1,0,4530,8801,-90,9102,8802,-63,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +22195,"Campo Inchauspe / Argentina 5",9001,4221,18035,9807,1,0,4530,8801,-90,9102,8802,-60,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +22196,"Campo Inchauspe / Argentina 6",9001,4221,18036,9807,1,0,4530,8801,-90,9102,8802,-57,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +22197,"Campo Inchauspe / Argentina 7",9001,4221,18037,9807,1,0,4530,8801,-90,9102,8802,-54,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +22234,"Cape / UTM zone 34S",9001,4222,16134,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22235,"Cape / UTM zone 35S",9001,4222,16135,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22236,"Cape / UTM zone 36S",9001,4222,16136,9807,1,1,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22275,"Cape / Lo15",9001,4222,17515,9808,1,0,6503,8801,0,9102,8802,15,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22277,"Cape / Lo17",9001,4222,17517,9808,1,0,6503,8801,0,9102,8802,17,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22279,"Cape / Lo19",9001,4222,17519,9808,1,0,6503,8801,0,9102,8802,19,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22281,"Cape / Lo21",9001,4222,17521,9808,1,0,6503,8801,0,9102,8802,21,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22283,"Cape / Lo23",9001,4222,17523,9808,1,0,6503,8801,0,9102,8802,23,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22285,"Cape / Lo25",9001,4222,17525,9808,1,0,6503,8801,0,9102,8802,25,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22287,"Cape / Lo27",9001,4222,17527,9808,1,0,6503,8801,0,9102,8802,27,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22289,"Cape / Lo29",9001,4222,17529,9808,1,0,6503,8801,0,9102,8802,29,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22291,"Cape / Lo31",9001,4222,17531,9808,1,0,6503,8801,0,9102,8802,31,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22293,"Cape / Lo33",9001,4222,17533,9808,1,0,6503,8801,0,9102,8802,33,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22300,"Carthage (Paris) / Tunisia Mining Grid",9036,4816,19937,9816,1,0,4406,8821,36.5964,9105,8822,7.83445,9105,8826,270,9036,8827,360,9036,,,,,,,,,,,,,,,, +22332,"Carthage / UTM zone 32N",9001,4223,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +22391,"Carthage / Nord Tunisie",9001,4223,18181,9801,1,0,4499,8801,40,9105,8802,11,9105,8805,0.999625544,9201,8806,500000,9001,8807,300000,9001,,,,,,,,,,,,, +22392,"Carthage / Sud Tunisie",9001,4223,18182,9801,1,0,4499,8801,37,9105,8802,11,9105,8805,0.999625769,9201,8806,500000,9001,8807,300000,9001,,,,,,,,,,,,, +22521,"Corrego Alegre 1970-72 / UTM zone 21S",9001,4225,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22522,"Corrego Alegre 1970-72 / UTM zone 22S",9001,4225,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22523,"Corrego Alegre 1970-72 / UTM zone 23S",9001,4225,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22524,"Corrego Alegre 1970-72 / UTM zone 24S",9001,4225,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22525,"Corrego Alegre 1970-72 / UTM zone 25S",9001,4225,16125,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +22700,"Deir ez Zor / Levant Zone",9001,4227,19940,9817,1,0,4499,8801,34.39,9110,8802,37.21,9110,8805,0.9996256,9201,8806,300000,9001,8807,300000,9001,,,,,,,,,,,,, +22770,"Deir ez Zor / Syria Lambert",9001,4227,19948,9801,1,0,4499,8801,34.39,9110,8802,37.21,9110,8805,0.9996256,9201,8806,300000,9001,8807,300000,9001,,,,,,,,,,,,, +22780,"Deir ez Zor / Levant Stereographic",9001,4227,19949,9809,1,0,4499,8801,38,9105,8802,43.5,9105,8805,0.9995341,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +22832,"Douala / UTM zone 32N",9001,4228,16032,9807,1,1,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +22991,"Egypt 1907 / Blue Belt",9001,4229,18071,9807,1,0,4400,8801,30,9102,8802,35,9102,8805,1,9201,8806,300000,9001,8807,1100000,9001,,,,,,,,,,,,, +22992,"Egypt 1907 / Red Belt",9001,4229,18072,9807,1,0,4400,8801,30,9102,8802,31,9102,8805,1,9201,8806,615000,9001,8807,810000,9001,,,,,,,,,,,,, +22993,"Egypt 1907 / Purple Belt",9001,4229,18073,9807,1,0,4400,8801,30,9102,8802,27,9102,8805,1,9201,8806,700000,9001,8807,200000,9001,,,,,,,,,,,,, +22994,"Egypt 1907 / Extended Purple Belt",9001,4229,18074,9807,1,0,4400,8801,30,9102,8802,27,9102,8805,1,9201,8806,700000,9001,8807,1200000,9001,,,,,,,,,,,,, +23028,"ED50 / UTM zone 28N",9001,4230,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23029,"ED50 / UTM zone 29N",9001,4230,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23030,"ED50 / UTM zone 30N",9001,4230,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23031,"ED50 / UTM zone 31N",9001,4230,16031,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23032,"ED50 / UTM zone 32N",9001,4230,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23033,"ED50 / UTM zone 33N",9001,4230,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23034,"ED50 / UTM zone 34N",9001,4230,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23035,"ED50 / UTM zone 35N",9001,4230,16035,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23036,"ED50 / UTM zone 36N",9001,4230,16036,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23037,"ED50 / UTM zone 37N",9001,4230,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23038,"ED50 / UTM zone 38N",9001,4230,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23090,"ED50 / TM 0 N",9001,4230,16400,9807,1,0,4400,8801,0,9102,8802,0,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23095,"ED50 / TM 5 NE",9001,4230,16405,9807,1,0,4400,8801,0,9102,8802,5,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23239,"Fahud / UTM zone 39N",9001,4232,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23240,"Fahud / UTM zone 40N",9001,4232,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23433,"Garoua / UTM zone 33N",9001,4234,16033,9807,1,1,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23700,"HD72 / EOV",9001,4237,19931,9815,1,0,4498,8811,47.08398174,9110,8812,19.02548584,9110,8813,90,9110,8814,90,9110,8815,0.99993,9201,8816,650000,9001,8817,200000,9001,,,,,,, +23830,"DGN95 / Indonesia TM-3 zone 46.2",9001,4755,17432,9807,1,0,4499,8801,0,9102,8802,94.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23831,"DGN95 / Indonesia TM-3 zone 47.1",9001,4755,17433,9807,1,0,4499,8801,0,9102,8802,97.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23832,"DGN95 / Indonesia TM-3 zone 47.2",9001,4755,17434,9807,1,0,4499,8801,0,9102,8802,100.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23833,"DGN95 / Indonesia TM-3 zone 48.1",9001,4755,17435,9807,1,0,4499,8801,0,9102,8802,103.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23834,"DGN95 / Indonesia TM-3 zone 48.2",9001,4755,17436,9807,1,0,4499,8801,0,9102,8802,106.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23835,"DGN95 / Indonesia TM-3 zone 49.1",9001,4755,17437,9807,1,0,4499,8801,0,9102,8802,109.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23836,"DGN95 / Indonesia TM-3 zone 49.2",9001,4755,17438,9807,1,0,4499,8801,0,9102,8802,112.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23837,"DGN95 / Indonesia TM-3 zone 50.1",9001,4755,17439,9807,1,0,4499,8801,0,9102,8802,115.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23838,"DGN95 / Indonesia TM-3 zone 50.2",9001,4755,17440,9807,1,0,4499,8801,0,9102,8802,118.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23839,"DGN95 / Indonesia TM-3 zone 51.1",9001,4755,17441,9807,1,0,4499,8801,0,9102,8802,121.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23840,"DGN95 / Indonesia TM-3 zone 51.2",9001,4755,17442,9807,1,0,4499,8801,0,9102,8802,124.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23841,"DGN95 / Indonesia TM-3 zone 52.1",9001,4755,17443,9807,1,0,4499,8801,0,9102,8802,127.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23842,"DGN95 / Indonesia TM-3 zone 52.2",9001,4755,17444,9807,1,0,4499,8801,0,9102,8802,130.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23843,"DGN95 / Indonesia TM-3 zone 53.1",9001,4755,17445,9807,1,0,4499,8801,0,9102,8802,133.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23844,"DGN95 / Indonesia TM-3 zone 53.2",9001,4755,17446,9807,1,0,4499,8801,0,9102,8802,136.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23845,"DGN95 / Indonesia TM-3 zone 54.1",9001,4755,17447,9807,1,0,4499,8801,0,9102,8802,139.5,9102,8805,0.9999,9201,8806,200000,9001,8807,1500000,9001,,,,,,,,,,,,, +23846,"ID74 / UTM zone 46N",9001,4238,16046,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23847,"ID74 / UTM zone 47N",9001,4238,16047,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23848,"ID74 / UTM zone 48N",9001,4238,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23849,"ID74 / UTM zone 49N",9001,4238,16049,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23850,"ID74 / UTM zone 50N",9001,4238,16050,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23851,"ID74 / UTM zone 51N",9001,4238,16051,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23852,"ID74 / UTM zone 52N",9001,4238,16052,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23853,"ID74 / UTM zone 53N",9001,4238,16053,9807,1,1,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23866,"DGN95 / UTM zone 46N",9001,4755,16046,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23867,"DGN95 / UTM zone 47N",9001,4755,16047,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23868,"DGN95 / UTM zone 48N",9001,4755,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23869,"DGN95 / UTM zone 49N",9001,4755,16049,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23870,"DGN95 / UTM zone 50N",9001,4755,16050,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23871,"DGN95 / UTM zone 51N",9001,4755,16051,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23872,"DGN95 / UTM zone 52N",9001,4755,16052,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23877,"DGN95 / UTM zone 47S",9001,4755,16147,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23878,"DGN95 / UTM zone 48S",9001,4755,16148,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23879,"DGN95 / UTM zone 49S",9001,4755,16149,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23880,"DGN95 / UTM zone 50S",9001,4755,16150,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23881,"DGN95 / UTM zone 51S",9001,4755,16151,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23882,"DGN95 / UTM zone 52S",9001,4755,16152,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23883,"DGN95 / UTM zone 53S",9001,4755,16153,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23884,"DGN95 / UTM zone 54S",9001,4755,16154,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23886,"ID74 / UTM zone 46S",9001,4238,16146,9807,1,1,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23887,"ID74 / UTM zone 47S",9001,4238,16147,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23888,"ID74 / UTM zone 48S",9001,4238,16148,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23889,"ID74 / UTM zone 49S",9001,4238,16149,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23890,"ID74 / UTM zone 50S",9001,4238,16150,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23891,"ID74 / UTM zone 51S",9001,4238,16151,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23892,"ID74 / UTM zone 52S",9001,4238,16152,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23893,"ID74 / UTM zone 53S",9001,4238,16153,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23894,"ID74 / UTM zone 54S",9001,4238,16154,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +23946,"Indian 1954 / UTM zone 46N",9001,4239,16046,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23947,"Indian 1954 / UTM zone 47N",9001,4239,16047,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +23948,"Indian 1954 / UTM zone 48N",9001,4239,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24047,"Indian 1975 / UTM zone 47N",9001,4240,16047,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24048,"Indian 1975 / UTM zone 48N",9001,4240,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24100,"Jamaica 1875 / Jamaica (Old Grid)",9005,4241,19909,9801,1,0,4403,8801,18,9102,8802,-77,9102,8805,1,9201,8806,550000,9005,8807,400000,9005,,,,,,,,,,,,, +24200,"JAD69 / Jamaica National Grid",9001,4242,19910,9801,1,0,4400,8801,18,9102,8802,-77,9102,8805,1,9201,8806,250000,9001,8807,150000,9001,,,,,,,,,,,,, +24305,"Kalianpur 1937 / UTM zone 45N",9001,4144,16045,9807,1,0,4400,8801,0,9102,8802,87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24306,"Kalianpur 1937 / UTM zone 46N",9001,4144,16046,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24311,"Kalianpur 1962 / UTM zone 41N",9001,4145,16041,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24312,"Kalianpur 1962 / UTM zone 42N",9001,4145,16042,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24313,"Kalianpur 1962 / UTM zone 43N",9001,4145,16043,9807,1,0,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24342,"Kalianpur 1975 / UTM zone 42N",9001,4146,16042,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24343,"Kalianpur 1975 / UTM zone 43N",9001,4146,16043,9807,1,0,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24344,"Kalianpur 1975 / UTM zone 44N",9001,4146,16044,9807,1,0,4400,8801,0,9102,8802,81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24345,"Kalianpur 1975 / UTM zone 45N",9001,4146,16045,9807,1,0,4400,8801,0,9102,8802,87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24346,"Kalianpur 1975 / UTM zone 46N",9001,4146,16046,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24347,"Kalianpur 1975 / UTM zone 47N",9001,4146,16047,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24370,"Kalianpur 1880 / India zone 0",9084,4243,18110,9801,1,0,4408,8801,39.3,9110,8802,68,9110,8805,0.99846154,9201,8806,2355500,9084,8807,2590000,9084,,,,,,,,,,,,, +24371,"Kalianpur 1880 / India zone I",9084,4243,18111,9801,1,0,4408,8801,32.3,9110,8802,68,9110,8805,0.99878641,9201,8806,3000000,9084,8807,1000000,9084,,,,,,,,,,,,, +24372,"Kalianpur 1880 / India zone IIa",9084,4243,18112,9801,1,0,4408,8801,26,9102,8802,74,9102,8805,0.99878641,9201,8806,3000000,9084,8807,1000000,9084,,,,,,,,,,,,, +24373,"Kalianpur 1880 / India zone IIIa",9084,4243,18114,9801,1,0,4408,8801,19,9102,8802,80,9102,8805,0.99878641,9201,8806,3000000,9084,8807,1000000,9084,,,,,,,,,,,,, +24374,"Kalianpur 1880 / India zone IVa",9084,4243,18116,9801,1,0,4408,8801,12,9102,8802,80,9102,8805,0.99878641,9201,8806,3000000,9084,8807,1000000,9084,,,,,,,,,,,,, +24375,"Kalianpur 1937 / India zone IIb",9001,4144,18238,9801,1,0,4400,8801,26,9102,8802,90,9102,8805,0.99878641,9201,8806,2743185.69,9001,8807,914395.23,9001,,,,,,,,,,,,, +24376,"Kalianpur 1962 / India zone I",9001,4145,18236,9801,1,0,4400,8801,32.3,9110,8802,68,9110,8805,0.99878641,9201,8806,2743196.4,9001,8807,914398.8,9001,,,,,,,,,,,,, +24377,"Kalianpur 1962 / India zone IIa",9001,4145,18237,9801,1,0,4400,8801,26,9102,8802,74,9102,8805,0.99878641,9201,8806,2743196.4,9001,8807,914398.8,9001,,,,,,,,,,,,, +24378,"Kalianpur 1975 / India zone I",9001,4146,18231,9801,1,0,4400,8801,32.3,9110,8802,68,9110,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,,,,,,,, +24379,"Kalianpur 1975 / India zone IIa",9001,4146,18232,9801,1,0,4400,8801,26,9102,8802,74,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,,,,,,,, +24380,"Kalianpur 1975 / India zone IIb",9001,4146,18235,9801,1,0,4400,8801,26,9102,8802,90,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,,,,,,,, +24381,"Kalianpur 1975 / India zone IIIa",9001,4146,18233,9801,1,0,4400,8801,19,9102,8802,80,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,,,,,,,, +24382,"Kalianpur 1880 / India zone IIb",9084,4243,18113,9801,1,0,4408,8801,26,9102,8802,90,9102,8805,0.99878641,9201,8806,3000000,9084,8807,1000000,9084,,,,,,,,,,,,, +24383,"Kalianpur 1975 / India zone IVa",9001,4146,18234,9801,1,0,4400,8801,12,9102,8802,80,9102,8805,0.99878641,9201,8806,2743195.5,9001,8807,914398.5,9001,,,,,,,,,,,,, +24500,"Kertau 1968 / Singapore Grid",9001,4245,19920,9806,1,0,4400,8801,1.1715528,9110,8802,103.5110808,9110,8806,30000,9001,8807,30000,9001,,,,,,,,,,,,,,,, +24547,"Kertau 1968 / UTM zone 47N",9001,4245,16047,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24548,"Kertau 1968 / UTM zone 48N",9001,4245,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24571,"Kertau / R.S.O. Malaya (ch)",9062,4245,19935,9812,1,1,4401,8806,40000,9062,8807,0,9062,8811,4,9110,8812,102.15,9110,8813,323.01328458,9110,8814,323.07483685,9110,8815,0.99984,9201,,,,,,, +24600,KOC Lambert,9001,4246,19906,9801,1,0,4400,8801,32.3,9110,8802,45,9110,8805,0.9987864078,9201,8806,1500000,9001,8807,1166200,9001,,,,,,,,,,,,, +24718,"La Canoa / UTM zone 18N",9001,4247,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24719,"La Canoa / UTM zone 19N",9001,4247,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24720,"La Canoa / UTM zone 20N",9001,4247,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24817,"PSAD56 / UTM zone 17N",9001,4248,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24818,"PSAD56 / UTM zone 18N",9001,4248,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24819,"PSAD56 / UTM zone 19N",9001,4248,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24820,"PSAD56 / UTM zone 20N",9001,4248,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24821,"PSAD56 / UTM zone 21N",9001,4248,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +24877,"PSAD56 / UTM zone 17S",9001,4248,16117,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +24878,"PSAD56 / UTM zone 18S",9001,4248,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +24879,"PSAD56 / UTM zone 19S",9001,4248,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +24880,"PSAD56 / UTM zone 20S",9001,4248,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +24881,"PSAD56 / UTM zone 21S",9001,4248,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +24882,"PSAD56 / UTM zone 22S",9001,4248,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +24891,"PSAD56 / Peru west zone",9001,4248,18161,9807,1,0,4499,8801,-6,9110,8802,-80.3,9110,8805,0.99983008,9201,8806,222000,9001,8807,1426834.743,9001,,,,,,,,,,,,, +24892,"PSAD56 / Peru central zone",9001,4248,18162,9807,1,0,4499,8801,-9.3,9110,8802,-76,9110,8805,0.99932994,9201,8806,720000,9001,8807,1039979.159,9001,,,,,,,,,,,,, +24893,"PSAD56 / Peru east zone",9001,4248,18163,9807,1,0,4499,8801,-9.3,9110,8802,-70.3,9110,8805,0.99952992,9201,8806,1324000,9001,8807,1040084.558,9001,,,,,,,,,,,,, +25000,"Leigon / Ghana Metre Grid",9001,4250,19904,9807,1,0,4400,8801,4.4,9110,8802,-1,9110,8805,0.99975,9201,8806,274319.51,9001,8807,0,9001,,,,,,,,,,,,, +25231,"Lome / UTM zone 31N",9001,4252,16031,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25391,"Luzon 1911 / Philippines zone I",9001,4253,18171,9807,1,0,4499,8801,0,9102,8802,117,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25392,"Luzon 1911 / Philippines zone II",9001,4253,18172,9807,1,0,4499,8801,0,9102,8802,119,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25393,"Luzon 1911 / Philippines zone III",9001,4253,18173,9807,1,0,4499,8801,0,9102,8802,121,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25394,"Luzon 1911 / Philippines zone IV",9001,4253,18174,9807,1,0,4499,8801,0,9102,8802,123,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25395,"Luzon 1911 / Philippines zone V",9001,4253,18175,9807,1,0,4499,8801,0,9102,8802,125,9102,8805,0.99995,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25700,"Makassar (Jakarta) / NEIEZ",9001,4804,19905,9804,1,1,4499,8801,0,9102,8802,110,9102,8805,0.997,9201,8806,3900000,9001,8807,900000,9001,,,,,,,,,,,,, +25828,"ETRS89 / UTM zone 28N",9001,4258,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25829,"ETRS89 / UTM zone 29N",9001,4258,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25830,"ETRS89 / UTM zone 30N",9001,4258,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25831,"ETRS89 / UTM zone 31N",9001,4258,16031,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25832,"ETRS89 / UTM zone 32N",9001,4258,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25833,"ETRS89 / UTM zone 33N",9001,4258,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25834,"ETRS89 / UTM zone 34N",9001,4258,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25835,"ETRS89 / UTM zone 35N",9001,4258,16035,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25836,"ETRS89 / UTM zone 36N",9001,4258,16036,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25837,"ETRS89 / UTM zone 37N",9001,4258,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25838,"ETRS89 / UTM zone 38N",9001,4258,16038,9807,1,1,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25884,"ETRS89 / TM Baltic93",9001,4258,19939,9807,1,0,4530,8801,0,9102,8802,24,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +25932,"Malongo 1987 / UTM zone 32S",9001,4259,16132,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +26191,"Merchich / Nord Maroc",9001,4261,18131,9801,1,0,4499,8801,37,9105,8802,-6,9105,8805,0.999625769,9201,8806,500000,9001,8807,300000,9001,,,,,,,,,,,,, +26192,"Merchich / Sud Maroc",9001,4261,18132,9801,1,0,4499,8801,33,9105,8802,-6,9105,8805,0.999615596,9201,8806,500000,9001,8807,300000,9001,,,,,,,,,,,,, +26193,"Merchich / Sahara",9001,4261,18133,9801,1,1,4499,8801,29,9105,8802,-6,9105,8805,0.9996,9201,8806,1200000,9001,8807,400000,9001,,,,,,,,,,,,, +26194,"Merchich / Sahara Nord",9001,4261,18134,9801,1,0,4499,8801,29,9105,8802,-6,9105,8805,0.999616304,9201,8806,1200000,9001,8807,400000,9001,,,,,,,,,,,,, +26195,"Merchich / Sahara Sud",9001,4261,18135,9801,1,0,4499,8801,25,9105,8802,-6,9105,8805,0.999616437,9201,8806,1500000,9001,8807,400000,9001,,,,,,,,,,,,, +26237,"Massawa / UTM zone 37N",9001,4262,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26331,"Minna / UTM zone 31N",9001,4263,16031,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26332,"Minna / UTM zone 32N",9001,4263,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26391,"Minna / Nigeria West Belt",9001,4263,18151,9807,1,0,4400,8801,4,9110,8802,4.3,9110,8805,0.99975,9201,8806,230738.26,9001,8807,0,9001,,,,,,,,,,,,, +26392,"Minna / Nigeria Mid Belt",9001,4263,18152,9807,1,0,4400,8801,4,9110,8802,8.3,9110,8805,0.99975,9201,8806,670553.98,9001,8807,0,9001,,,,,,,,,,,,, +26393,"Minna / Nigeria East Belt",9001,4263,18153,9807,1,0,4400,8801,4,9110,8802,12.3,9110,8805,0.99975,9201,8806,1110369.7,9001,8807,0,9001,,,,,,,,,,,,, +26432,"Mhast / UTM zone 32S",9001,4264,16132,9807,1,1,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +26591,"Monte Mario (Rome) / Italy zone 1",9001,4806,18121,9807,1,1,4499,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +26592,"Monte Mario (Rome) / Italy zone 2",9001,4806,18122,9807,1,1,4499,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,2520000,9001,8807,0,9001,,,,,,,,,,,,, +26632,"M'poraloko / UTM zone 32N",9001,4266,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26692,"M'poraloko / UTM zone 32S",9001,4266,16132,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +26701,"NAD27 / UTM zone 1N",9001,4267,16001,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26702,"NAD27 / UTM zone 2N",9001,4267,16002,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26703,"NAD27 / UTM zone 3N",9001,4267,16003,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26704,"NAD27 / UTM zone 4N",9001,4267,16004,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26705,"NAD27 / UTM zone 5N",9001,4267,16005,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26706,"NAD27 / UTM zone 6N",9001,4267,16006,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26707,"NAD27 / UTM zone 7N",9001,4267,16007,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26708,"NAD27 / UTM zone 8N",9001,4267,16008,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26709,"NAD27 / UTM zone 9N",9001,4267,16009,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26710,"NAD27 / UTM zone 10N",9001,4267,16010,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26711,"NAD27 / UTM zone 11N",9001,4267,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26712,"NAD27 / UTM zone 12N",9001,4267,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26713,"NAD27 / UTM zone 13N",9001,4267,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26714,"NAD27 / UTM zone 14N",9001,4267,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26715,"NAD27 / UTM zone 15N",9001,4267,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26716,"NAD27 / UTM zone 16N",9001,4267,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26717,"NAD27 / UTM zone 17N",9001,4267,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26718,"NAD27 / UTM zone 18N",9001,4267,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26719,"NAD27 / UTM zone 19N",9001,4267,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26720,"NAD27 / UTM zone 20N",9001,4267,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26721,"NAD27 / UTM zone 21N",9001,4267,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26722,"NAD27 / UTM zone 22N",9001,4267,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26729,"NAD27 / Alabama East",9003,4267,10101,9807,1,0,4497,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26730,"NAD27 / Alabama West",9003,4267,10102,9807,1,0,4497,8801,30,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26731,"NAD27 / Alaska zone 1",9003,4267,15001,9812,1,0,4497,8806,16404166.67,9003,8807,-16404166.67,9003,8811,57,9110,8812,-133.4,9110,8813,323.07483685,9110,8814,323.07483685,9110,8815,0.9999,9201,,,,,,, +26732,"NAD27 / Alaska zone 2",9003,4267,15002,9807,1,0,4497,8801,54,9102,8802,-142,9102,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26733,"NAD27 / Alaska zone 3",9003,4267,15003,9807,1,0,4497,8801,54,9102,8802,-146,9102,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26734,"NAD27 / Alaska zone 4",9003,4267,15004,9807,1,0,4497,8801,54,9102,8802,-150,9102,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26735,"NAD27 / Alaska zone 5",9003,4267,15005,9807,1,0,4497,8801,54,9102,8802,-154,9102,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26736,"NAD27 / Alaska zone 6",9003,4267,15006,9807,1,0,4497,8801,54,9102,8802,-158,9102,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26737,"NAD27 / Alaska zone 7",9003,4267,15007,9807,1,0,4497,8801,54,9102,8802,-162,9102,8805,0.9999,9201,8806,700000,9003,8807,0,9003,,,,,,,,,,,,, +26738,"NAD27 / Alaska zone 8",9003,4267,15008,9807,1,0,4497,8801,54,9102,8802,-166,9102,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26739,"NAD27 / Alaska zone 9",9003,4267,15009,9807,1,0,4497,8801,54,9102,8802,-170,9102,8805,0.9999,9201,8806,600000,9003,8807,0,9003,,,,,,,,,,,,, +26740,"NAD27 / Alaska zone 10",9003,4267,15010,9802,1,0,4497,8821,51,9110,8822,-176,9110,8823,53.5,9110,8824,51.5,9110,8826,3000000,9003,8827,0,9003,,,,,,,,,, +26741,"NAD27 / California zone I",9003,4267,10401,9802,1,0,4497,8821,39.2,9110,8822,-122,9110,8823,41.4,9110,8824,40,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26742,"NAD27 / California zone II",9003,4267,10402,9802,1,0,4497,8821,37.4,9110,8822,-122,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26743,"NAD27 / California zone III",9003,4267,10403,9802,1,0,4497,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26744,"NAD27 / California zone IV",9003,4267,10404,9802,1,0,4497,8821,35.2,9110,8822,-119,9110,8823,37.15,9110,8824,36,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26745,"NAD27 / California zone V",9003,4267,10405,9802,1,0,4497,8821,33.3,9110,8822,-118,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26746,"NAD27 / California zone VI",9003,4267,10406,9802,1,0,4497,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26747,"NAD27 / California zone VII",9003,4267,10407,9802,1,1,4497,8821,34.08,9110,8822,-118.2,9110,8823,34.25,9110,8824,33.52,9110,8826,4186692.58,9003,8827,416926.74,9003,,,,,,,,,, +26748,"NAD27 / Arizona East",9003,4267,10201,9807,1,0,4497,8801,31,9110,8802,-110.1,9110,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26749,"NAD27 / Arizona Central",9003,4267,10202,9807,1,0,4497,8801,31,9110,8802,-111.55,9110,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26750,"NAD27 / Arizona West",9003,4267,10203,9807,1,0,4497,8801,31,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26751,"NAD27 / Arkansas North",9003,4267,10301,9802,1,0,4497,8821,34.2,9110,8822,-92,9110,8823,36.14,9110,8824,34.56,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26752,"NAD27 / Arkansas South",9003,4267,10302,9802,1,0,4497,8821,32.4,9110,8822,-92,9110,8823,34.46,9110,8824,33.18,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26753,"NAD27 / Colorado North",9003,4267,10501,9802,1,0,4497,8821,39.2,9110,8822,-105.3,9110,8823,39.43,9110,8824,40.47,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26754,"NAD27 / Colorado Central",9003,4267,10502,9802,1,0,4497,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26755,"NAD27 / Colorado South",9003,4267,10503,9802,1,0,4497,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26756,"NAD27 / Connecticut",9003,4267,10600,9802,1,0,4497,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,600000,9003,8827,0,9003,,,,,,,,,, +26757,"NAD27 / Delaware",9003,4267,10700,9807,1,0,4497,8801,38,9110,8802,-75.25,9110,8805,0.999995,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26758,"NAD27 / Florida East",9003,4267,10901,9807,1,0,4497,8801,24.2,9110,8802,-81,9110,8805,0.999941177,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26759,"NAD27 / Florida West",9003,4267,10902,9807,1,0,4497,8801,24.2,9110,8802,-82,9110,8805,0.999941177,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26760,"NAD27 / Florida North",9003,4267,10903,9802,1,0,4497,8821,29,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26766,"NAD27 / Georgia East",9003,4267,11001,9807,1,0,4497,8801,30,9110,8802,-82.1,9110,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26767,"NAD27 / Georgia West",9003,4267,11002,9807,1,0,4497,8801,30,9110,8802,-84.1,9110,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26768,"NAD27 / Idaho East",9003,4267,11101,9807,1,0,4497,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26769,"NAD27 / Idaho Central",9003,4267,11102,9807,1,0,4497,8801,41.4,9110,8802,-114,9110,8805,0.999947368,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26770,"NAD27 / Idaho West",9003,4267,11103,9807,1,0,4497,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26771,"NAD27 / Illinois East",9003,4267,11201,9807,1,0,4497,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26772,"NAD27 / Illinois West",9003,4267,11202,9807,1,0,4497,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26773,"NAD27 / Indiana East",9003,4267,11301,9807,1,0,4497,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26774,"NAD27 / Indiana West",9003,4267,11302,9807,1,0,4497,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26775,"NAD27 / Iowa North",9003,4267,11401,9802,1,0,4497,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26776,"NAD27 / Iowa South",9003,4267,11402,9802,1,0,4497,8821,40,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26777,"NAD27 / Kansas North",9003,4267,11501,9802,1,0,4497,8821,38.2,9110,8822,-98,9110,8823,39.47,9110,8824,38.43,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26778,"NAD27 / Kansas South",9003,4267,11502,9802,1,0,4497,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26779,"NAD27 / Kentucky North",9003,4267,11601,9802,1,0,4497,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,38.58,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26780,"NAD27 / Kentucky South",9003,4267,11602,9802,1,0,4497,8821,36.2,9110,8822,-85.45,9110,8823,36.44,9110,8824,37.56,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26781,"NAD27 / Louisiana North",9003,4267,11701,9802,1,0,4497,8821,30.4,9110,8822,-92.3,9110,8823,31.1,9110,8824,32.4,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26782,"NAD27 / Louisiana South",9003,4267,11702,9802,1,0,4497,8821,28.4,9110,8822,-91.2,9110,8823,29.18,9110,8824,30.42,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26783,"NAD27 / Maine East",9003,4267,11801,9807,1,0,4497,8801,43.5,9110,8802,-68.3,9110,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26784,"NAD27 / Maine West",9003,4267,11802,9807,1,0,4497,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26785,"NAD27 / Maryland",9003,4267,11900,9802,1,0,4497,8821,37.5,9110,8822,-77,9110,8823,38.18,9110,8824,39.27,9110,8826,800000,9003,8827,0,9003,,,,,,,,,, +26786,"NAD27 / Massachusetts Mainland",9003,4267,12001,9802,1,0,4497,8821,41,9110,8822,-71.3,9110,8823,41.43,9110,8824,42.41,9110,8826,600000,9003,8827,0,9003,,,,,,,,,, +26787,"NAD27 / Massachusetts Island",9003,4267,12002,9802,1,0,4497,8821,41,9110,8822,-70.3,9110,8823,41.17,9110,8824,41.29,9110,8826,200000,9003,8827,0,9003,,,,,,,,,, +26791,"NAD27 / Minnesota North",9003,4267,12201,9802,1,0,4497,8821,46.3,9110,8822,-93.06,9110,8823,47.02,9110,8824,48.38,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26792,"NAD27 / Minnesota Central",9003,4267,12202,9802,1,0,4497,8821,45,9110,8822,-94.15,9110,8823,45.37,9110,8824,47.03,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26793,"NAD27 / Minnesota South",9003,4267,12203,9802,1,0,4497,8821,43,9110,8822,-94,9110,8823,43.47,9110,8824,45.13,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26794,"NAD27 / Mississippi East",9003,4267,12301,9807,1,0,4497,8801,29.4,9110,8802,-88.5,9110,8805,0.99996,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26795,"NAD27 / Mississippi West",9003,4267,12302,9807,1,0,4497,8801,30.3,9110,8802,-90.2,9110,8805,0.999941177,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26796,"NAD27 / Missouri East",9003,4267,12401,9807,1,0,4497,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26797,"NAD27 / Missouri Central",9003,4267,12402,9807,1,0,4497,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26798,"NAD27 / Missouri West",9003,4267,12403,9807,1,0,4497,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26799,"NAD27 / California zone VII",9003,4267,10408,9802,1,0,4497,8821,34.08,9110,8822,-118.2,9110,8823,34.25,9110,8824,33.52,9110,8826,4186692.58,9003,8827,4160926.74,9003,,,,,,,,,, +26801,"NAD Michigan / Michigan East",9003,4268,12101,9807,1,1,4497,8801,41.3,9110,8802,-83.4,9110,8805,0.999942857,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26802,"NAD Michigan / Michigan Old Central",9003,4268,12102,9807,1,1,4497,8801,41.3,9110,8802,-85.45,9110,8805,0.999909091,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26803,"NAD Michigan / Michigan West",9003,4268,12103,9807,1,1,4497,8801,41.3,9110,8802,-88.45,9110,8805,0.999909091,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +26811,"NAD Michigan / Michigan North",9003,4268,12111,9802,1,1,4497,8821,44.47,9110,8822,-87,9110,8823,45.29,9110,8824,47.05,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26812,"NAD Michigan / Michigan Central",9003,4268,12112,9802,1,1,4497,8821,43.19,9110,8822,-84.2,9110,8823,44.11,9110,8824,45.42,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26813,"NAD Michigan / Michigan South",9003,4268,12113,9802,1,1,4497,8821,41.3,9110,8822,-84.2,9110,8823,42.06,9110,8824,43.4,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +26814,"NAD83 / Maine East (ftUS)",9001,4269,11833,9807,1,1,4499,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +26815,"NAD83 / Maine West (ftUS)",9001,4269,11834,9807,1,1,4499,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,2952750,9003,8807,0,9003,,,,,,,,,,,,, +26819,"NAD83 / Minnesota North (ftUS)",9001,4269,12234,9802,1,1,4499,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26820,"NAD83 / Minnesota Central (ftUS)",9001,4269,12235,9802,1,1,4499,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26821,"NAD83 / Minnesota South (ftUS)",9001,4269,12236,9802,1,1,4499,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26822,"NAD83 / Nebraska (ftUS)",9001,4269,15396,9802,1,1,4499,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +26823,"NAD83 / West Virginia North (ftUS)",9001,4269,14733,9802,1,1,4499,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,1968500,9001,8827,0,9001,,,,,,,,,, +26824,"NAD83 / West Virginia South (ftUS)",9001,4269,14734,9802,1,1,4499,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,1968500,9001,8827,0,9001,,,,,,,,,, +26825,"NAD83(HARN) / Maine East (ftUS)",9001,4152,11833,9807,1,1,4499,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +26826,"NAD83(HARN) / Maine West (ftUS)",9001,4152,11834,9807,1,1,4499,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,2952750,9003,8807,0,9003,,,,,,,,,,,,, +26830,"NAD83(HARN) / Minnesota North (ftUS)",9001,4152,12234,9802,1,1,4499,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26831,"NAD83(HARN) / Minnesota Central (ftUS)",9001,4152,12235,9802,1,1,4499,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26832,"NAD83(HARN) / Minnesota South (ftUS)",9001,4152,12236,9802,1,1,4499,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26833,"NAD83(HARN) / Nebraska (ftUS)",9001,4152,15396,9802,1,1,4499,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +26834,"NAD83(HARN) / West Virginia North (ftUS)",9001,4152,14733,9802,1,1,4499,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,1968500,9001,8827,0,9001,,,,,,,,,, +26835,"NAD83(HARN) / West Virginia South (ftUS)",9001,4152,14734,9802,1,1,4499,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,1968500,9001,8827,0,9001,,,,,,,,,, +26836,"NAD83(NSRS2007) / Maine East (ftUS)",9001,4759,11833,9807,1,1,4499,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +26837,"NAD83(NSRS2007) / Maine West (ftUS)",9001,4759,11834,9807,1,1,4499,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,2952750,9003,8807,0,9003,,,,,,,,,,,,, +26841,"NAD83(NSRS2007) / Minnesota North (ftUS)",9001,4759,12234,9802,1,1,4499,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26842,"NAD83(NSRS2007) / Minnesota Central (ftUS)",9001,4759,12235,9802,1,1,4499,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26843,"NAD83(NSRS2007) / Minnesota South (ftUS)",9001,4759,12236,9802,1,1,4499,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26844,"NAD83(NSRS2007) / Nebraska (ftUS)",9001,4759,15396,9802,1,1,4499,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +26845,"NAD83(NSRS2007) / West Virginia North (ftUS)",9001,4759,14733,9802,1,1,4499,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,1968500,9001,8827,0,9001,,,,,,,,,, +26846,"NAD83(NSRS2007) / West Virginia South (ftUS)",9001,4759,14734,9802,1,1,4499,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,1968500,9001,8827,0,9001,,,,,,,,,, +26847,"NAD83 / Maine East (ftUS)",9003,4269,11833,9807,1,0,4497,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +26848,"NAD83 / Maine West (ftUS)",9003,4269,11834,9807,1,0,4497,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,2952750,9003,8807,0,9003,,,,,,,,,,,,, +26849,"NAD83 / Minnesota North (ftUS)",9003,4269,12234,9802,1,0,4497,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26850,"NAD83 / Minnesota Central (ftUS)",9003,4269,12235,9802,1,0,4497,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26851,"NAD83 / Minnesota South (ftUS)",9003,4269,12236,9802,1,0,4497,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26852,"NAD83 / Nebraska (ftUS)",9003,4269,15396,9802,1,0,4497,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +26853,"NAD83 / West Virginia North (ftUS)",9003,4269,14735,9802,1,0,4497,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +26854,"NAD83 / West Virginia South (ftUS)",9003,4269,14736,9802,1,0,4497,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +26855,"NAD83(HARN) / Maine East (ftUS)",9003,4152,11833,9807,1,0,4497,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +26856,"NAD83(HARN) / Maine West (ftUS)",9003,4152,11834,9807,1,0,4497,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,2952750,9003,8807,0,9003,,,,,,,,,,,,, +26857,"NAD83(HARN) / Minnesota North (ftUS)",9003,4152,12234,9802,1,0,4497,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26858,"NAD83(HARN) / Minnesota Central (ftUS)",9003,4152,12235,9802,1,0,4497,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26859,"NAD83(HARN) / Minnesota South (ftUS)",9003,4152,12236,9802,1,0,4497,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26860,"NAD83(HARN) / Nebraska (ftUS)",9003,4152,15396,9802,1,0,4497,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +26861,"NAD83(HARN) / West Virginia North (ftUS)",9003,4152,14735,9802,1,0,4497,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +26862,"NAD83(HARN) / West Virginia South (ftUS)",9003,4152,14736,9802,1,0,4497,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +26863,"NAD83(NSRS2007) / Maine East (ftUS)",9003,4759,11833,9807,1,0,4497,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,984250,9003,8807,0,9003,,,,,,,,,,,,, +26864,"NAD83(NSRS2007) / Maine West (ftUS)",9003,4759,11834,9807,1,0,4497,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,2952750,9003,8807,0,9003,,,,,,,,,,,,, +26865,"NAD83(NSRS2007) / Minnesota North (ftUS)",9003,4759,12234,9802,1,0,4497,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26866,"NAD83(NSRS2007) / Minnesota Central (ftUS)",9003,4759,12235,9802,1,0,4497,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26867,"NAD83(NSRS2007) / Minnesota South (ftUS)",9003,4759,12236,9802,1,0,4497,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,2624666.6667,9003,8827,328083.3333,9003,,,,,,,,,, +26868,"NAD83(NSRS2007) / Nebraska (ftUS)",9003,4759,15396,9802,1,0,4497,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,1640416.6667,9003,8827,0,9003,,,,,,,,,, +26869,"NAD83(NSRS2007) / West Virginia North (ftUS)",9003,4759,14735,9802,1,0,4497,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +26870,"NAD83(NSRS2007) / West Virginia South (ftUS)",9003,4759,14736,9802,1,0,4497,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,1968500,9003,8827,0,9003,,,,,,,,,, +26891,"NAD83(CSRS) / MTM zone 11",9001,4617,17711,9807,1,0,4400,8801,0,9110,8802,-82.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +26892,"NAD83(CSRS) / MTM zone 12",9001,4617,17712,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +26893,"NAD83(CSRS) / MTM zone 13",9001,4617,17713,9807,1,0,4400,8801,0,9102,8802,-84,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +26894,"NAD83(CSRS) / MTM zone 14",9001,4617,17714,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +26895,"NAD83(CSRS) / MTM zone 15",9001,4617,17715,9807,1,0,4400,8801,0,9102,8802,-90,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +26896,"NAD83(CSRS) / MTM zone 16",9001,4617,17716,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +26897,"NAD83(CSRS) / MTM zone 17",9001,4617,17717,9807,1,0,4400,8801,0,9102,8802,-96,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +26898,"NAD83(CSRS) / MTM zone 1",9001,4617,17701,9807,1,0,4496,8801,0,9102,8802,-53,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +26899,"NAD83(CSRS) / MTM zone 2",9001,4617,17702,9807,1,0,4496,8801,0,9102,8802,-56,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +26901,"NAD83 / UTM zone 1N",9001,4269,16001,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26902,"NAD83 / UTM zone 2N",9001,4269,16002,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26903,"NAD83 / UTM zone 3N",9001,4269,16003,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26904,"NAD83 / UTM zone 4N",9001,4269,16004,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26905,"NAD83 / UTM zone 5N",9001,4269,16005,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26906,"NAD83 / UTM zone 6N",9001,4269,16006,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26907,"NAD83 / UTM zone 7N",9001,4269,16007,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26908,"NAD83 / UTM zone 8N",9001,4269,16008,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26909,"NAD83 / UTM zone 9N",9001,4269,16009,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26910,"NAD83 / UTM zone 10N",9001,4269,16010,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26911,"NAD83 / UTM zone 11N",9001,4269,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26912,"NAD83 / UTM zone 12N",9001,4269,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26913,"NAD83 / UTM zone 13N",9001,4269,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26914,"NAD83 / UTM zone 14N",9001,4269,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26915,"NAD83 / UTM zone 15N",9001,4269,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26916,"NAD83 / UTM zone 16N",9001,4269,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26917,"NAD83 / UTM zone 17N",9001,4269,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26918,"NAD83 / UTM zone 18N",9001,4269,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26919,"NAD83 / UTM zone 19N",9001,4269,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26920,"NAD83 / UTM zone 20N",9001,4269,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26921,"NAD83 / UTM zone 21N",9001,4269,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26922,"NAD83 / UTM zone 22N",9001,4269,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26923,"NAD83 / UTM zone 23N",9001,4269,16023,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26929,"NAD83 / Alabama East",9001,4269,10131,9807,1,0,4499,8801,30.3,9110,8802,-85.5,9110,8805,0.99996,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +26930,"NAD83 / Alabama West",9001,4269,10132,9807,1,0,4499,8801,30,9110,8802,-87.3,9110,8805,0.999933333,9201,8806,600000,9001,8807,0,9001,,,,,,,,,,,,, +26931,"NAD83 / Alaska zone 1",9001,4269,15031,9812,1,0,4499,8806,5000000,9001,8807,-5000000,9001,8811,57,9110,8812,-133.4,9110,8813,323.07483685,9110,8814,323.07483685,9110,8815,0.9999,9201,,,,,,, +26932,"NAD83 / Alaska zone 2",9001,4269,15032,9807,1,0,4499,8801,54,9102,8802,-142,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26933,"NAD83 / Alaska zone 3",9001,4269,15033,9807,1,0,4499,8801,54,9102,8802,-146,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26934,"NAD83 / Alaska zone 4",9001,4269,15034,9807,1,0,4499,8801,54,9102,8802,-150,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26935,"NAD83 / Alaska zone 5",9001,4269,15035,9807,1,0,4499,8801,54,9102,8802,-154,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26936,"NAD83 / Alaska zone 6",9001,4269,15036,9807,1,0,4499,8801,54,9102,8802,-158,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26937,"NAD83 / Alaska zone 7",9001,4269,15037,9807,1,0,4499,8801,54,9102,8802,-162,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26938,"NAD83 / Alaska zone 8",9001,4269,15038,9807,1,0,4499,8801,54,9102,8802,-166,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26939,"NAD83 / Alaska zone 9",9001,4269,15039,9807,1,0,4499,8801,54,9102,8802,-170,9102,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26940,"NAD83 / Alaska zone 10",9001,4269,15040,9802,1,0,4499,8821,51,9110,8822,-176,9110,8823,53.5,9110,8824,51.5,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +26941,"NAD83 / California zone 1",9001,4269,10431,9802,1,0,4499,8821,39.2,9110,8822,-122,9110,8823,41.4,9110,8824,40,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +26942,"NAD83 / California zone 2",9001,4269,10432,9802,1,0,4499,8821,37.4,9110,8822,-122,9110,8823,39.5,9110,8824,38.2,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +26943,"NAD83 / California zone 3",9001,4269,10433,9802,1,0,4499,8821,36.3,9110,8822,-120.3,9110,8823,38.26,9110,8824,37.04,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +26944,"NAD83 / California zone 4",9001,4269,10434,9802,1,0,4499,8821,35.2,9110,8822,-119,9110,8823,37.15,9110,8824,36,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +26945,"NAD83 / California zone 5",9001,4269,10435,9802,1,0,4499,8821,33.3,9110,8822,-118,9110,8823,35.28,9110,8824,34.02,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +26946,"NAD83 / California zone 6",9001,4269,10436,9802,1,0,4499,8821,32.1,9110,8822,-116.15,9110,8823,33.53,9110,8824,32.47,9110,8826,2000000,9001,8827,500000,9001,,,,,,,,,, +26948,"NAD83 / Arizona East",9001,4269,10231,9807,1,0,4499,8801,31,9110,8802,-110.1,9110,8805,0.9999,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +26949,"NAD83 / Arizona Central",9001,4269,10232,9807,1,0,4499,8801,31,9110,8802,-111.55,9110,8805,0.9999,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +26950,"NAD83 / Arizona West",9001,4269,10233,9807,1,0,4499,8801,31,9110,8802,-113.45,9110,8805,0.999933333,9201,8806,213360,9001,8807,0,9001,,,,,,,,,,,,, +26951,"NAD83 / Arkansas North",9001,4269,10331,9802,1,0,4499,8821,34.2,9110,8822,-92,9110,8823,36.14,9110,8824,34.56,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +26952,"NAD83 / Arkansas South",9001,4269,10332,9802,1,0,4499,8821,32.4,9110,8822,-92,9110,8823,34.46,9110,8824,33.18,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +26953,"NAD83 / Colorado North",9001,4269,10531,9802,1,0,4499,8821,39.2,9110,8822,-105.3,9110,8823,40.47,9110,8824,39.43,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +26954,"NAD83 / Colorado Central",9001,4269,10532,9802,1,0,4499,8821,37.5,9110,8822,-105.3,9110,8823,39.45,9110,8824,38.27,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +26955,"NAD83 / Colorado South",9001,4269,10533,9802,1,0,4499,8821,36.4,9110,8822,-105.3,9110,8823,38.26,9110,8824,37.14,9110,8826,914401.8289,9001,8827,304800.6096,9001,,,,,,,,,, +26956,"NAD83 / Connecticut",9001,4269,10630,9802,1,0,4499,8821,40.5,9110,8822,-72.45,9110,8823,41.52,9110,8824,41.12,9110,8826,304800.6096,9001,8827,152400.3048,9001,,,,,,,,,, +26957,"NAD83 / Delaware",9001,4269,10730,9807,1,0,4499,8801,38,9110,8802,-75.25,9110,8805,0.999995,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +26958,"NAD83 / Florida East",9001,4269,10931,9807,1,0,4499,8801,24.2,9110,8802,-81,9110,8805,0.999941177,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +26959,"NAD83 / Florida West",9001,4269,10932,9807,1,0,4499,8801,24.2,9110,8802,-82,9110,8805,0.999941177,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +26960,"NAD83 / Florida North",9001,4269,10933,9802,1,0,4499,8821,29,9110,8822,-84.3,9110,8823,30.45,9110,8824,29.35,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +26961,"NAD83 / Hawaii zone 1",9001,4269,15131,9807,1,0,4499,8801,18.5,9110,8802,-155.3,9110,8805,0.999966667,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26962,"NAD83 / Hawaii zone 2",9001,4269,15132,9807,1,0,4499,8801,20.2,9110,8802,-156.4,9110,8805,0.999966667,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26963,"NAD83 / Hawaii zone 3",9001,4269,15133,9807,1,0,4499,8801,21.1,9110,8802,-158,9110,8805,0.99999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26964,"NAD83 / Hawaii zone 4",9001,4269,15134,9807,1,0,4499,8801,21.5,9110,8802,-159.3,9110,8805,0.99999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26965,"NAD83 / Hawaii zone 5",9001,4269,15135,9807,1,0,4499,8801,21.4,9110,8802,-160.1,9110,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26966,"NAD83 / Georgia East",9001,4269,11031,9807,1,0,4499,8801,30,9110,8802,-82.1,9110,8805,0.9999,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +26967,"NAD83 / Georgia West",9001,4269,11032,9807,1,0,4499,8801,30,9110,8802,-84.1,9110,8805,0.9999,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +26968,"NAD83 / Idaho East",9001,4269,11131,9807,1,0,4499,8801,41.4,9110,8802,-112.1,9110,8805,0.999947368,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +26969,"NAD83 / Idaho Central",9001,4269,11132,9807,1,0,4499,8801,41.4,9110,8802,-114,9110,8805,0.999947368,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26970,"NAD83 / Idaho West",9001,4269,11133,9807,1,0,4499,8801,41.4,9110,8802,-115.45,9110,8805,0.999933333,9201,8806,800000,9001,8807,0,9001,,,,,,,,,,,,, +26971,"NAD83 / Illinois East",9001,4269,11231,9807,1,0,4499,8801,36.4,9110,8802,-88.2,9110,8805,0.999975,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +26972,"NAD83 / Illinois West",9001,4269,11232,9807,1,0,4499,8801,36.4,9110,8802,-90.1,9110,8805,0.999941177,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +26973,"NAD83 / Indiana East",9001,4269,11331,9807,1,0,4499,8801,37.3,9110,8802,-85.4,9110,8805,0.999966667,9201,8806,100000,9001,8807,250000,9001,,,,,,,,,,,,, +26974,"NAD83 / Indiana West",9001,4269,11332,9807,1,0,4499,8801,37.3,9110,8802,-87.05,9110,8805,0.999966667,9201,8806,900000,9001,8807,250000,9001,,,,,,,,,,,,, +26975,"NAD83 / Iowa North",9001,4269,11431,9802,1,0,4499,8821,41.3,9110,8822,-93.3,9110,8823,43.16,9110,8824,42.04,9110,8826,1500000,9001,8827,1000000,9001,,,,,,,,,, +26976,"NAD83 / Iowa South",9001,4269,11432,9802,1,0,4499,8821,40,9110,8822,-93.3,9110,8823,41.47,9110,8824,40.37,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +26977,"NAD83 / Kansas North",9001,4269,11531,9802,1,0,4499,8821,38.2,9110,8822,-98,9110,8823,39.47,9110,8824,38.43,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +26978,"NAD83 / Kansas South",9001,4269,11532,9802,1,0,4499,8821,36.4,9110,8822,-98.3,9110,8823,38.34,9110,8824,37.16,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +26979,"NAD83 / Kentucky North",9001,4269,11631,9802,1,1,4499,8821,37.3,9110,8822,-84.15,9110,8823,37.58,9110,8824,37.58,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +26980,"NAD83 / Kentucky South",9001,4269,11632,9802,1,0,4499,8821,36.2,9110,8822,-85.45,9110,8823,37.56,9110,8824,36.44,9110,8826,500000,9001,8827,500000,9001,,,,,,,,,, +26981,"NAD83 / Louisiana North",9001,4269,11731,9802,1,0,4499,8821,30.3,9110,8822,-92.3,9110,8823,32.4,9110,8824,31.1,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +26982,"NAD83 / Louisiana South",9001,4269,11732,9802,1,0,4499,8821,28.3,9110,8822,-91.2,9110,8823,30.42,9110,8824,29.18,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +26983,"NAD83 / Maine East",9001,4269,11831,9807,1,0,4499,8801,43.4,9110,8802,-68.3,9110,8805,0.9999,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +26984,"NAD83 / Maine West",9001,4269,11832,9807,1,0,4499,8801,42.5,9110,8802,-70.1,9110,8805,0.999966667,9201,8806,900000,9001,8807,0,9001,,,,,,,,,,,,, +26985,"NAD83 / Maryland",9001,4269,11930,9802,1,0,4499,8821,37.4,9110,8822,-77,9110,8823,39.27,9110,8824,38.18,9110,8826,400000,9001,8827,0,9001,,,,,,,,,, +26986,"NAD83 / Massachusetts Mainland",9001,4269,12031,9802,1,0,4499,8821,41,9110,8822,-71.3,9110,8823,42.41,9110,8824,41.43,9110,8826,200000,9001,8827,750000,9001,,,,,,,,,, +26987,"NAD83 / Massachusetts Island",9001,4269,12032,9802,1,0,4499,8821,41,9110,8822,-70.3,9110,8823,41.29,9110,8824,41.17,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +26988,"NAD83 / Michigan North",9001,4269,12141,9802,1,0,4499,8821,44.47,9110,8822,-87,9110,8823,47.05,9110,8824,45.29,9110,8826,8000000,9001,8827,0,9001,,,,,,,,,, +26989,"NAD83 / Michigan Central",9001,4269,12142,9802,1,0,4499,8821,43.19,9110,8822,-84.22,9110,8823,45.42,9110,8824,44.11,9110,8826,6000000,9001,8827,0,9001,,,,,,,,,, +26990,"NAD83 / Michigan South",9001,4269,12143,9802,1,0,4499,8821,41.3,9110,8822,-84.22,9110,8823,43.4,9110,8824,42.06,9110,8826,4000000,9001,8827,0,9001,,,,,,,,,, +26991,"NAD83 / Minnesota North",9001,4269,12231,9802,1,0,4499,8821,46.3,9110,8822,-93.06,9110,8823,48.38,9110,8824,47.02,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +26992,"NAD83 / Minnesota Central",9001,4269,12232,9802,1,0,4499,8821,45,9110,8822,-94.15,9110,8823,47.03,9110,8824,45.37,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +26993,"NAD83 / Minnesota South",9001,4269,12233,9802,1,0,4499,8821,43,9110,8822,-94,9110,8823,45.13,9110,8824,43.47,9110,8826,800000,9001,8827,100000,9001,,,,,,,,,, +26994,"NAD83 / Mississippi East",9001,4269,12331,9807,1,0,4499,8801,29.3,9110,8802,-88.5,9110,8805,0.99995,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +26995,"NAD83 / Mississippi West",9001,4269,12332,9807,1,0,4499,8801,29.3,9110,8802,-90.2,9110,8805,0.99995,9201,8806,700000,9001,8807,0,9001,,,,,,,,,,,,, +26996,"NAD83 / Missouri East",9001,4269,12431,9807,1,0,4499,8801,35.5,9110,8802,-90.3,9110,8805,0.999933333,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +26997,"NAD83 / Missouri Central",9001,4269,12432,9807,1,0,4499,8801,35.5,9110,8802,-92.3,9110,8805,0.999933333,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +26998,"NAD83 / Missouri West",9001,4269,12433,9807,1,0,4499,8801,36.1,9110,8802,-94.3,9110,8805,0.999941177,9201,8806,850000,9001,8807,0,9001,,,,,,,,,,,,, +27037,"Nahrwan 1967 / UTM zone 37N",9001,4270,16037,9807,1,1,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +27038,"Nahrwan 1967 / UTM zone 38N",9001,4270,16038,9807,1,1,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +27039,"Nahrwan 1967 / UTM zone 39N",9001,4270,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +27040,"Nahrwan 1967 / UTM zone 40N",9001,4270,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +27120,"Naparima 1972 / UTM zone 20N",9001,4271,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +27200,"NZGD49 / New Zealand Map Grid",9001,4272,19917,9811,1,0,4400,8801,-41,9102,8802,173,9102,8806,2510000,9001,8807,6023150,9001,,,,,,,,,,,,,,,, +27205,"NZGD49 / Mount Eden Circuit",9001,4272,17901,9807,1,0,4500,8801,-36.5247515,9110,8802,174.45516217,9110,8805,0.9999,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27206,"NZGD49 / Bay of Plenty Circuit",9001,4272,17902,9807,1,0,4500,8801,-37.45404993,9110,8802,176.27583101,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27207,"NZGD49 / Poverty Bay Circuit",9001,4272,17903,9807,1,0,4500,8801,-38.372893,9110,8802,177.53082906,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27208,"NZGD49 / Hawkes Bay Circuit",9001,4272,17904,9807,1,0,4500,8801,-39.39033455,9110,8802,176.40252499,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27209,"NZGD49 / Taranaki Circuit",9001,4272,17905,9807,1,0,4500,8801,-39.08087299,9110,8802,174.13408423,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27210,"NZGD49 / Tuhirangi Circuit",9001,4272,17906,9807,1,0,4500,8801,-39.30448934,9110,8802,175.38241325,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27211,"NZGD49 / Wanganui Circuit",9001,4272,17907,9807,1,0,4500,8801,-40.14310097,9110,8802,175.29171586,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27212,"NZGD49 / Wairarapa Circuit",9001,4272,17908,9807,1,0,4500,8801,-40.55319175,9110,8802,175.38504588,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27213,"NZGD49 / Wellington Circuit",9001,4272,17909,9807,1,0,4500,8801,-41.18047507,9110,8802,174.46358432,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27214,"NZGD49 / Collingwood Circuit",9001,4272,17910,9807,1,0,4500,8801,-40.42531326,9110,8802,172.40193674,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27215,"NZGD49 / Nelson Circuit",9001,4272,17911,9807,1,0,4500,8801,-41.1628361,9110,8802,173.17575405,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27216,"NZGD49 / Karamea Circuit",9001,4272,17912,9807,1,0,4500,8801,-41.17236815,9110,8802,172.06325015,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27217,"NZGD49 / Buller Circuit",9001,4272,17913,9807,1,0,4500,8801,-41.48388903,9110,8802,171.34525362,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27218,"NZGD49 / Grey Circuit",9001,4272,17914,9807,1,0,4500,8801,-42.20012994,9110,8802,171.32591767,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27219,"NZGD49 / Amuri Circuit",9001,4272,17915,9807,1,0,4500,8801,-42.41208197,9110,8802,173.00364802,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27220,"NZGD49 / Marlborough Circuit",9001,4272,17916,9807,1,0,4500,8801,-41.3240152,9110,8802,173.48074668,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27221,"NZGD49 / Hokitika Circuit",9001,4272,17917,9807,1,0,4500,8801,-42.53107605,9110,8802,170.58479766,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27222,"NZGD49 / Okarito Circuit",9001,4272,17918,9807,1,0,4500,8801,-43.06364613,9110,8802,170.1539333,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27223,"NZGD49 / Jacksons Bay Circuit",9001,4272,17919,9807,1,0,4500,8801,-43.58400904,9110,8802,168.36225612,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27224,"NZGD49 / Mount Pleasant Circuit",9001,4272,17920,9807,1,0,4500,8801,-43.35262953,9110,8802,172.43378969,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27225,"NZGD49 / Gawler Circuit",9001,4272,17921,9807,1,0,4500,8801,-43.44553616,9110,8802,171.21386945,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27226,"NZGD49 / Timaru Circuit",9001,4272,17922,9807,1,0,4500,8801,-44.24079933,9110,8802,171.0326103,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27227,"NZGD49 / Lindis Peak Circuit",9001,4272,17923,9807,1,0,4500,8801,-44.44069647,9110,8802,169.28039183,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27228,"NZGD49 / Mount Nicholas Circuit",9001,4272,17924,9807,1,0,4500,8801,-45.07584493,9110,8802,168.23551083,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27229,"NZGD49 / Mount York Circuit",9001,4272,17925,9807,1,0,4500,8801,-45.33494142,9110,8802,167.44199024,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27230,"NZGD49 / Observation Point Circuit",9001,4272,17926,9807,1,0,4500,8801,-45.48583078,9110,8802,170.37429426,9110,8805,1,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27231,"NZGD49 / North Taieri Circuit",9001,4272,17927,9807,1,0,4500,8801,-45.51414481,9110,8802,170.16573208,9110,8805,0.99996,9201,8806,300000,9001,8807,700000,9001,,,,,,,,,,,,, +27232,"NZGD49 / Bluff Circuit",9001,4272,17928,9807,1,0,4500,8801,-46.36000346,9110,8802,168.20343392,9110,8805,1,9201,8806,300002.66,9001,8807,699999.58,9001,,,,,,,,,,,,, +27258,"NZGD49 / UTM zone 58S",9001,4272,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +27259,"NZGD49 / UTM zone 59S",9001,4272,16159,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +27260,"NZGD49 / UTM zone 60S",9001,4272,16160,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +27291,"NZGD49 / North Island Grid",9040,4272,18141,9807,1,0,4409,8801,-39,9110,8802,175.3,9110,8805,1,9201,8806,300000,9040,8807,400000,9040,,,,,,,,,,,,, +27292,"NZGD49 / South Island Grid",9040,4272,18142,9807,1,0,4409,8801,-44,9110,8802,171.3,9110,8805,1,9201,8806,500000,9040,8807,500000,9040,,,,,,,,,,,,, +27391,"NGO 1948 (Oslo) / NGO zone I",9001,4817,18221,9807,1,0,4531,8801,58,9110,8802,-4.4,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +27392,"NGO 1948 (Oslo) / NGO zone II",9001,4817,18222,9807,1,0,4531,8801,58,9110,8802,-2.2,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +27393,"NGO 1948 (Oslo) / NGO zone III",9001,4817,18223,9807,1,0,4531,8801,58,9110,8802,0,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +27394,"NGO 1948 (Oslo) / NGO zone IV",9001,4817,18224,9807,1,0,4531,8801,58,9110,8802,2.3,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +27395,"NGO 1948 (Oslo) / NGO zone V",9001,4817,18225,9807,1,0,4531,8801,58,9110,8802,6.1,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +27396,"NGO 1948 (Oslo) / NGO zone VI",9001,4817,18226,9807,1,0,4531,8801,58,9110,8802,10.1,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +27397,"NGO 1948 (Oslo) / NGO zone VII",9001,4817,18227,9807,1,0,4531,8801,58,9110,8802,14.1,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +27398,"NGO 1948 (Oslo) / NGO zone VIII",9001,4817,18228,9807,1,0,4531,8801,58,9110,8802,18.2,9110,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +27429,"Datum 73 / UTM zone 29N",9001,4274,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +27492,"Datum 73 / Modified Portuguese Grid",9001,4274,19974,9807,1,1,4530,8801,39.4,9110,8802,-8.0754862,9110,8805,1,9201,8806,180.598,9001,8807,-86.99,9001,,,,,,,,,,,,, +27493,"Datum 73 / Modified Portuguese Grid",9001,4274,19974,9807,1,0,4499,8801,39.4,9110,8802,-8.0754862,9110,8805,1,9201,8806,180.598,9001,8807,-86.99,9001,,,,,,,,,,,,, +27500,"ATF (Paris) / Nord de Guerre",9001,4901,19903,9801,1,0,4499,8801,55,9105,8802,6,9105,8805,0.99950908,9201,8806,500000,9001,8807,300000,9001,,,,,,,,,,,,, +27561,"NTF (Paris) / Lambert Nord France",9001,4807,18091,9801,1,0,4499,8801,55,9105,8802,0,9105,8805,0.999877341,9201,8806,600000,9001,8807,200000,9001,,,,,,,,,,,,, +27562,"NTF (Paris) / Lambert Centre France",9001,4807,18092,9801,1,0,4499,8801,52,9105,8802,0,9105,8805,0.99987742,9201,8806,600000,9001,8807,200000,9001,,,,,,,,,,,,, +27563,"NTF (Paris) / Lambert Sud France",9001,4807,18093,9801,1,0,4499,8801,49,9105,8802,0,9105,8805,0.999877499,9201,8806,600000,9001,8807,200000,9001,,,,,,,,,,,,, +27564,"NTF (Paris) / Lambert Corse",9001,4807,18094,9801,1,0,4499,8801,46.85,9105,8802,0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,185861.369,9001,,,,,,,,,,,,, +27571,"NTF (Paris) / Lambert zone I",9001,4807,18081,9801,1,0,4499,8801,55,9105,8802,0,9105,8805,0.999877341,9201,8806,600000,9001,8807,1200000,9001,,,,,,,,,,,,, +27572,"NTF (Paris) / Lambert zone II",9001,4807,18082,9801,1,0,4499,8801,52,9105,8802,0,9105,8805,0.99987742,9201,8806,600000,9001,8807,2200000,9001,,,,,,,,,,,,, +27573,"NTF (Paris) / Lambert zone III",9001,4807,18083,9801,1,0,4499,8801,49,9105,8802,0,9105,8805,0.999877499,9201,8806,600000,9001,8807,3200000,9001,,,,,,,,,,,,, +27574,"NTF (Paris) / Lambert zone IV",9001,4807,18084,9801,1,0,4499,8801,46.85,9105,8802,0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,4185861.369,9001,,,,,,,,,,,,, +27581,"NTF (Paris) / France I",9001,4807,18081,9801,1,1,4499,8801,55,9105,8802,0,9105,8805,0.999877341,9201,8806,600000,9001,8807,1200000,9001,,,,,,,,,,,,, +27582,"NTF (Paris) / France II",9001,4807,18082,9801,1,1,4499,8801,52,9105,8802,0,9105,8805,0.99987742,9201,8806,600000,9001,8807,2200000,9001,,,,,,,,,,,,, +27583,"NTF (Paris) / France III",9001,4807,18083,9801,1,1,4499,8801,49,9105,8802,0,9105,8805,0.999877499,9201,8806,600000,9001,8807,3200000,9001,,,,,,,,,,,,, +27584,"NTF (Paris) / France IV",9001,4807,18084,9801,1,1,4499,8801,46.85,9105,8802,0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,4185861.369,9001,,,,,,,,,,,,, +27591,"NTF (Paris) / Nord France",9001,4807,18091,9801,1,1,4499,8801,55,9105,8802,0,9105,8805,0.999877341,9201,8806,600000,9001,8807,200000,9001,,,,,,,,,,,,, +27592,"NTF (Paris) / Centre France",9001,4807,18092,9801,1,1,4499,8801,52,9105,8802,0,9105,8805,0.99987742,9201,8806,600000,9001,8807,200000,9001,,,,,,,,,,,,, +27593,"NTF (Paris) / Sud France",9001,4807,18093,9801,1,1,4499,8801,49,9105,8802,0,9105,8805,0.999877499,9201,8806,600000,9001,8807,200000,9001,,,,,,,,,,,,, +27594,"NTF (Paris) / Corse",9001,4807,18094,9801,1,1,4499,8801,46.85,9105,8802,0,9105,8805,0.99994471,9201,8806,234.358,9001,8807,185861.369,9001,,,,,,,,,,,,, +27700,"OSGB 1936 / British National Grid",9001,4277,19916,9807,1,0,4400,8801,49,9102,8802,-2,9102,8805,0.9996012717,9201,8806,400000,9001,8807,-100000,9001,,,,,,,,,,,,, +28191,"Palestine 1923 / Palestine Grid",9001,4281,18201,9806,1,0,4400,8801,31.4402749,9110,8802,35.124349,9110,8806,170251.555,9001,8807,126867.909,9001,,,,,,,,,,,,,,,, +28192,"Palestine 1923 / Palestine Belt",9001,4281,18202,9807,1,0,4400,8801,31.4402749,9110,8802,35.124349,9110,8805,1,9201,8806,170251.555,9001,8807,1126867.909,9001,,,,,,,,,,,,, +28193,"Palestine 1923 / Israeli CS Grid",9001,4281,18203,9806,1,0,4400,8801,31.4402749,9110,8802,35.124349,9110,8806,170251.555,9001,8807,1126867.909,9001,,,,,,,,,,,,,,,, +28232,"Pointe Noire / UTM zone 32S",9001,4282,16132,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28348,"GDA94 / MGA zone 48",9001,4283,17348,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28349,"GDA94 / MGA zone 49",9001,4283,17349,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28350,"GDA94 / MGA zone 50",9001,4283,17350,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28351,"GDA94 / MGA zone 51",9001,4283,17351,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28352,"GDA94 / MGA zone 52",9001,4283,17352,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28353,"GDA94 / MGA zone 53",9001,4283,17353,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28354,"GDA94 / MGA zone 54",9001,4283,17354,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28355,"GDA94 / MGA zone 55",9001,4283,17355,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28356,"GDA94 / MGA zone 56",9001,4283,17356,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28357,"GDA94 / MGA zone 57",9001,4283,17357,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28358,"GDA94 / MGA zone 58",9001,4283,17358,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +28402,"Pulkovo 1942 / Gauss-Kruger zone 2",9001,4284,16202,9807,1,1,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +28403,"Pulkovo 1942 / Gauss-Kruger zone 3",9001,4284,16203,9807,1,1,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +28404,"Pulkovo 1942 / Gauss-Kruger zone 4",9001,4284,16204,9807,1,0,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +28405,"Pulkovo 1942 / Gauss-Kruger zone 5",9001,4284,16205,9807,1,0,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +28406,"Pulkovo 1942 / Gauss-Kruger zone 6",9001,4284,16206,9807,1,0,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +28407,"Pulkovo 1942 / Gauss-Kruger zone 7",9001,4284,16207,9807,1,0,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +28408,"Pulkovo 1942 / Gauss-Kruger zone 8",9001,4284,16208,9807,1,0,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +28409,"Pulkovo 1942 / Gauss-Kruger zone 9",9001,4284,16209,9807,1,0,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,9500000,9001,8807,0,9001,,,,,,,,,,,,, +28410,"Pulkovo 1942 / Gauss-Kruger zone 10",9001,4284,16210,9807,1,0,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,10500000,9001,8807,0,9001,,,,,,,,,,,,, +28411,"Pulkovo 1942 / Gauss-Kruger zone 11",9001,4284,16211,9807,1,0,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,11500000,9001,8807,0,9001,,,,,,,,,,,,, +28412,"Pulkovo 1942 / Gauss-Kruger zone 12",9001,4284,16212,9807,1,0,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,12500000,9001,8807,0,9001,,,,,,,,,,,,, +28413,"Pulkovo 1942 / Gauss-Kruger zone 13",9001,4284,16213,9807,1,0,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,13500000,9001,8807,0,9001,,,,,,,,,,,,, +28414,"Pulkovo 1942 / Gauss-Kruger zone 14",9001,4284,16214,9807,1,0,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,14500000,9001,8807,0,9001,,,,,,,,,,,,, +28415,"Pulkovo 1942 / Gauss-Kruger zone 15",9001,4284,16215,9807,1,0,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,15500000,9001,8807,0,9001,,,,,,,,,,,,, +28416,"Pulkovo 1942 / Gauss-Kruger zone 16",9001,4284,16216,9807,1,0,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,16500000,9001,8807,0,9001,,,,,,,,,,,,, +28417,"Pulkovo 1942 / Gauss-Kruger zone 17",9001,4284,16217,9807,1,0,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,17500000,9001,8807,0,9001,,,,,,,,,,,,, +28418,"Pulkovo 1942 / Gauss-Kruger zone 18",9001,4284,16218,9807,1,0,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,18500000,9001,8807,0,9001,,,,,,,,,,,,, +28419,"Pulkovo 1942 / Gauss-Kruger zone 19",9001,4284,16219,9807,1,0,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,19500000,9001,8807,0,9001,,,,,,,,,,,,, +28420,"Pulkovo 1942 / Gauss-Kruger zone 20",9001,4284,16220,9807,1,0,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,20500000,9001,8807,0,9001,,,,,,,,,,,,, +28421,"Pulkovo 1942 / Gauss-Kruger zone 21",9001,4284,16221,9807,1,0,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,21500000,9001,8807,0,9001,,,,,,,,,,,,, +28422,"Pulkovo 1942 / Gauss-Kruger zone 22",9001,4284,16222,9807,1,0,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,22500000,9001,8807,0,9001,,,,,,,,,,,,, +28423,"Pulkovo 1942 / Gauss-Kruger zone 23",9001,4284,16223,9807,1,0,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,23500000,9001,8807,0,9001,,,,,,,,,,,,, +28424,"Pulkovo 1942 / Gauss-Kruger zone 24",9001,4284,16224,9807,1,0,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,24500000,9001,8807,0,9001,,,,,,,,,,,,, +28425,"Pulkovo 1942 / Gauss-Kruger zone 25",9001,4284,16225,9807,1,0,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,25500000,9001,8807,0,9001,,,,,,,,,,,,, +28426,"Pulkovo 1942 / Gauss-Kruger zone 26",9001,4284,16226,9807,1,0,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,26500000,9001,8807,0,9001,,,,,,,,,,,,, +28427,"Pulkovo 1942 / Gauss-Kruger zone 27",9001,4284,16227,9807,1,0,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,27500000,9001,8807,0,9001,,,,,,,,,,,,, +28428,"Pulkovo 1942 / Gauss-Kruger zone 28",9001,4284,16228,9807,1,0,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,28500000,9001,8807,0,9001,,,,,,,,,,,,, +28429,"Pulkovo 1942 / Gauss-Kruger zone 29",9001,4284,16229,9807,1,0,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,29500000,9001,8807,0,9001,,,,,,,,,,,,, +28430,"Pulkovo 1942 / Gauss-Kruger zone 30",9001,4284,16230,9807,1,0,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,30500000,9001,8807,0,9001,,,,,,,,,,,,, +28431,"Pulkovo 1942 / Gauss-Kruger zone 31",9001,4284,16231,9807,1,0,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,31500000,9001,8807,0,9001,,,,,,,,,,,,, +28432,"Pulkovo 1942 / Gauss-Kruger zone 32",9001,4284,16232,9807,1,0,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,32500000,9001,8807,0,9001,,,,,,,,,,,,, +28462,"Pulkovo 1942 / Gauss-Kruger 2N",9001,4284,16302,9807,1,1,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28463,"Pulkovo 1942 / Gauss-Kruger 3N",9001,4284,16303,9807,1,1,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28464,"Pulkovo 1942 / Gauss-Kruger 4N",9001,4284,16304,9807,1,1,4530,8801,0,9102,8802,21,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28465,"Pulkovo 1942 / Gauss-Kruger 5N",9001,4284,16305,9807,1,1,4530,8801,0,9102,8802,27,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28466,"Pulkovo 1942 / Gauss-Kruger 6N",9001,4284,16306,9807,1,1,4530,8801,0,9102,8802,33,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28467,"Pulkovo 1942 / Gauss-Kruger 7N",9001,4284,16307,9807,1,1,4530,8801,0,9102,8802,39,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28468,"Pulkovo 1942 / Gauss-Kruger 8N",9001,4284,16308,9807,1,1,4530,8801,0,9102,8802,45,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28469,"Pulkovo 1942 / Gauss-Kruger 9N",9001,4284,16309,9807,1,1,4530,8801,0,9102,8802,51,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28470,"Pulkovo 1942 / Gauss-Kruger 10N",9001,4284,16310,9807,1,1,4530,8801,0,9102,8802,57,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28471,"Pulkovo 1942 / Gauss-Kruger 11N",9001,4284,16311,9807,1,1,4530,8801,0,9102,8802,63,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28472,"Pulkovo 1942 / Gauss-Kruger 12N",9001,4284,16312,9807,1,1,4530,8801,0,9102,8802,69,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28473,"Pulkovo 1942 / Gauss-Kruger 13N",9001,4284,16313,9807,1,1,4530,8801,0,9102,8802,75,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28474,"Pulkovo 1942 / Gauss-Kruger 14N",9001,4284,16314,9807,1,1,4530,8801,0,9102,8802,81,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28475,"Pulkovo 1942 / Gauss-Kruger 15N",9001,4284,16315,9807,1,1,4530,8801,0,9102,8802,87,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28476,"Pulkovo 1942 / Gauss-Kruger 16N",9001,4284,16316,9807,1,1,4530,8801,0,9102,8802,93,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28477,"Pulkovo 1942 / Gauss-Kruger 17N",9001,4284,16317,9807,1,1,4530,8801,0,9102,8802,99,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28478,"Pulkovo 1942 / Gauss-Kruger 18N",9001,4284,16318,9807,1,1,4530,8801,0,9102,8802,105,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28479,"Pulkovo 1942 / Gauss-Kruger 19N",9001,4284,16319,9807,1,1,4530,8801,0,9102,8802,111,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28480,"Pulkovo 1942 / Gauss-Kruger 20N",9001,4284,16320,9807,1,1,4530,8801,0,9102,8802,117,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28481,"Pulkovo 1942 / Gauss-Kruger 21N",9001,4284,16321,9807,1,1,4530,8801,0,9102,8802,123,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28482,"Pulkovo 1942 / Gauss-Kruger 22N",9001,4284,16322,9807,1,1,4530,8801,0,9102,8802,129,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28483,"Pulkovo 1942 / Gauss-Kruger 23N",9001,4284,16323,9807,1,1,4530,8801,0,9102,8802,135,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28484,"Pulkovo 1942 / Gauss-Kruger 24N",9001,4284,16324,9807,1,1,4530,8801,0,9102,8802,141,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28485,"Pulkovo 1942 / Gauss-Kruger 25N",9001,4284,16325,9807,1,1,4530,8801,0,9102,8802,147,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28486,"Pulkovo 1942 / Gauss-Kruger 26N",9001,4284,16326,9807,1,1,4530,8801,0,9102,8802,153,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28487,"Pulkovo 1942 / Gauss-Kruger 27N",9001,4284,16327,9807,1,1,4530,8801,0,9102,8802,159,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28488,"Pulkovo 1942 / Gauss-Kruger 28N",9001,4284,16328,9807,1,1,4530,8801,0,9102,8802,165,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28489,"Pulkovo 1942 / Gauss-Kruger 29N",9001,4284,16329,9807,1,1,4530,8801,0,9102,8802,171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28490,"Pulkovo 1942 / Gauss-Kruger 30N",9001,4284,16330,9807,1,1,4530,8801,0,9102,8802,177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28491,"Pulkovo 1942 / Gauss-Kruger 31N",9001,4284,16331,9807,1,1,4530,8801,0,9102,8802,-177,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28492,"Pulkovo 1942 / Gauss-Kruger 32N",9001,4284,16332,9807,1,1,4530,8801,0,9102,8802,-171,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +28600,"Qatar 1974 / Qatar National Grid",9001,4285,19919,9807,1,0,4400,8801,24.27,9110,8802,51.13,9110,8805,0.99999,9201,8806,200000,9001,8807,300000,9001,,,,,,,,,,,,, +28991,"Amersfoort / RD Old",9001,4289,19913,9809,1,0,4499,8801,52.0922178,9110,8802,5.23155,9110,8805,0.9999079,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +28992,"Amersfoort / RD New",9001,4289,19914,9809,1,0,4499,8801,52.0922178,9110,8802,5.23155,9110,8805,0.9999079,9201,8806,155000,9001,8807,463000,9001,,,,,,,,,,,,, +29100,"SAD69 / Brazil Polyconic",9001,4291,19941,9818,1,1,4499,8801,0,9102,8802,-54,9102,8806,5000000,9001,8807,10000000,9001,,,,,,,,,,,,,,,, +29101,"SAD69 / Brazil Polyconic",9001,4618,19941,9818,1,0,4499,8801,0,9102,8802,-54,9102,8806,5000000,9001,8807,10000000,9001,,,,,,,,,,,,,,,, +29118,"SAD69 / UTM zone 18N",9001,4291,16018,9807,1,1,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29119,"SAD69 / UTM zone 19N",9001,4291,16019,9807,1,1,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29120,"SAD69 / UTM zone 20N",9001,4291,16020,9807,1,1,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29121,"SAD69 / UTM zone 21N",9001,4291,16021,9807,1,1,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29122,"SAD69 / UTM zone 22N",9001,4291,16022,9807,1,1,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29168,"SAD69 / UTM zone 18N",9001,4618,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29169,"SAD69 / UTM zone 19N",9001,4618,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29170,"SAD69 / UTM zone 20N",9001,4618,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29171,"SAD69 / UTM zone 21N",9001,4618,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29172,"SAD69 / UTM zone 22N",9001,4618,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29177,"SAD69 / UTM zone 17S",9001,4291,16117,9807,1,1,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29178,"SAD69 / UTM zone 18S",9001,4291,16118,9807,1,1,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29179,"SAD69 / UTM zone 19S",9001,4291,16119,9807,1,1,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29180,"SAD69 / UTM zone 20S",9001,4291,16120,9807,1,1,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29181,"SAD69 / UTM zone 21S",9001,4291,16121,9807,1,1,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29182,"SAD69 / UTM zone 22S",9001,4291,16122,9807,1,1,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29183,"SAD69 / UTM zone 23S",9001,4291,16123,9807,1,1,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29184,"SAD69 / UTM zone 24S",9001,4291,16124,9807,1,1,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29185,"SAD69 / UTM zone 25S",9001,4291,16125,9807,1,1,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29187,"SAD69 / UTM zone 17S",9001,4618,16117,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29188,"SAD69 / UTM zone 18S",9001,4618,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29189,"SAD69 / UTM zone 19S",9001,4618,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29190,"SAD69 / UTM zone 20S",9001,4618,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29191,"SAD69 / UTM zone 21S",9001,4618,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29192,"SAD69 / UTM zone 22S",9001,4618,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29193,"SAD69 / UTM zone 23S",9001,4618,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29194,"SAD69 / UTM zone 24S",9001,4618,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29195,"SAD69 / UTM zone 25S",9001,4618,16125,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29220,"Sapper Hill 1943 / UTM zone 20S",9001,4292,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29221,"Sapper Hill 1943 / UTM zone 21S",9001,4292,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29333,"Schwarzeck / UTM zone 33S",9001,4293,16133,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29371,"Schwarzeck / Lo22/11",9031,4293,17611,9808,1,0,6502,8801,-22,9102,8802,11,9102,8805,1,9201,8806,0,9031,8807,0,9031,,,,,,,,,,,,, +29373,"Schwarzeck / Lo22/13",9031,4293,17613,9808,1,0,6502,8801,-22,9102,8802,13,9102,8805,1,9201,8806,0,9031,8807,0,9031,,,,,,,,,,,,, +29375,"Schwarzeck / Lo22/15",9031,4293,17615,9808,1,0,6502,8801,-22,9102,8802,15,9102,8805,1,9201,8806,0,9031,8807,0,9031,,,,,,,,,,,,, +29377,"Schwarzeck / Lo22/17",9031,4293,17617,9808,1,0,6502,8801,-22,9102,8802,17,9102,8805,1,9201,8806,0,9031,8807,0,9031,,,,,,,,,,,,, +29379,"Schwarzeck / Lo22/19",9031,4293,17619,9808,1,0,6502,8801,-22,9102,8802,19,9102,8805,1,9201,8806,0,9031,8807,0,9031,,,,,,,,,,,,, +29381,"Schwarzeck / Lo22/21",9031,4293,17621,9808,1,0,6502,8801,-22,9102,8802,21,9102,8805,1,9201,8806,0,9031,8807,0,9031,,,,,,,,,,,,, +29383,"Schwarzeck / Lo22/23",9031,4293,17623,9808,1,0,6502,8801,-22,9102,8802,23,9102,8805,1,9201,8806,0,9031,8807,0,9031,,,,,,,,,,,,, +29385,"Schwarzeck / Lo22/25",9031,4293,17625,9808,1,0,6502,8801,-22,9102,8802,25,9102,8805,1,9201,8806,0,9031,8807,0,9031,,,,,,,,,,,,, +29635,"Sudan / UTM zone 35N",9001,4296,16035,9807,1,1,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29636,"Sudan / UTM zone 36N",9001,4296,16036,9807,1,1,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29700,"Tananarive (Paris) / Laborde Grid",9001,4810,19911,9815,1,1,4499,8811,-21,9105,8812,49,9105,8813,21,9105,8814,21,9105,8815,0.9995,9201,8816,400000,9001,8817,800000,9001,,,,,,, +29701,"Tananarive (Paris) / Laborde Grid",9001,4810,19861,9813,1,0,4530,8806,400000,9001,8807,800000,9001,8811,-21,9105,8812,49,9105,8813,21,9105,8815,0.9995,9201,,,,,,,,,, +29702,"Tananarive (Paris) / Laborde Grid approximation",9001,4810,19911,9815,1,0,4530,8811,-21,9105,8812,49,9105,8813,21,9105,8814,21,9105,8815,0.9995,9201,8816,400000,9001,8817,800000,9001,,,,,,, +29738,"Tananarive / UTM zone 38S",9001,4297,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29739,"Tananarive / UTM zone 39S",9001,4297,16139,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +29849,"Timbalai 1948 / UTM zone 49N",9001,4298,16049,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29850,"Timbalai 1948 / UTM zone 50N",9001,4298,16050,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +29871,"Timbalai 1948 / RSO Borneo (ch)",9042,4298,19956,9815,1,0,4402,8811,4,9110,8812,115,9110,8813,53.18569537,9110,8814,53.07483685,9110,8815,0.99984,9201,8816,29352.4763,9042,8817,22014.3572,9042,,,,,,, +29872,"Timbalai 1948 / RSO Borneo (ftSe)",9041,4298,19957,9815,1,0,4405,8811,4,9110,8812,115,9110,8813,53.18569537,9110,8814,53.07483685,9110,8815,0.99984,9201,8816,1937263.44,9041,8817,1452947.58,9041,,,,,,, +29873,"Timbalai 1948 / RSO Borneo (m)",9001,4298,19958,9815,1,0,4400,8811,4,9110,8812,115,9110,8813,53.18569537,9110,8814,53.07483685,9110,8815,0.99984,9201,8816,590476.87,9001,8817,442857.65,9001,,,,,,, +29900,"TM65 / Irish National Grid",9001,4299,19908,9807,1,1,4400,8801,53.3,9110,8802,-8,9110,8805,1.000035,9201,8806,200000,9001,8807,250000,9001,,,,,,,,,,,,, +29901,"OSNI 1952 / Irish National Grid",9001,4188,19973,9807,1,0,4400,8801,53.3,9110,8802,-8,9110,8805,1,9201,8806,200000,9001,8807,250000,9001,,,,,,,,,,,,, +29902,"TM65 / Irish Grid",9001,4299,19972,9807,1,0,4400,8801,53.3,9110,8802,-8,9110,8805,1.000035,9201,8806,200000,9001,8807,250000,9001,,,,,,,,,,,,, +29903,"TM75 / Irish Grid",9001,4300,19972,9807,1,0,4400,8801,53.3,9110,8802,-8,9110,8805,1.000035,9201,8806,200000,9001,8807,250000,9001,,,,,,,,,,,,, +30161,"Tokyo / Japan Plane Rectangular CS I",9001,4301,17801,9807,1,0,4530,8801,33,9110,8802,129.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30162,"Tokyo / Japan Plane Rectangular CS II",9001,4301,17802,9807,1,0,4530,8801,33,9110,8802,131,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30163,"Tokyo / Japan Plane Rectangular CS III",9001,4301,17803,9807,1,0,4530,8801,36,9110,8802,132.1,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30164,"Tokyo / Japan Plane Rectangular CS IV",9001,4301,17804,9807,1,0,4530,8801,33,9110,8802,133.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30165,"Tokyo / Japan Plane Rectangular CS V",9001,4301,17805,9807,1,0,4530,8801,36,9110,8802,134.2,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30166,"Tokyo / Japan Plane Rectangular CS VI",9001,4301,17806,9807,1,0,4530,8801,36,9110,8802,136,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30167,"Tokyo / Japan Plane Rectangular CS VII",9001,4301,17807,9807,1,0,4530,8801,36,9110,8802,137.1,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30168,"Tokyo / Japan Plane Rectangular CS VIII",9001,4301,17808,9807,1,0,4530,8801,36,9110,8802,138.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30169,"Tokyo / Japan Plane Rectangular CS IX",9001,4301,17809,9807,1,0,4530,8801,36,9110,8802,139.5,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30170,"Tokyo / Japan Plane Rectangular CS X",9001,4301,17810,9807,1,0,4530,8801,40,9110,8802,140.5,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30171,"Tokyo / Japan Plane Rectangular CS XI",9001,4301,17811,9807,1,0,4530,8801,44,9110,8802,140.15,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30172,"Tokyo / Japan Plane Rectangular CS XII",9001,4301,17812,9807,1,0,4530,8801,44,9110,8802,142.15,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30173,"Tokyo / Japan Plane Rectangular CS XIII",9001,4301,17813,9807,1,0,4530,8801,44,9110,8802,144.15,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30174,"Tokyo / Japan Plane Rectangular CS XIV",9001,4301,17814,9807,1,0,4530,8801,26,9110,8802,142,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30175,"Tokyo / Japan Plane Rectangular CS XV",9001,4301,17815,9807,1,0,4530,8801,26,9110,8802,127.3,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30176,"Tokyo / Japan Plane Rectangular CS XVI",9001,4301,17816,9807,1,0,4530,8801,26,9110,8802,124,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30177,"Tokyo / Japan Plane Rectangular CS XVII",9001,4301,17817,9807,1,0,4530,8801,26,9110,8802,131,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30178,"Tokyo / Japan Plane Rectangular CS XVIII",9001,4301,17818,9807,1,0,4530,8801,20,9110,8802,136,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30179,"Tokyo / Japan Plane Rectangular CS XIX",9001,4301,17819,9807,1,0,4530,8801,26,9110,8802,154,9110,8805,0.9999,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +30200,"Trinidad 1903 / Trinidad Grid",9039,4302,19925,9806,1,0,4407,8801,10.263,9110,8802,-61.2,9110,8806,430000,9039,8807,325000,9039,,,,,,,,,,,,,,,, +30339,"TC(1948) / UTM zone 39N",9001,4303,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +30340,"TC(1948) / UTM zone 40N",9001,4303,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +30491,"Voirol 1875 / Nord Algerie (ancienne)",9001,4304,18011,9801,1,0,4499,8801,40,9105,8802,3,9105,8805,0.999625544,9201,8806,500000,9001,8807,300000,9001,,,,,,,,,,,,, +30492,"Voirol 1875 / Sud Algerie (ancienne)",9001,4304,18012,9801,1,0,4499,8801,37,9105,8802,3,9105,8805,0.999625769,9201,8806,500000,9001,8807,300000,9001,,,,,,,,,,,,, +30493,"Voirol 1879 / Nord Algerie (ancienne)",9001,4671,18011,9801,1,0,4499,8801,40,9105,8802,3,9105,8805,0.999625544,9201,8806,500000,9001,8807,300000,9001,,,,,,,,,,,,, +30494,"Voirol 1879 / Sud Algerie (ancienne)",9001,4671,18012,9801,1,0,4499,8801,37,9105,8802,3,9105,8805,0.999625769,9201,8806,500000,9001,8807,300000,9001,,,,,,,,,,,,, +30729,"Nord Sahara 1959 / UTM zone 29N",9001,4307,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +30730,"Nord Sahara 1959 / UTM zone 30N",9001,4307,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +30731,"Nord Sahara 1959 / UTM zone 31N",9001,4307,16031,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +30732,"Nord Sahara 1959 / UTM zone 32N",9001,4307,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +30791,"Nord Sahara 1959 / Nord Algerie",9001,4307,18021,9801,1,0,4499,8801,40,9105,8802,3,9105,8805,0.999625544,9201,8806,500135,9001,8807,300090,9001,,,,,,,,,,,,, +30792,"Nord Sahara 1959 / Sud Algerie",9001,4307,18022,9801,1,0,4499,8801,37,9105,8802,3,9105,8805,0.999625769,9201,8806,500135,9001,8807,300090,9001,,,,,,,,,,,,, +30800,RT38 2.5 gon W,9001,4308,19929,9807,1,1,4530,8801,0,9110,8802,15.48298,9110,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +31028,"Yoff / UTM zone 28N",9001,4310,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31121,"Zanderij / UTM zone 21N",9001,4311,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31154,"Zanderij / TM 54 NW",9001,4311,17054,9807,1,0,4400,8801,0,9102,8802,-54,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31170,"Zanderij / Suriname Old TM",9001,4311,19954,9807,1,0,4400,8801,0,9110,8802,-55.41,9110,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31171,"Zanderij / Suriname TM",9001,4311,19955,9807,1,0,4400,8801,0,9110,8802,-55.41,9110,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31251,"MGI (Ferro) / Austria GK West Zone",9001,4805,18001,9807,1,0,4530,8801,0,9102,8802,28,9102,8805,1,9201,8806,0,9001,8807,-5000000,9001,,,,,,,577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +31252,"MGI (Ferro) / Austria GK Central Zone",9001,4805,18002,9807,1,0,4530,8801,0,9102,8802,31,9102,8805,1,9201,8806,0,9001,8807,-5000000,9001,,,,,,,577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +31253,"MGI (Ferro) / Austria GK East Zone",9001,4805,18003,9807,1,0,4530,8801,0,9102,8802,34,9102,8805,1,9201,8806,0,9001,8807,-5000000,9001,,,,,,,577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +31254,"MGI / Austria GK West",9001,4312,18004,9807,1,0,4530,8801,0,9110,8802,10.2,9110,8805,1,9201,8806,0,9001,8807,-5000000,9001,,,,,,,,,,,,, +31255,"MGI / Austria GK Central",9001,4312,18005,9807,1,0,4530,8801,0,9110,8802,13.2,9110,8805,1,9201,8806,0,9001,8807,-5000000,9001,,,,,,,,,,,,, +31256,"MGI / Austria GK East",9001,4312,18006,9807,1,0,4530,8801,0,9110,8802,16.2,9110,8805,1,9201,8806,0,9001,8807,-5000000,9001,,,,,,,,,,,,, +31257,"MGI / Austria GK M28",9001,4312,18007,9807,1,0,4530,8801,0,9110,8802,10.2,9110,8805,1,9201,8806,150000,9001,8807,-5000000,9001,,,,,,,,,,,,, +31258,"MGI / Austria GK M31",9001,4312,18008,9807,1,0,4530,8801,0,9110,8802,13.2,9110,8805,1,9201,8806,450000,9001,8807,-5000000,9001,,,,,,,,,,,,, +31259,"MGI / Austria GK M34",9001,4312,18009,9807,1,0,4530,8801,0,9110,8802,16.2,9110,8805,1,9201,8806,750000,9001,8807,-5000000,9001,,,,,,,,,,,,, +31265,"MGI / 3-degree Gauss zone 5",9001,4312,16265,9807,1,1,4499,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +31266,"MGI / 3-degree Gauss zone 6",9001,4312,16266,9807,1,1,4499,8801,0,9102,8802,18,9102,8805,1,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +31267,"MGI / 3-degree Gauss zone 7",9001,4312,16267,9807,1,1,4499,8801,0,9102,8802,21,9102,8805,1,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +31268,"MGI / 3-degree Gauss zone 8",9001,4312,16268,9807,1,1,4499,8801,0,9102,8802,24,9102,8805,1,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +31275,"MGI / Balkans zone 5",9001,4312,18275,9807,1,1,4530,8801,0,9102,8802,15,9102,8805,0.9999,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +31276,"MGI / Balkans zone 6",9001,4312,18276,9807,1,1,4530,8801,0,9102,8802,18,9102,8805,0.9999,9201,8806,6500000,9001,8807,0,9001,,,,,,,,,,,,, +31277,"MGI / Balkans zone 7",9001,4312,18277,9807,1,1,4530,8801,0,9102,8802,21,9102,8805,0.9999,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +31278,"MGI / Balkans zone 8",9001,4312,18277,9807,1,1,4530,8801,0,9102,8802,21,9102,8805,0.9999,9201,8806,7500000,9001,8807,0,9001,,,,,,,,,,,,, +31279,"MGI / Balkans zone 8",9001,4312,18278,9807,1,1,4530,8801,0,9102,8802,24,9102,8805,0.9999,9201,8806,8500000,9001,8807,0,9001,,,,,,,,,,,,, +31281,"MGI (Ferro) / Austria West Zone",9001,4805,18041,9807,1,0,4530,8801,0,9102,8802,28,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +31282,"MGI (Ferro) / Austria Central Zone",9001,4805,18042,9807,1,0,4530,8801,0,9102,8802,31,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +31283,"MGI (Ferro) / Austria East Zone",9001,4805,18043,9807,1,0,4530,8801,0,9102,8802,34,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +31284,"MGI / Austria M28",9001,4312,18044,9807,1,0,4530,8801,0,9110,8802,10.2,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +31285,"MGI / Austria M31",9001,4312,18045,9807,1,0,4530,8801,0,9110,8802,13.2,9110,8805,1,9201,8806,450000,9001,8807,0,9001,,,,,,,,,,,,, +31286,"MGI / Austria M34",9001,4312,18046,9807,1,0,4530,8801,0,9110,8802,16.2,9110,8805,1,9201,8806,750000,9001,8807,0,9001,,,,,,,,,,,,, +31287,"MGI / Austria Lambert",9001,4312,19947,9802,1,0,4530,8821,47.3,9110,8822,13.2,9110,8823,49,9110,8824,46,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +31288,"MGI (Ferro) / M28",9001,4805,18047,9807,1,0,4530,8801,0,9102,8802,28,9102,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +31289,"MGI (Ferro) / M31",9001,4805,18048,9807,1,0,4530,8801,0,9102,8802,31,9102,8805,1,9201,8806,450000,9001,8807,0,9001,,,,,,,,,,,,, +31290,"MGI (Ferro) / M34",9001,4805,18049,9807,1,0,4530,8801,0,9102,8802,34,9102,8805,1,9201,8806,750000,9001,8807,0,9001,,,,,,,,,,,,, +31291,"MGI (Ferro) / Austria West Zone",9001,4805,18041,9807,1,1,4499,8801,0,9102,8802,28,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +31292,"MGI (Ferro) / Austria Central Zone",9001,4805,18042,9807,1,1,4499,8801,0,9102,8802,31,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +31293,"MGI (Ferro) / Austria East Zone",9001,4805,18043,9807,1,1,4499,8801,0,9102,8802,34,9102,8805,1,9201,8806,0,9001,8807,0,9001,,,,,,,,,,,,, +31294,"MGI / M28",9001,4312,18044,9807,1,1,4499,8801,0,9110,8802,10.2,9110,8805,1,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +31295,"MGI / M31",9001,4312,18045,9807,1,1,4499,8801,0,9110,8802,13.2,9110,8805,1,9201,8806,450000,9001,8807,0,9001,,,,,,,,,,,,, +31296,"MGI / M34",9001,4312,18046,9807,1,1,4499,8801,0,9110,8802,16.2,9110,8805,1,9201,8806,750000,9001,8807,0,9001,,,,,,,,,,,,, +31297,"MGI / Austria Lambert",9001,4312,19947,9802,1,1,4499,8821,47.3,9110,8822,13.2,9110,8823,49,9110,8824,46,9110,8826,400000,9001,8827,400000,9001,,,,,,,,,, +31300,"Belge 1972 / Belge Lambert 72",9001,4313,19902,9803,1,0,4499,8821,90,9110,8822,4.2124983,9110,8823,49.5,9110,8824,51.1,9110,8826,150000.01256,9001,8827,5400088.4378,9001,,,,,,,,,, +31370,"Belge 1972 / Belgian Lambert 72",9001,4313,19961,9802,1,0,4499,8821,90,9110,8822,4.2202952,9110,8823,51.100000204,9110,8824,49.500000204,9110,8826,150000.013,9001,8827,5400088.438,9001,,,,,,,,,, +31461,"DHDN / 3-degree Gauss zone 1",9001,4314,16261,9807,1,1,4499,8801,0,9102,8802,3,9102,8805,1,9201,8806,1500000,9001,8807,0,9001,,,,,,,,,,,,, +31462,"DHDN / 3-degree Gauss zone 2",9001,4314,16262,9807,1,1,4499,8801,0,9102,8802,6,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +31463,"DHDN / 3-degree Gauss zone 3",9001,4314,16263,9807,1,1,4499,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +31464,"DHDN / 3-degree Gauss zone 4",9001,4314,16264,9807,1,1,4499,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +31465,"DHDN / 3-degree Gauss zone 5",9001,4314,16265,9807,1,1,4499,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +31466,"DHDN / 3-degree Gauss-Kruger zone 2",9001,4314,16262,9807,1,0,4530,8801,0,9102,8802,6,9102,8805,1,9201,8806,2500000,9001,8807,0,9001,,,,,,,,,,,,, +31467,"DHDN / 3-degree Gauss-Kruger zone 3",9001,4314,16263,9807,1,0,4530,8801,0,9102,8802,9,9102,8805,1,9201,8806,3500000,9001,8807,0,9001,,,,,,,,,,,,, +31468,"DHDN / 3-degree Gauss-Kruger zone 4",9001,4314,16264,9807,1,0,4530,8801,0,9102,8802,12,9102,8805,1,9201,8806,4500000,9001,8807,0,9001,,,,,,,,,,,,, +31469,"DHDN / 3-degree Gauss-Kruger zone 5",9001,4314,16265,9807,1,0,4530,8801,0,9102,8802,15,9102,8805,1,9201,8806,5500000,9001,8807,0,9001,,,,,,,,,,,,, +31528,"Conakry 1905 / UTM zone 28N",9001,4315,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31529,"Conakry 1905 / UTM zone 29N",9001,4315,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31600,"Dealul Piscului 1930 / Stereo 33",9001,4316,19927,9809,1,0,4499,8801,45.54,9110,8802,25.23328772,9110,8805,0.9996667,9201,8806,500000,9001,8807,500000,9001,,,,,,,,,,,,, +31700,"Dealul Piscului 1970/ Stereo 70",9001,4317,19926,9809,1,1,4530,8801,46,9102,8802,25,9102,8805,0.99975,9201,8806,500000,9001,8807,500000,9001,,,,,,,,,,,,, +31838,"NGN / UTM zone 38N",9001,4318,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31839,"NGN / UTM zone 39N",9001,4318,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31900,"KUDAMS / KTM",9001,4319,19928,9807,1,1,4400,8801,0,9102,8802,48,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31901,"KUDAMS / KTM",9001,4319,19997,9807,1,0,4400,8801,0,9102,8802,48,9102,8805,1,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31965,"SIRGAS 2000 / UTM zone 11N",9001,4674,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31966,"SIRGAS 2000 / UTM zone 12N",9001,4674,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31967,"SIRGAS 2000 / UTM zone 13N",9001,4674,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31968,"SIRGAS 2000 / UTM zone 14N",9001,4674,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31969,"SIRGAS 2000 / UTM zone 15N",9001,4674,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31970,"SIRGAS 2000 / UTM zone 16N",9001,4674,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31971,"SIRGAS 2000 / UTM zone 17N",9001,4674,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31972,"SIRGAS 2000 / UTM zone 18N",9001,4674,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31973,"SIRGAS 2000 / UTM zone 19N",9001,4674,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31974,"SIRGAS 2000 / UTM zone 20N",9001,4674,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31975,"SIRGAS 2000 / UTM zone 21N",9001,4674,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31976,"SIRGAS 2000 / UTM zone 22N",9001,4674,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31977,"SIRGAS 2000 / UTM zone 17S",9001,4674,16117,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31978,"SIRGAS 2000 / UTM zone 18S",9001,4674,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31979,"SIRGAS 2000 / UTM zone 19S",9001,4674,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31980,"SIRGAS 2000 / UTM zone 20S",9001,4674,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31981,"SIRGAS 2000 / UTM zone 21S",9001,4674,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31982,"SIRGAS 2000 / UTM zone 22S",9001,4674,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31983,"SIRGAS 2000 / UTM zone 23S",9001,4674,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31984,"SIRGAS 2000 / UTM zone 24S",9001,4674,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31985,"SIRGAS 2000 / UTM zone 25S",9001,4674,16125,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31986,"SIRGAS 1995 / UTM zone 17N",9001,4170,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31987,"SIRGAS 1995 / UTM zone 18N",9001,4170,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31988,"SIRGAS 1995 / UTM zone 19N",9001,4170,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31989,"SIRGAS 1995 / UTM zone 20N",9001,4170,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31990,"SIRGAS 1995 / UTM zone 21N",9001,4170,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31991,"SIRGAS 1995 / UTM zone 22N",9001,4170,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +31992,"SIRGAS 1995 / UTM zone 17S",9001,4170,16117,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31993,"SIRGAS 1995 / UTM zone 18S",9001,4170,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31994,"SIRGAS 1995 / UTM zone 19S",9001,4170,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31995,"SIRGAS 1995 / UTM zone 20S",9001,4170,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31996,"SIRGAS 1995 / UTM zone 21S",9001,4170,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31997,"SIRGAS 1995 / UTM zone 22S",9001,4170,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31998,"SIRGAS 1995 / UTM zone 23S",9001,4170,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +31999,"SIRGAS 1995 / UTM zone 24S",9001,4170,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32000,"SIRGAS 1995 / UTM zone 25S",9001,4170,16125,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32001,"NAD27 / Montana North",9003,4267,12501,9802,1,0,4497,8821,47,9110,8822,-109.3,9110,8823,48.43,9110,8824,47.51,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32002,"NAD27 / Montana Central",9003,4267,12502,9802,1,0,4497,8821,45.5,9110,8822,-109.3,9110,8823,47.53,9110,8824,46.27,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32003,"NAD27 / Montana South",9003,4267,12503,9802,1,0,4497,8821,44,9110,8822,-109.3,9110,8823,46.24,9110,8824,44.52,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32005,"NAD27 / Nebraska North",9003,4267,12601,9802,1,0,4497,8821,41.2,9110,8822,-100,9110,8823,41.51,9110,8824,42.49,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32006,"NAD27 / Nebraska South",9003,4267,12602,9802,1,0,4497,8821,39.4,9110,8822,-99.3,9110,8823,40.17,9110,8824,41.43,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32007,"NAD27 / Nevada East",9003,4267,12701,9807,1,0,4497,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32008,"NAD27 / Nevada Central",9003,4267,12702,9807,1,0,4497,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32009,"NAD27 / Nevada West",9003,4267,12703,9807,1,0,4497,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32010,"NAD27 / New Hampshire",9003,4267,12800,9807,1,0,4497,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32011,"NAD27 / New Jersey",9003,4267,12900,9807,1,0,4497,8801,38.5,9110,8802,-74.4,9110,8805,0.999975,9201,8806,2000000,9003,8807,0,9003,,,,,,,,,,,,, +32012,"NAD27 / New Mexico East",9003,4267,13001,9807,1,0,4497,8801,31,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32013,"NAD27 / New Mexico Central",9003,4267,13002,9807,1,0,4497,8801,31,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32014,"NAD27 / New Mexico West",9003,4267,13003,9807,1,0,4497,8801,31,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32015,"NAD27 / New York East",9003,4267,13101,9807,1,0,4497,8801,40,9110,8802,-74.2,9110,8805,0.999966667,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32016,"NAD27 / New York Central",9003,4267,13102,9807,1,0,4497,8801,40,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32017,"NAD27 / New York West",9003,4267,13103,9807,1,0,4497,8801,40,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32018,"NAD27 / New York Long Island",9003,4267,13104,9802,1,1,4497,8821,40.3,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,1000000,9003,8827,0,9003,,,,,,,,,, +32019,"NAD27 / North Carolina",9003,4267,13200,9802,1,0,4497,8821,33.45,9110,8822,-79,9110,8823,34.2,9110,8824,36.1,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32020,"NAD27 / North Dakota North",9003,4267,13301,9802,1,0,4497,8821,47,9110,8822,-100.3,9110,8823,47.26,9110,8824,48.44,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32021,"NAD27 / North Dakota South",9003,4267,13302,9802,1,0,4497,8821,45.4,9110,8822,-100.3,9110,8823,46.11,9110,8824,47.29,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32022,"NAD27 / Ohio North",9003,4267,13401,9802,1,0,4497,8821,39.4,9110,8822,-82.3,9110,8823,40.26,9110,8824,41.42,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32023,"NAD27 / Ohio South",9003,4267,13402,9802,1,0,4497,8821,38,9110,8822,-82.3,9110,8823,38.44,9110,8824,40.02,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32024,"NAD27 / Oklahoma North",9003,4267,13501,9802,1,0,4497,8821,35,9110,8822,-98,9110,8823,35.34,9110,8824,36.46,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32025,"NAD27 / Oklahoma South",9003,4267,13502,9802,1,0,4497,8821,33.2,9110,8822,-98,9110,8823,33.56,9110,8824,35.14,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32026,"NAD27 / Oregon North",9003,4267,13601,9802,1,0,4497,8821,43.4,9110,8822,-120.3,9110,8823,44.2,9110,8824,46,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32027,"NAD27 / Oregon South",9003,4267,13602,9802,1,0,4497,8821,41.4,9110,8822,-120.3,9110,8823,42.2,9110,8824,44,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32028,"NAD27 / Pennsylvania North",9003,4267,13701,9802,1,0,4497,8821,40.1,9110,8822,-77.45,9110,8823,40.53,9110,8824,41.57,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32029,"NAD27 / Pennsylvania South",9003,4267,13702,9802,1,1,4497,8821,39.2,9110,8822,-77.45,9110,8823,39.56,9110,8824,40.48,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32030,"NAD27 / Rhode Island",9003,4267,13800,9807,1,0,4497,8801,41.05,9110,8802,-71.3,9110,8805,0.9999938,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32031,"NAD27 / South Carolina North",9003,4267,13901,9802,1,0,4497,8821,33,9110,8822,-81,9110,8823,33.46,9110,8824,34.58,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32033,"NAD27 / South Carolina South",9003,4267,13902,9802,1,0,4497,8821,31.5,9110,8822,-81,9110,8823,32.2,9110,8824,33.4,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32034,"NAD27 / South Dakota North",9003,4267,14001,9802,1,0,4497,8821,43.5,9110,8822,-100,9110,8823,44.25,9110,8824,45.41,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32035,"NAD27 / South Dakota South",9003,4267,14002,9802,1,0,4497,8821,42.2,9110,8822,-100.2,9110,8823,42.5,9110,8824,44.24,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32036,"NAD27 / Tennessee",9003,4267,14100,9802,1,1,4497,8821,34.4,9110,8822,-86,9110,8823,35.15,9110,8824,36.25,9110,8826,100000,9003,8827,0,9003,,,,,,,,,, +32037,"NAD27 / Texas North",9003,4267,14201,9802,1,0,4497,8821,34,9110,8822,-101.3,9110,8823,34.39,9110,8824,36.11,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32038,"NAD27 / Texas North Central",9003,4267,14202,9802,1,0,4497,8821,31.4,9110,8822,-97.3,9110,8823,32.08,9110,8824,33.58,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32039,"NAD27 / Texas Central",9003,4267,14203,9802,1,0,4497,8821,29.4,9110,8822,-100.2,9110,8823,30.07,9110,8824,31.53,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32040,"NAD27 / Texas South Central",9003,4267,14204,9802,1,0,4497,8821,27.5,9110,8822,-99,9110,8823,28.23,9110,8824,30.17,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32041,"NAD27 / Texas South",9003,4267,14205,9802,1,0,4497,8821,25.4,9110,8822,-98.3,9110,8823,26.1,9110,8824,27.5,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32042,"NAD27 / Utah North",9003,4267,14301,9802,1,0,4497,8821,40.2,9110,8822,-111.3,9110,8823,40.43,9110,8824,41.47,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32043,"NAD27 / Utah Central",9003,4267,14302,9802,1,0,4497,8821,38.2,9110,8822,-111.3,9110,8823,39.01,9110,8824,40.39,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32044,"NAD27 / Utah South",9003,4267,14303,9802,1,0,4497,8821,36.4,9110,8822,-111.3,9110,8823,37.13,9110,8824,38.21,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32045,"NAD27 / Vermont",9003,4267,14400,9807,1,0,4497,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32046,"NAD27 / Virginia North",9003,4267,14501,9802,1,0,4497,8821,37.4,9110,8822,-78.3,9110,8823,38.02,9110,8824,39.12,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32047,"NAD27 / Virginia South",9003,4267,14502,9802,1,0,4497,8821,36.2,9110,8822,-78.3,9110,8823,36.46,9110,8824,37.58,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32048,"NAD27 / Washington North",9003,4267,14601,9802,1,0,4497,8821,47,9110,8822,-120.5,9110,8823,47.3,9110,8824,48.44,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32049,"NAD27 / Washington South",9003,4267,14602,9802,1,0,4497,8821,45.2,9110,8822,-120.3,9110,8823,45.5,9110,8824,47.2,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32050,"NAD27 / West Virginia North",9003,4267,14701,9802,1,0,4497,8821,38.3,9110,8822,-79.3,9110,8823,39,9110,8824,40.15,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32051,"NAD27 / West Virginia South",9003,4267,14702,9802,1,0,4497,8821,37,9110,8822,-81,9110,8823,37.29,9110,8824,38.53,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32052,"NAD27 / Wisconsin North",9003,4267,14801,9802,1,0,4497,8821,45.1,9110,8822,-90,9110,8823,45.34,9110,8824,46.46,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32053,"NAD27 / Wisconsin Central",9003,4267,14802,9802,1,0,4497,8821,43.5,9110,8822,-90,9110,8823,44.15,9110,8824,45.3,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32054,"NAD27 / Wisconsin South",9003,4267,14803,9802,1,0,4497,8821,42,9110,8822,-90,9110,8823,42.44,9110,8824,44.04,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32055,"NAD27 / Wyoming East",9003,4267,14901,9807,1,0,4497,8801,40.4,9110,8802,-105.1,9110,8805,0.999941177,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32056,"NAD27 / Wyoming East Central",9003,4267,14902,9807,1,0,4497,8801,40.4,9110,8802,-107.2,9110,8805,0.999941177,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32057,"NAD27 / Wyoming West Central",9003,4267,14903,9807,1,0,4497,8801,40.4,9110,8802,-108.45,9110,8805,0.999941177,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32058,"NAD27 / Wyoming West",9003,4267,14904,9807,1,0,4497,8801,40.4,9110,8802,-110.05,9110,8805,0.999941177,9201,8806,500000,9003,8807,0,9003,,,,,,,,,,,,, +32061,"NAD27 / Guatemala Norte",9001,4267,18211,9801,1,1,4499,8801,16.49,9110,8802,-90.2,9110,8805,0.99992226,9201,8806,500000,9001,8807,292209.579,9001,,,,,,,,,,,,, +32062,"NAD27 / Guatemala Sur",9001,4267,18212,9801,1,1,4499,8801,14.54,9110,8802,-90.2,9110,8805,0.99989906,9201,8806,500000,9001,8807,325992.681,9001,,,,,,,,,,,,, +32064,"NAD27 / BLM 14N (ftUS)",9003,4267,15914,9807,1,0,4497,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32065,"NAD27 / BLM 15N (ftUS)",9003,4267,15915,9807,1,0,4497,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32066,"NAD27 / BLM 16N (ftUS)",9003,4267,15916,9807,1,0,4497,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32067,"NAD27 / BLM 17N (ftUS)",9003,4267,15917,9807,1,0,4497,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32074,"NAD27 / BLM 14N (feet)",9003,4267,15914,9807,1,1,4497,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32075,"NAD27 / BLM 15N (feet)",9003,4267,15915,9807,1,1,4497,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32076,"NAD27 / BLM 16N (feet)",9003,4267,15916,9807,1,1,4497,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32077,"NAD27 / BLM 17N (feet)",9003,4267,15917,9807,1,1,4497,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32081,"NAD27 / MTM zone 1",9001,4267,17701,9807,1,0,4400,8801,0,9102,8802,-53,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32082,"NAD27 / MTM zone 2",9001,4267,17702,9807,1,0,4400,8801,0,9102,8802,-56,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32083,"NAD27 / MTM zone 3",9001,4267,17703,9807,1,0,4400,8801,0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32084,"NAD27 / MTM zone 4",9001,4267,17704,9807,1,0,4400,8801,0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32085,"NAD27 / MTM zone 5",9001,4267,17705,9807,1,0,4400,8801,0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32086,"NAD27 / MTM zone 6",9001,4267,17706,9807,1,0,4400,8801,0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32098,"NAD27 / Quebec Lambert",9001,4267,19944,9802,1,0,4499,8821,44,9110,8822,-68.3,9110,8823,60,9110,8824,46,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +32099,"NAD27 / Louisiana Offshore",9003,4267,11703,9802,1,0,4497,8821,25.4,9110,8822,-91.2,9110,8823,27.5,9110,8824,26.1,9110,8826,2000000,9003,8827,0,9003,,,,,,,,,, +32100,"NAD83 / Montana",9001,4269,12530,9802,1,0,4499,8821,44.15,9110,8822,-109.3,9110,8823,49,9110,8824,45,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32104,"NAD83 / Nebraska",9001,4269,12630,9802,1,0,4499,8821,39.5,9110,8822,-100,9110,8823,43,9110,8824,40,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +32107,"NAD83 / Nevada East",9001,4269,12731,9807,1,0,4499,8801,34.45,9110,8802,-115.35,9110,8805,0.9999,9201,8806,200000,9001,8807,8000000,9001,,,,,,,,,,,,, +32108,"NAD83 / Nevada Central",9001,4269,12732,9807,1,0,4499,8801,34.45,9110,8802,-116.4,9110,8805,0.9999,9201,8806,500000,9001,8807,6000000,9001,,,,,,,,,,,,, +32109,"NAD83 / Nevada West",9001,4269,12733,9807,1,0,4499,8801,34.45,9110,8802,-118.35,9110,8805,0.9999,9201,8806,800000,9001,8807,4000000,9001,,,,,,,,,,,,, +32110,"NAD83 / New Hampshire",9001,4269,12830,9807,1,0,4499,8801,42.3,9110,8802,-71.4,9110,8805,0.999966667,9201,8806,300000,9001,8807,0,9001,,,,,,,,,,,,, +32111,"NAD83 / New Jersey",9001,4269,12930,9807,1,0,4499,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +32112,"NAD83 / New Mexico East",9001,4269,13031,9807,1,0,4499,8801,31,9110,8802,-104.2,9110,8805,0.999909091,9201,8806,165000,9001,8807,0,9001,,,,,,,,,,,,, +32113,"NAD83 / New Mexico Central",9001,4269,13032,9807,1,0,4499,8801,31,9110,8802,-106.15,9110,8805,0.9999,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32114,"NAD83 / New Mexico West",9001,4269,13033,9807,1,0,4499,8801,31,9110,8802,-107.5,9110,8805,0.999916667,9201,8806,830000,9001,8807,0,9001,,,,,,,,,,,,, +32115,"NAD83 / New York East",9001,4269,13131,9807,1,0,4499,8801,38.5,9110,8802,-74.3,9110,8805,0.9999,9201,8806,150000,9001,8807,0,9001,,,,,,,,,,,,, +32116,"NAD83 / New York Central",9001,4269,13132,9807,1,0,4499,8801,40,9110,8802,-76.35,9110,8805,0.9999375,9201,8806,250000,9001,8807,0,9001,,,,,,,,,,,,, +32117,"NAD83 / New York West",9001,4269,13133,9807,1,0,4499,8801,40,9110,8802,-78.35,9110,8805,0.9999375,9201,8806,350000,9001,8807,0,9001,,,,,,,,,,,,, +32118,"NAD83 / New York Long Island",9001,4269,13134,9802,1,0,4499,8821,40.1,9110,8822,-74,9110,8823,41.02,9110,8824,40.4,9110,8826,300000,9001,8827,0,9001,,,,,,,,,, +32119,"NAD83 / North Carolina",9001,4269,13230,9802,1,0,4499,8821,33.45,9110,8822,-79,9110,8823,36.1,9110,8824,34.2,9110,8826,609601.22,9001,8827,0,9001,,,,,,,,,, +32120,"NAD83 / North Dakota North",9001,4269,13331,9802,1,0,4499,8821,47,9110,8822,-100.3,9110,8823,48.44,9110,8824,47.26,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32121,"NAD83 / North Dakota South",9001,4269,13332,9802,1,0,4499,8821,45.4,9110,8822,-100.3,9110,8823,47.29,9110,8824,46.11,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32122,"NAD83 / Ohio North",9001,4269,13431,9802,1,0,4499,8821,39.4,9110,8822,-82.3,9110,8823,41.42,9110,8824,40.26,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32123,"NAD83 / Ohio South",9001,4269,13432,9802,1,0,4499,8821,38,9110,8822,-82.3,9110,8823,40.02,9110,8824,38.44,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32124,"NAD83 / Oklahoma North",9001,4269,13531,9802,1,0,4499,8821,35,9110,8822,-98,9110,8823,36.46,9110,8824,35.34,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32125,"NAD83 / Oklahoma South",9001,4269,13532,9802,1,0,4499,8821,33.2,9110,8822,-98,9110,8823,35.14,9110,8824,33.56,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32126,"NAD83 / Oregon North",9001,4269,13631,9802,1,0,4499,8821,43.4,9110,8822,-120.3,9110,8823,46,9110,8824,44.2,9110,8826,2500000,9001,8827,0,9001,,,,,,,,,, +32127,"NAD83 / Oregon South",9001,4269,13632,9802,1,0,4499,8821,41.4,9110,8822,-120.3,9110,8823,44,9110,8824,42.2,9110,8826,1500000,9001,8827,0,9001,,,,,,,,,, +32128,"NAD83 / Pennsylvania North",9001,4269,13731,9802,1,0,4499,8821,40.1,9110,8822,-77.45,9110,8823,41.57,9110,8824,40.53,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32129,"NAD83 / Pennsylvania South",9001,4269,13732,9802,1,0,4499,8821,39.2,9110,8822,-77.45,9110,8823,40.58,9110,8824,39.56,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32130,"NAD83 / Rhode Island",9001,4269,13830,9807,1,0,4499,8801,41.05,9110,8802,-71.3,9110,8805,0.99999375,9201,8806,100000,9001,8807,0,9001,,,,,,,,,,,,, +32133,"NAD83 / South Carolina",9001,4269,13930,9802,1,0,4499,8821,31.5,9110,8822,-81,9110,8823,34.5,9110,8824,32.3,9110,8826,609600,9001,8827,0,9001,,,,,,,,,, +32134,"NAD83 / South Dakota North",9001,4269,14031,9802,1,0,4499,8821,43.5,9110,8822,-100,9110,8823,45.41,9110,8824,44.25,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32135,"NAD83 / South Dakota South",9001,4269,14032,9802,1,0,4499,8821,42.2,9110,8822,-100.2,9110,8823,44.24,9110,8824,42.5,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32136,"NAD83 / Tennessee",9001,4269,14130,9802,1,0,4499,8821,34.2,9110,8822,-86,9110,8823,36.25,9110,8824,35.15,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32137,"NAD83 / Texas North",9001,4269,14231,9802,1,0,4499,8821,34,9110,8822,-101.3,9110,8823,36.11,9110,8824,34.39,9110,8826,200000,9001,8827,1000000,9001,,,,,,,,,, +32138,"NAD83 / Texas North Central",9001,4269,14232,9802,1,0,4499,8821,31.4,9110,8822,-98.3,9110,8823,33.58,9110,8824,32.08,9110,8826,600000,9001,8827,2000000,9001,,,,,,,,,, +32139,"NAD83 / Texas Central",9001,4269,14233,9802,1,0,4499,8821,29.4,9110,8822,-100.2,9110,8823,31.53,9110,8824,30.07,9110,8826,700000,9001,8827,3000000,9001,,,,,,,,,, +32140,"NAD83 / Texas South Central",9001,4269,14234,9802,1,0,4499,8821,27.5,9110,8822,-99,9110,8823,30.17,9110,8824,28.23,9110,8826,600000,9001,8827,4000000,9001,,,,,,,,,, +32141,"NAD83 / Texas South",9001,4269,14235,9802,1,0,4499,8821,25.4,9110,8822,-98.3,9110,8823,27.5,9110,8824,26.1,9110,8826,300000,9001,8827,5000000,9001,,,,,,,,,, +32142,"NAD83 / Utah North",9001,4269,14331,9802,1,0,4499,8821,40.2,9110,8822,-111.3,9110,8823,41.47,9110,8824,40.43,9110,8826,500000,9001,8827,1000000,9001,,,,,,,,,, +32143,"NAD83 / Utah Central",9001,4269,14332,9802,1,0,4499,8821,38.2,9110,8822,-111.3,9110,8823,40.39,9110,8824,39.01,9110,8826,500000,9001,8827,2000000,9001,,,,,,,,,, +32144,"NAD83 / Utah South",9001,4269,14333,9802,1,0,4499,8821,36.4,9110,8822,-111.3,9110,8823,38.21,9110,8824,37.13,9110,8826,500000,9001,8827,3000000,9001,,,,,,,,,, +32145,"NAD83 / Vermont",9001,4269,14430,9807,1,0,4499,8801,42.3,9110,8802,-72.3,9110,8805,0.999964286,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32146,"NAD83 / Virginia North",9001,4269,14531,9802,1,0,4499,8821,37.4,9110,8822,-78.3,9110,8823,39.12,9110,8824,38.02,9110,8826,3500000,9001,8827,2000000,9001,,,,,,,,,, +32147,"NAD83 / Virginia South",9001,4269,14532,9802,1,0,4499,8821,36.2,9110,8822,-78.3,9110,8823,37.58,9110,8824,36.46,9110,8826,3500000,9001,8827,1000000,9001,,,,,,,,,, +32148,"NAD83 / Washington North",9001,4269,14631,9802,1,0,4499,8821,47,9110,8822,-120.5,9110,8823,48.44,9110,8824,47.3,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +32149,"NAD83 / Washington South",9001,4269,14632,9802,1,0,4499,8821,45.2,9110,8822,-120.3,9110,8823,47.2,9110,8824,45.5,9110,8826,500000,9001,8827,0,9001,,,,,,,,,, +32150,"NAD83 / West Virginia North",9001,4269,14731,9802,1,0,4499,8821,38.3,9110,8822,-79.3,9110,8823,40.15,9110,8824,39,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32151,"NAD83 / West Virginia South",9001,4269,14732,9802,1,0,4499,8821,37,9110,8822,-81,9110,8823,38.53,9110,8824,37.29,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32152,"NAD83 / Wisconsin North",9001,4269,14831,9802,1,0,4499,8821,45.1,9110,8822,-90,9110,8823,46.46,9110,8824,45.34,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32153,"NAD83 / Wisconsin Central",9001,4269,14832,9802,1,0,4499,8821,43.5,9110,8822,-90,9110,8823,45.3,9110,8824,44.15,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32154,"NAD83 / Wisconsin South",9001,4269,14833,9802,1,0,4499,8821,42,9110,8822,-90,9110,8823,44.04,9110,8824,42.44,9110,8826,600000,9001,8827,0,9001,,,,,,,,,, +32155,"NAD83 / Wyoming East",9001,4269,14931,9807,1,0,4499,8801,40.3,9110,8802,-105.1,9110,8805,0.9999375,9201,8806,200000,9001,8807,0,9001,,,,,,,,,,,,, +32156,"NAD83 / Wyoming East Central",9001,4269,14932,9807,1,0,4499,8801,40.3,9110,8802,-107.2,9110,8805,0.9999375,9201,8806,400000,9001,8807,100000,9001,,,,,,,,,,,,, +32157,"NAD83 / Wyoming West Central",9001,4269,14933,9807,1,0,4499,8801,40.3,9110,8802,-108.45,9110,8805,0.9999375,9201,8806,600000,9001,8807,0,9001,,,,,,,,,,,,, +32158,"NAD83 / Wyoming West",9001,4269,14934,9807,1,0,4499,8801,40.3,9110,8802,-110.05,9110,8805,0.9999375,9201,8806,800000,9001,8807,100000,9001,,,,,,,,,,,,, +32161,"NAD83 / Puerto Rico & Virgin Is.",9001,4269,15230,9802,1,0,4499,8821,17.5,9110,8822,-66.26,9110,8823,18.26,9110,8824,18.02,9110,8826,200000,9001,8827,200000,9001,,,,,,,,,, +32164,"NAD83 / BLM 14N (ftUS)",9003,4269,15914,9807,1,0,4497,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32165,"NAD83 / BLM 15N (ftUS)",9003,4269,15915,9807,1,0,4497,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32166,"NAD83 / BLM 16N (ftUS)",9003,4269,15916,9807,1,0,4497,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32167,"NAD83 / BLM 17N (ftUS)",9003,4269,15917,9807,1,0,4497,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32180,"NAD83 / SCoPQ zone 2",9001,4269,17700,9807,1,1,4499,8801,0,9110,8802,-55.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32181,"NAD83 / MTM zone 1",9001,4269,17701,9807,1,0,4496,8801,0,9102,8802,-53,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32182,"NAD83 / MTM zone 2",9001,4269,17702,9807,1,0,4496,8801,0,9102,8802,-56,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32183,"NAD83 / MTM zone 3",9001,4269,17703,9807,1,0,4496,8801,0,9110,8802,-58.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32184,"NAD83 / MTM zone 4",9001,4269,17704,9807,1,0,4496,8801,0,9110,8802,-61.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32185,"NAD83 / MTM zone 5",9001,4269,17705,9807,1,0,4496,8801,0,9110,8802,-64.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32186,"NAD83 / MTM zone 6",9001,4269,17706,9807,1,0,4496,8801,0,9110,8802,-67.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32187,"NAD83 / MTM zone 7",9001,4269,17707,9807,1,0,4496,8801,0,9110,8802,-70.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32188,"NAD83 / MTM zone 8",9001,4269,17708,9807,1,0,4496,8801,0,9110,8802,-73.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32189,"NAD83 / MTM zone 9",9001,4269,17709,9807,1,0,4496,8801,0,9110,8802,-76.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32190,"NAD83 / MTM zone 10",9001,4269,17710,9807,1,0,4496,8801,0,9110,8802,-79.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32191,"NAD83 / MTM zone 11",9001,4269,17711,9807,1,0,4400,8801,0,9110,8802,-82.3,9110,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32192,"NAD83 / MTM zone 12",9001,4269,17712,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32193,"NAD83 / MTM zone 13",9001,4269,17713,9807,1,0,4400,8801,0,9102,8802,-84,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32194,"NAD83 / MTM zone 14",9001,4269,17714,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32195,"NAD83 / MTM zone 15",9001,4269,17715,9807,1,0,4400,8801,0,9102,8802,-90,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32196,"NAD83 / MTM zone 16",9001,4269,17716,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32197,"NAD83 / MTM zone 17",9001,4269,17717,9807,1,0,4400,8801,0,9102,8802,-96,9102,8805,0.9999,9201,8806,304800,9001,8807,0,9001,,,,,,,,,,,,, +32198,"NAD83 / Quebec Lambert",9001,4269,19944,9802,1,0,4499,8821,44,9110,8822,-68.3,9110,8823,60,9110,8824,46,9110,8826,0,9001,8827,0,9001,,,,,,,,,, +32199,"NAD83 / Louisiana Offshore",9001,4269,11733,9802,1,0,4499,8821,25.3,9110,8822,-91.2,9110,8823,27.5,9110,8824,26.1,9110,8826,1000000,9001,8827,0,9001,,,,,,,,,, +32201,"WGS 72 / UTM zone 1N",9001,4322,16001,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32202,"WGS 72 / UTM zone 2N",9001,4322,16002,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32203,"WGS 72 / UTM zone 3N",9001,4322,16003,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32204,"WGS 72 / UTM zone 4N",9001,4322,16004,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32205,"WGS 72 / UTM zone 5N",9001,4322,16005,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32206,"WGS 72 / UTM zone 6N",9001,4322,16006,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32207,"WGS 72 / UTM zone 7N",9001,4322,16007,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32208,"WGS 72 / UTM zone 8N",9001,4322,16008,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32209,"WGS 72 / UTM zone 9N",9001,4322,16009,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32210,"WGS 72 / UTM zone 10N",9001,4322,16010,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32211,"WGS 72 / UTM zone 11N",9001,4322,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32212,"WGS 72 / UTM zone 12N",9001,4322,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32213,"WGS 72 / UTM zone 13N",9001,4322,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32214,"WGS 72 / UTM zone 14N",9001,4322,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32215,"WGS 72 / UTM zone 15N",9001,4322,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32216,"WGS 72 / UTM zone 16N",9001,4322,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32217,"WGS 72 / UTM zone 17N",9001,4322,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32218,"WGS 72 / UTM zone 18N",9001,4322,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32219,"WGS 72 / UTM zone 19N",9001,4322,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32220,"WGS 72 / UTM zone 20N",9001,4322,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32221,"WGS 72 / UTM zone 21N",9001,4322,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32222,"WGS 72 / UTM zone 22N",9001,4322,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32223,"WGS 72 / UTM zone 23N",9001,4322,16023,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32224,"WGS 72 / UTM zone 24N",9001,4322,16024,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32225,"WGS 72 / UTM zone 25N",9001,4322,16025,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32226,"WGS 72 / UTM zone 26N",9001,4322,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32227,"WGS 72 / UTM zone 27N",9001,4322,16027,9807,1,0,4400,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32228,"WGS 72 / UTM zone 28N",9001,4322,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32229,"WGS 72 / UTM zone 29N",9001,4322,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32230,"WGS 72 / UTM zone 30N",9001,4322,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32231,"WGS 72 / UTM zone 31N",9001,4322,16031,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32232,"WGS 72 / UTM zone 32N",9001,4322,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32233,"WGS 72 / UTM zone 33N",9001,4322,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32234,"WGS 72 / UTM zone 34N",9001,4322,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32235,"WGS 72 / UTM zone 35N",9001,4322,16035,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32236,"WGS 72 / UTM zone 36N",9001,4322,16036,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32237,"WGS 72 / UTM zone 37N",9001,4322,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32238,"WGS 72 / UTM zone 38N",9001,4322,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32239,"WGS 72 / UTM zone 39N",9001,4322,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32240,"WGS 72 / UTM zone 40N",9001,4322,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32241,"WGS 72 / UTM zone 41N",9001,4322,16041,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32242,"WGS 72 / UTM zone 42N",9001,4322,16042,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32243,"WGS 72 / UTM zone 43N",9001,4322,16043,9807,1,0,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32244,"WGS 72 / UTM zone 44N",9001,4322,16044,9807,1,0,4400,8801,0,9102,8802,81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32245,"WGS 72 / UTM zone 45N",9001,4322,16045,9807,1,0,4400,8801,0,9102,8802,87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32246,"WGS 72 / UTM zone 46N",9001,4322,16046,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32247,"WGS 72 / UTM zone 47N",9001,4322,16047,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32248,"WGS 72 / UTM zone 48N",9001,4322,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32249,"WGS 72 / UTM zone 49N",9001,4322,16049,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32250,"WGS 72 / UTM zone 50N",9001,4322,16050,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32251,"WGS 72 / UTM zone 51N",9001,4322,16051,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32252,"WGS 72 / UTM zone 52N",9001,4322,16052,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32253,"WGS 72 / UTM zone 53N",9001,4322,16053,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32254,"WGS 72 / UTM zone 54N",9001,4322,16054,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32255,"WGS 72 / UTM zone 55N",9001,4322,16055,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32256,"WGS 72 / UTM zone 56N",9001,4322,16056,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32257,"WGS 72 / UTM zone 57N",9001,4322,16057,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32258,"WGS 72 / UTM zone 58N",9001,4322,16058,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32259,"WGS 72 / UTM zone 59N",9001,4322,16059,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32260,"WGS 72 / UTM zone 60N",9001,4322,16060,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32301,"WGS 72 / UTM zone 1S",9001,4322,16101,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32302,"WGS 72 / UTM zone 2S",9001,4322,16102,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32303,"WGS 72 / UTM zone 3S",9001,4322,16103,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32304,"WGS 72 / UTM zone 4S",9001,4322,16104,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32305,"WGS 72 / UTM zone 5S",9001,4322,16105,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32306,"WGS 72 / UTM zone 6S",9001,4322,16106,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32307,"WGS 72 / UTM zone 7S",9001,4322,16107,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32308,"WGS 72 / UTM zone 8S",9001,4322,16108,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32309,"WGS 72 / UTM zone 9S",9001,4322,16109,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32310,"WGS 72 / UTM zone 10S",9001,4322,16110,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32311,"WGS 72 / UTM zone 11S",9001,4322,16111,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32312,"WGS 72 / UTM zone 12S",9001,4322,16112,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32313,"WGS 72 / UTM zone 13S",9001,4322,16113,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32314,"WGS 72 / UTM zone 14S",9001,4322,16114,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32315,"WGS 72 / UTM zone 15S",9001,4322,16115,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32316,"WGS 72 / UTM zone 16S",9001,4322,16116,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32317,"WGS 72 / UTM zone 17S",9001,4322,16117,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32318,"WGS 72 / UTM zone 18S",9001,4322,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32319,"WGS 72 / UTM zone 19S",9001,4322,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32320,"WGS 72 / UTM zone 20S",9001,4322,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32321,"WGS 72 / UTM zone 21S",9001,4322,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32322,"WGS 72 / UTM zone 22S",9001,4322,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32323,"WGS 72 / UTM zone 23S",9001,4322,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32324,"WGS 72 / UTM zone 24S",9001,4322,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32325,"WGS 72 / UTM zone 25S",9001,4322,16125,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32326,"WGS 72 / UTM zone 26S",9001,4322,16126,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32327,"WGS 72 / UTM zone 27S",9001,4322,16127,9807,1,0,4400,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32328,"WGS 72 / UTM zone 28S",9001,4322,16128,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32329,"WGS 72 / UTM zone 29S",9001,4322,16129,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32330,"WGS 72 / UTM zone 30S",9001,4322,16130,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32331,"WGS 72 / UTM zone 31S",9001,4322,16131,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32332,"WGS 72 / UTM zone 32S",9001,4322,16132,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32333,"WGS 72 / UTM zone 33S",9001,4322,16133,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32334,"WGS 72 / UTM zone 34S",9001,4322,16134,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32335,"WGS 72 / UTM zone 35S",9001,4322,16135,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32336,"WGS 72 / UTM zone 36S",9001,4322,16136,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32337,"WGS 72 / UTM zone 37S",9001,4322,16137,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32338,"WGS 72 / UTM zone 38S",9001,4322,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32339,"WGS 72 / UTM zone 39S",9001,4322,16139,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32340,"WGS 72 / UTM zone 40S",9001,4322,16140,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32341,"WGS 72 / UTM zone 41S",9001,4322,16141,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32342,"WGS 72 / UTM zone 42S",9001,4322,16142,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32343,"WGS 72 / UTM zone 43S",9001,4322,16143,9807,1,0,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32344,"WGS 72 / UTM zone 44S",9001,4322,16144,9807,1,0,4400,8801,0,9102,8802,81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32345,"WGS 72 / UTM zone 45S",9001,4322,16145,9807,1,0,4400,8801,0,9102,8802,87,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32346,"WGS 72 / UTM zone 46S",9001,4322,16146,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32347,"WGS 72 / UTM zone 47S",9001,4322,16147,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32348,"WGS 72 / UTM zone 48S",9001,4322,16148,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32349,"WGS 72 / UTM zone 49S",9001,4322,16149,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32350,"WGS 72 / UTM zone 50S",9001,4322,16150,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32351,"WGS 72 / UTM zone 51S",9001,4322,16151,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32352,"WGS 72 / UTM zone 52S",9001,4322,16152,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32353,"WGS 72 / UTM zone 53S",9001,4322,16153,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32354,"WGS 72 / UTM zone 54S",9001,4322,16154,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32355,"WGS 72 / UTM zone 55S",9001,4322,16155,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32356,"WGS 72 / UTM zone 56S",9001,4322,16156,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32357,"WGS 72 / UTM zone 57S",9001,4322,16157,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32358,"WGS 72 / UTM zone 58S",9001,4322,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32359,"WGS 72 / UTM zone 59S",9001,4322,16159,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32360,"WGS 72 / UTM zone 60S",9001,4322,16160,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32401,"WGS 72BE / UTM zone 1N",9001,4324,16001,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32402,"WGS 72BE / UTM zone 2N",9001,4324,16002,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32403,"WGS 72BE / UTM zone 3N",9001,4324,16003,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32404,"WGS 72BE / UTM zone 4N",9001,4324,16004,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32405,"WGS 72BE / UTM zone 5N",9001,4324,16005,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32406,"WGS 72BE / UTM zone 6N",9001,4324,16006,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32407,"WGS 72BE / UTM zone 7N",9001,4324,16007,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32408,"WGS 72BE / UTM zone 8N",9001,4324,16008,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32409,"WGS 72BE / UTM zone 9N",9001,4324,16009,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32410,"WGS 72BE / UTM zone 10N",9001,4324,16010,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32411,"WGS 72BE / UTM zone 11N",9001,4324,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32412,"WGS 72BE / UTM zone 12N",9001,4324,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32413,"WGS 72BE / UTM zone 13N",9001,4324,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32414,"WGS 72BE / UTM zone 14N",9001,4324,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32415,"WGS 72BE / UTM zone 15N",9001,4324,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32416,"WGS 72BE / UTM zone 16N",9001,4324,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32417,"WGS 72BE / UTM zone 17N",9001,4324,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32418,"WGS 72BE / UTM zone 18N",9001,4324,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32419,"WGS 72BE / UTM zone 19N",9001,4324,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32420,"WGS 72BE / UTM zone 20N",9001,4324,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32421,"WGS 72BE / UTM zone 21N",9001,4324,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32422,"WGS 72BE / UTM zone 22N",9001,4324,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32423,"WGS 72BE / UTM zone 23N",9001,4324,16023,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32424,"WGS 72BE / UTM zone 24N",9001,4324,16024,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32425,"WGS 72BE / UTM zone 25N",9001,4324,16025,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32426,"WGS 72BE / UTM zone 26N",9001,4324,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32427,"WGS 72BE / UTM zone 27N",9001,4324,16027,9807,1,0,4400,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32428,"WGS 72BE / UTM zone 28N",9001,4324,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32429,"WGS 72BE / UTM zone 29N",9001,4324,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32430,"WGS 72BE / UTM zone 30N",9001,4324,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32431,"WGS 72BE / UTM zone 31N",9001,4324,16031,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32432,"WGS 72BE / UTM zone 32N",9001,4324,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32433,"WGS 72BE / UTM zone 33N",9001,4324,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32434,"WGS 72BE / UTM zone 34N",9001,4324,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32435,"WGS 72BE / UTM zone 35N",9001,4324,16035,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32436,"WGS 72BE / UTM zone 36N",9001,4324,16036,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32437,"WGS 72BE / UTM zone 37N",9001,4324,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32438,"WGS 72BE / UTM zone 38N",9001,4324,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32439,"WGS 72BE / UTM zone 39N",9001,4324,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32440,"WGS 72BE / UTM zone 40N",9001,4324,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32441,"WGS 72BE / UTM zone 41N",9001,4324,16041,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32442,"WGS 72BE / UTM zone 42N",9001,4324,16042,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32443,"WGS 72BE / UTM zone 43N",9001,4324,16043,9807,1,0,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32444,"WGS 72BE / UTM zone 44N",9001,4324,16044,9807,1,0,4400,8801,0,9102,8802,81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32445,"WGS 72BE / UTM zone 45N",9001,4324,16045,9807,1,0,4400,8801,0,9102,8802,87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32446,"WGS 72BE / UTM zone 46N",9001,4324,16046,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32447,"WGS 72BE / UTM zone 47N",9001,4324,16047,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32448,"WGS 72BE / UTM zone 48N",9001,4324,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32449,"WGS 72BE / UTM zone 49N",9001,4324,16049,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32450,"WGS 72BE / UTM zone 50N",9001,4324,16050,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32451,"WGS 72BE / UTM zone 51N",9001,4324,16051,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32452,"WGS 72BE / UTM zone 52N",9001,4324,16052,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32453,"WGS 72BE / UTM zone 53N",9001,4324,16053,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32454,"WGS 72BE / UTM zone 54N",9001,4324,16054,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32455,"WGS 72BE / UTM zone 55N",9001,4324,16055,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32456,"WGS 72BE / UTM zone 56N",9001,4324,16056,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32457,"WGS 72BE / UTM zone 57N",9001,4324,16057,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32458,"WGS 72BE / UTM zone 58N",9001,4324,16058,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32459,"WGS 72BE / UTM zone 59N",9001,4324,16059,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32460,"WGS 72BE / UTM zone 60N",9001,4324,16060,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32501,"WGS 72BE / UTM zone 1S",9001,4324,16101,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32502,"WGS 72BE / UTM zone 2S",9001,4324,16102,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32503,"WGS 72BE / UTM zone 3S",9001,4324,16103,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32504,"WGS 72BE / UTM zone 4S",9001,4324,16104,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32505,"WGS 72BE / UTM zone 5S",9001,4324,16105,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32506,"WGS 72BE / UTM zone 6S",9001,4324,16106,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32507,"WGS 72BE / UTM zone 7S",9001,4324,16107,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32508,"WGS 72BE / UTM zone 8S",9001,4324,16108,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32509,"WGS 72BE / UTM zone 9S",9001,4324,16109,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32510,"WGS 72BE / UTM zone 10S",9001,4324,16110,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32511,"WGS 72BE / UTM zone 11S",9001,4324,16111,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32512,"WGS 72BE / UTM zone 12S",9001,4324,16112,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32513,"WGS 72BE / UTM zone 13S",9001,4324,16113,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32514,"WGS 72BE / UTM zone 14S",9001,4324,16114,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32515,"WGS 72BE / UTM zone 15S",9001,4324,16115,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32516,"WGS 72BE / UTM zone 16S",9001,4324,16116,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32517,"WGS 72BE / UTM zone 17S",9001,4324,16117,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32518,"WGS 72BE / UTM zone 18S",9001,4324,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32519,"WGS 72BE / UTM zone 19S",9001,4324,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32520,"WGS 72BE / UTM zone 20S",9001,4324,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32521,"WGS 72BE / UTM zone 21S",9001,4324,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32522,"WGS 72BE / UTM zone 22S",9001,4324,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32523,"WGS 72BE / UTM zone 23S",9001,4324,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32524,"WGS 72BE / UTM zone 24S",9001,4324,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32525,"WGS 72BE / UTM zone 25S",9001,4324,16125,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32526,"WGS 72BE / UTM zone 26S",9001,4324,16126,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32527,"WGS 72BE / UTM zone 27S",9001,4324,16127,9807,1,0,4400,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32528,"WGS 72BE / UTM zone 28S",9001,4324,16128,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32529,"WGS 72BE / UTM zone 29S",9001,4324,16129,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32530,"WGS 72BE / UTM zone 30S",9001,4324,16130,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32531,"WGS 72BE / UTM zone 31S",9001,4324,16131,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32532,"WGS 72BE / UTM zone 32S",9001,4324,16132,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32533,"WGS 72BE / UTM zone 33S",9001,4324,16133,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32534,"WGS 72BE / UTM zone 34S",9001,4324,16134,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32535,"WGS 72BE / UTM zone 35S",9001,4324,16135,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32536,"WGS 72BE / UTM zone 36S",9001,4324,16136,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32537,"WGS 72BE / UTM zone 37S",9001,4324,16137,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32538,"WGS 72BE / UTM zone 38S",9001,4324,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32539,"WGS 72BE / UTM zone 39S",9001,4324,16139,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32540,"WGS 72BE / UTM zone 40S",9001,4324,16140,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32541,"WGS 72BE / UTM zone 41S",9001,4324,16141,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32542,"WGS 72BE / UTM zone 42S",9001,4324,16142,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32543,"WGS 72BE / UTM zone 43S",9001,4324,16143,9807,1,0,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32544,"WGS 72BE / UTM zone 44S",9001,4324,16144,9807,1,0,4400,8801,0,9102,8802,81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32545,"WGS 72BE / UTM zone 45S",9001,4324,16145,9807,1,0,4400,8801,0,9102,8802,87,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32546,"WGS 72BE / UTM zone 46S",9001,4324,16146,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32547,"WGS 72BE / UTM zone 47S",9001,4324,16147,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32548,"WGS 72BE / UTM zone 48S",9001,4324,16148,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32549,"WGS 72BE / UTM zone 49S",9001,4324,16149,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32550,"WGS 72BE / UTM zone 50S",9001,4324,16150,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32551,"WGS 72BE / UTM zone 51S",9001,4324,16151,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32552,"WGS 72BE / UTM zone 52S",9001,4324,16152,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32553,"WGS 72BE / UTM zone 53S",9001,4324,16153,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32554,"WGS 72BE / UTM zone 54S",9001,4324,16154,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32555,"WGS 72BE / UTM zone 55S",9001,4324,16155,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32556,"WGS 72BE / UTM zone 56S",9001,4324,16156,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32557,"WGS 72BE / UTM zone 57S",9001,4324,16157,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32558,"WGS 72BE / UTM zone 58S",9001,4324,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32559,"WGS 72BE / UTM zone 59S",9001,4324,16159,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32560,"WGS 72BE / UTM zone 60S",9001,4324,16160,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32600,"WGS 84 / UTM grid system (northern hemisphere)",9001,4326,16000,9824,1,0,4400,8801,0,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,8830,-180,9102,8831,6,9102,,,,,,,,,, +32601,"WGS 84 / UTM zone 1N",9001,4326,16001,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32602,"WGS 84 / UTM zone 2N",9001,4326,16002,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32603,"WGS 84 / UTM zone 3N",9001,4326,16003,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32604,"WGS 84 / UTM zone 4N",9001,4326,16004,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32605,"WGS 84 / UTM zone 5N",9001,4326,16005,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32606,"WGS 84 / UTM zone 6N",9001,4326,16006,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32607,"WGS 84 / UTM zone 7N",9001,4326,16007,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32608,"WGS 84 / UTM zone 8N",9001,4326,16008,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32609,"WGS 84 / UTM zone 9N",9001,4326,16009,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32610,"WGS 84 / UTM zone 10N",9001,4326,16010,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32611,"WGS 84 / UTM zone 11N",9001,4326,16011,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32612,"WGS 84 / UTM zone 12N",9001,4326,16012,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32613,"WGS 84 / UTM zone 13N",9001,4326,16013,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32614,"WGS 84 / UTM zone 14N",9001,4326,16014,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32615,"WGS 84 / UTM zone 15N",9001,4326,16015,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32616,"WGS 84 / UTM zone 16N",9001,4326,16016,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32617,"WGS 84 / UTM zone 17N",9001,4326,16017,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32618,"WGS 84 / UTM zone 18N",9001,4326,16018,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32619,"WGS 84 / UTM zone 19N",9001,4326,16019,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32620,"WGS 84 / UTM zone 20N",9001,4326,16020,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32621,"WGS 84 / UTM zone 21N",9001,4326,16021,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32622,"WGS 84 / UTM zone 22N",9001,4326,16022,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32623,"WGS 84 / UTM zone 23N",9001,4326,16023,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32624,"WGS 84 / UTM zone 24N",9001,4326,16024,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32625,"WGS 84 / UTM zone 25N",9001,4326,16025,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32626,"WGS 84 / UTM zone 26N",9001,4326,16026,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32627,"WGS 84 / UTM zone 27N",9001,4326,16027,9807,1,0,4400,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32628,"WGS 84 / UTM zone 28N",9001,4326,16028,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32629,"WGS 84 / UTM zone 29N",9001,4326,16029,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32630,"WGS 84 / UTM zone 30N",9001,4326,16030,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32631,"WGS 84 / UTM zone 31N",9001,4326,16031,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32632,"WGS 84 / UTM zone 32N",9001,4326,16032,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32633,"WGS 84 / UTM zone 33N",9001,4326,16033,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32634,"WGS 84 / UTM zone 34N",9001,4326,16034,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32635,"WGS 84 / UTM zone 35N",9001,4326,16035,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32636,"WGS 84 / UTM zone 36N",9001,4326,16036,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32637,"WGS 84 / UTM zone 37N",9001,4326,16037,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32638,"WGS 84 / UTM zone 38N",9001,4326,16038,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32639,"WGS 84 / UTM zone 39N",9001,4326,16039,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32640,"WGS 84 / UTM zone 40N",9001,4326,16040,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32641,"WGS 84 / UTM zone 41N",9001,4326,16041,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32642,"WGS 84 / UTM zone 42N",9001,4326,16042,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32643,"WGS 84 / UTM zone 43N",9001,4326,16043,9807,1,0,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32644,"WGS 84 / UTM zone 44N",9001,4326,16044,9807,1,0,4400,8801,0,9102,8802,81,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32645,"WGS 84 / UTM zone 45N",9001,4326,16045,9807,1,0,4400,8801,0,9102,8802,87,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32646,"WGS 84 / UTM zone 46N",9001,4326,16046,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32647,"WGS 84 / UTM zone 47N",9001,4326,16047,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32648,"WGS 84 / UTM zone 48N",9001,4326,16048,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32649,"WGS 84 / UTM zone 49N",9001,4326,16049,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32650,"WGS 84 / UTM zone 50N",9001,4326,16050,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32651,"WGS 84 / UTM zone 51N",9001,4326,16051,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32652,"WGS 84 / UTM zone 52N",9001,4326,16052,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32653,"WGS 84 / UTM zone 53N",9001,4326,16053,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32654,"WGS 84 / UTM zone 54N",9001,4326,16054,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32655,"WGS 84 / UTM zone 55N",9001,4326,16055,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32656,"WGS 84 / UTM zone 56N",9001,4326,16056,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32657,"WGS 84 / UTM zone 57N",9001,4326,16057,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32658,"WGS 84 / UTM zone 58N",9001,4326,16058,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32659,"WGS 84 / UTM zone 59N",9001,4326,16059,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32660,"WGS 84 / UTM zone 60N",9001,4326,16060,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,0,9001,,,,,,,,,,,,, +32661,"WGS 84 / UPS North (N,E)",9001,4326,16061,9810,1,0,4493,8801,90,9102,8802,0,9102,8805,0.994,9201,8806,2000000,9001,8807,2000000,9001,,,,,,,,,,,,, +32662,"WGS 84 / Plate Carree",9001,4326,19968,9823,1,1,4499,8801,0,9102,8802,0,9102,8806,0,9001,8807,0,9001,,,,,,,,,,,,,,,, +32663,"WGS 84 / World Equidistant Cylindrical",9001,4326,19846,9842,1,1,4499,8801,0,9102,8806,0,9001,8807,0,9001,8822,0,9102,,,,,,,,,,,,,,,, +32664,"WGS 84 / BLM 14N (ftUS)",9003,4326,15914,9807,1,0,4497,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32665,"WGS 84 / BLM 15N (ftUS)",9003,4326,15915,9807,1,0,4497,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32666,"WGS 84 / BLM 16N (ftUS)",9003,4326,15916,9807,1,0,4497,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32667,"WGS 84 / BLM 17N (ftUS)",9003,4326,15917,9807,1,0,4497,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,1640416.67,9003,8807,0,9003,,,,,,,,,,,,, +32700,"WGS 84 / UTM grid system (southern hemisphere)",9001,4326,16100,9824,1,0,4400,8801,0,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,8830,-180,9102,8831,6,9102,,,,,,,,,, +32701,"WGS 84 / UTM zone 1S",9001,4326,16101,9807,1,0,4400,8801,0,9102,8802,-177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32702,"WGS 84 / UTM zone 2S",9001,4326,16102,9807,1,0,4400,8801,0,9102,8802,-171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32703,"WGS 84 / UTM zone 3S",9001,4326,16103,9807,1,0,4400,8801,0,9102,8802,-165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32704,"WGS 84 / UTM zone 4S",9001,4326,16104,9807,1,0,4400,8801,0,9102,8802,-159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32705,"WGS 84 / UTM zone 5S",9001,4326,16105,9807,1,0,4400,8801,0,9102,8802,-153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32706,"WGS 84 / UTM zone 6S",9001,4326,16106,9807,1,0,4400,8801,0,9102,8802,-147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32707,"WGS 84 / UTM zone 7S",9001,4326,16107,9807,1,0,4400,8801,0,9102,8802,-141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32708,"WGS 84 / UTM zone 8S",9001,4326,16108,9807,1,0,4400,8801,0,9102,8802,-135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32709,"WGS 84 / UTM zone 9S",9001,4326,16109,9807,1,0,4400,8801,0,9102,8802,-129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32710,"WGS 84 / UTM zone 10S",9001,4326,16110,9807,1,0,4400,8801,0,9102,8802,-123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32711,"WGS 84 / UTM zone 11S",9001,4326,16111,9807,1,0,4400,8801,0,9102,8802,-117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32712,"WGS 84 / UTM zone 12S",9001,4326,16112,9807,1,0,4400,8801,0,9102,8802,-111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32713,"WGS 84 / UTM zone 13S",9001,4326,16113,9807,1,0,4400,8801,0,9102,8802,-105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32714,"WGS 84 / UTM zone 14S",9001,4326,16114,9807,1,0,4400,8801,0,9102,8802,-99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32715,"WGS 84 / UTM zone 15S",9001,4326,16115,9807,1,0,4400,8801,0,9102,8802,-93,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32716,"WGS 84 / UTM zone 16S",9001,4326,16116,9807,1,0,4400,8801,0,9102,8802,-87,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32717,"WGS 84 / UTM zone 17S",9001,4326,16117,9807,1,0,4400,8801,0,9102,8802,-81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32718,"WGS 84 / UTM zone 18S",9001,4326,16118,9807,1,0,4400,8801,0,9102,8802,-75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32719,"WGS 84 / UTM zone 19S",9001,4326,16119,9807,1,0,4400,8801,0,9102,8802,-69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32720,"WGS 84 / UTM zone 20S",9001,4326,16120,9807,1,0,4400,8801,0,9102,8802,-63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32721,"WGS 84 / UTM zone 21S",9001,4326,16121,9807,1,0,4400,8801,0,9102,8802,-57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32722,"WGS 84 / UTM zone 22S",9001,4326,16122,9807,1,0,4400,8801,0,9102,8802,-51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32723,"WGS 84 / UTM zone 23S",9001,4326,16123,9807,1,0,4400,8801,0,9102,8802,-45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32724,"WGS 84 / UTM zone 24S",9001,4326,16124,9807,1,0,4400,8801,0,9102,8802,-39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32725,"WGS 84 / UTM zone 25S",9001,4326,16125,9807,1,0,4400,8801,0,9102,8802,-33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32726,"WGS 84 / UTM zone 26S",9001,4326,16126,9807,1,0,4400,8801,0,9102,8802,-27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32727,"WGS 84 / UTM zone 27S",9001,4326,16127,9807,1,0,4400,8801,0,9102,8802,-21,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32728,"WGS 84 / UTM zone 28S",9001,4326,16128,9807,1,0,4400,8801,0,9102,8802,-15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32729,"WGS 84 / UTM zone 29S",9001,4326,16129,9807,1,0,4400,8801,0,9102,8802,-9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32730,"WGS 84 / UTM zone 30S",9001,4326,16130,9807,1,0,4400,8801,0,9102,8802,-3,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32731,"WGS 84 / UTM zone 31S",9001,4326,16131,9807,1,0,4400,8801,0,9102,8802,3,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32732,"WGS 84 / UTM zone 32S",9001,4326,16132,9807,1,0,4400,8801,0,9102,8802,9,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32733,"WGS 84 / UTM zone 33S",9001,4326,16133,9807,1,0,4400,8801,0,9102,8802,15,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32734,"WGS 84 / UTM zone 34S",9001,4326,16134,9807,1,0,4400,8801,0,9102,8802,21,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32735,"WGS 84 / UTM zone 35S",9001,4326,16135,9807,1,0,4400,8801,0,9102,8802,27,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32736,"WGS 84 / UTM zone 36S",9001,4326,16136,9807,1,0,4400,8801,0,9102,8802,33,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32737,"WGS 84 / UTM zone 37S",9001,4326,16137,9807,1,0,4400,8801,0,9102,8802,39,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32738,"WGS 84 / UTM zone 38S",9001,4326,16138,9807,1,0,4400,8801,0,9102,8802,45,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32739,"WGS 84 / UTM zone 39S",9001,4326,16139,9807,1,0,4400,8801,0,9102,8802,51,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32740,"WGS 84 / UTM zone 40S",9001,4326,16140,9807,1,0,4400,8801,0,9102,8802,57,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32741,"WGS 84 / UTM zone 41S",9001,4326,16141,9807,1,0,4400,8801,0,9102,8802,63,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32742,"WGS 84 / UTM zone 42S",9001,4326,16142,9807,1,0,4400,8801,0,9102,8802,69,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32743,"WGS 84 / UTM zone 43S",9001,4326,16143,9807,1,0,4400,8801,0,9102,8802,75,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32744,"WGS 84 / UTM zone 44S",9001,4326,16144,9807,1,0,4400,8801,0,9102,8802,81,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32745,"WGS 84 / UTM zone 45S",9001,4326,16145,9807,1,0,4400,8801,0,9102,8802,87,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32746,"WGS 84 / UTM zone 46S",9001,4326,16146,9807,1,0,4400,8801,0,9102,8802,93,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32747,"WGS 84 / UTM zone 47S",9001,4326,16147,9807,1,0,4400,8801,0,9102,8802,99,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32748,"WGS 84 / UTM zone 48S",9001,4326,16148,9807,1,0,4400,8801,0,9102,8802,105,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32749,"WGS 84 / UTM zone 49S",9001,4326,16149,9807,1,0,4400,8801,0,9102,8802,111,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32750,"WGS 84 / UTM zone 50S",9001,4326,16150,9807,1,0,4400,8801,0,9102,8802,117,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32751,"WGS 84 / UTM zone 51S",9001,4326,16151,9807,1,0,4400,8801,0,9102,8802,123,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32752,"WGS 84 / UTM zone 52S",9001,4326,16152,9807,1,0,4400,8801,0,9102,8802,129,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32753,"WGS 84 / UTM zone 53S",9001,4326,16153,9807,1,0,4400,8801,0,9102,8802,135,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32754,"WGS 84 / UTM zone 54S",9001,4326,16154,9807,1,0,4400,8801,0,9102,8802,141,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32755,"WGS 84 / UTM zone 55S",9001,4326,16155,9807,1,0,4400,8801,0,9102,8802,147,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32756,"WGS 84 / UTM zone 56S",9001,4326,16156,9807,1,0,4400,8801,0,9102,8802,153,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32757,"WGS 84 / UTM zone 57S",9001,4326,16157,9807,1,0,4400,8801,0,9102,8802,159,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32758,"WGS 84 / UTM zone 58S",9001,4326,16158,9807,1,0,4400,8801,0,9102,8802,165,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32759,"WGS 84 / UTM zone 59S",9001,4326,16159,9807,1,0,4400,8801,0,9102,8802,171,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32760,"WGS 84 / UTM zone 60S",9001,4326,16160,9807,1,0,4400,8801,0,9102,8802,177,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, +32761,"WGS 84 / UPS South (N,E)",9001,4326,16161,9810,1,0,4494,8801,-90,9102,8802,0,9102,8805,0.994,9201,8806,2000000,9001,8807,2000000,9001,,,,,,,,,,,,, +32766,"WGS 84 / TM 36 SE",9001,4326,16636,9807,1,0,4400,8801,0,9102,8802,36,9102,8805,0.9996,9201,8806,500000,9001,8807,10000000,9001,,,,,,,,,,,,, diff --git a/resources/qgis_global_settings.ini b/resources/qgis_global_settings.ini index 664898da56..41b56087a4 100644 --- a/resources/qgis_global_settings.ini +++ b/resources/qgis_global_settings.ini @@ -54,6 +54,22 @@ maxRecentProjects=20 # notification to be shown when the task completes. minTaskLengthForSystemNotification=5 +# Whether to prompt users for a selection when multiple possible transformation paths exist +# when transforming coordinates. If false, a reasonable choice will be estimated by default +# without asking users. If true, users are always required to make this choice themselves. +projections\promptWhenMultipleTransformsExist=true + +# Default CRS for newly created projects. Accepts "auth:code" style strings (e.g. EPSG:4326), +# PROJ strings (must be prefixed with PROJ4:, e.g. "PROJ4:+proj ...."), or WKT strings (must +# be prefixed with WKT:, e.g. "WKT:<wkt string>") +# This is only used when projections\newProjectCrsBehavior is set to UsePresetCrs +projections\defaultProjectCrs=EPSG:4326 + +# Specifies the method to set the CRS for a newly created project. Valid options are +# "UseCrsOfFirstLayerAdded" - sets the project CRS to match the CRS of the first layer added to the project +# "UsePresetCrs" - always use a preset CRS, see projections\defaultProjectCrs +projections\newProjectCrsBehavior=UseCrsOfFirstLayerAdded + [core] # Whether or not to anonymize newly created projects # If set to 1, then project metadata items like AUTHOR and CREATION DATE @@ -91,3 +107,5 @@ default_checks= # Enable problem resolution for geometry errors # This feature is experimental and has known issues. enable_problem_resolution=false + + diff --git a/resources/vertcs.csv b/resources/vertcs.csv new file mode 100644 index 0000000000..7bbc4cabc8 --- /dev/null +++ b/resources/vertcs.csv @@ -0,0 +1,205 @@ +"COORD_REF_SYS_CODE","COORD_REF_SYS_NAME","DATUM_CODE","DATUM_NAME","UOM_CODE","SHOW_CRS","DEPRECATED","COORD_SYS_CODE","COORD_OP_METHOD_CODE_1","PARM_1_1" +3855,EGM2008 geoid height,1027,EGM2008 geoid,9001,1,0,6499,9665,"egm08_25.gtx" +3886,Fao 1979 height,1028,Fao 1979,9001,1,0,6499,, +3900,N2000 height,1030,N2000,9001,1,0,6499,, +4440,NZVD2009 height,1039,New Zealand Vertical Datum 2009,9001,1,0,6499,, +4458,Dunedin-Bluff 1960 height,1040,Dunedin-Bluff 1960,9001,1,0,6499,, +5193,Incheon height,1049,Incheon,9001,1,0,6499,, +5195,Trieste height,1050,Trieste,9001,1,0,6499,, +5214,Genoa height,1051,Genoa,9001,1,0,6499,, +5237,SLVD height,1054,Sri Lanka Vertical Datum,9001,1,0,6499,, +5317,FVR09 height,1059,Faroe Islands Vertical Reference 2009,9001,1,0,6499,, +5336,Black Sea depth,5134,Black Sea,9001,1,0,6498,, +5597,FCSVR10 height,1079,Fehmarnbelt Vertical Reference 2010,9001,1,0,6499,, +5600,NGPF height,5195,Nivellement General de Polynesie Francaise,9001,1,0,6499,, +5601,IGN 1966 height,5196,IGN 1966,9001,1,0,6499,, +5602,Moorea SAU 1981 height,5197,Moorea SAU 1981,9001,1,0,6499,, +5603,Raiatea SAU 2001 height,5198,Raiatea SAU 2001,9001,1,0,6499,, +5604,Maupiti SAU 2001 height,5199,Maupiti SAU 2001,9001,1,0,6499,, +5605,Huahine SAU 2001 height,5200,Huahine SAU 2001,9001,1,0,6499,, +5606,Tahaa SAU 2001 height,5201,Tahaa SAU 2001,9001,1,0,6499,, +5607,Bora Bora SAU 2001 height,5202,Bora Bora SAU 2001,9001,1,0,6499,, +5608,IGLD 1955 height,5204,International Great Lakes Datum 1955,9001,1,0,6499,, +5609,IGLD 1985 height,5205,International Great Lakes Datum 1985,9001,1,0,6499,, +5610,HVRS71 height,5207,Croatian Vertical Reference System 1971,9001,1,0,6499,, +5611,Caspian height,5106,Caspian Sea,9001,1,0,6499,, +5612,Baltic depth,5105,Baltic Sea,9001,1,0,6498,, +5613,RH2000 height,5208,Rikets hojdsystem 2000,9001,1,0,6499,, +5614,"KOC WD depth (ft)",5187,KOC Well Datum,9002,1,0,6495,, +5615,RH00 height,5209,Rikets hojdsystem 1900,9001,1,0,6499,, +5616,IGN 1988 LS height,5210,IGN 1988 LS,9001,1,0,6499,, +5617,IGN 1988 MG height,5211,IGN 1988 MG,9001,1,0,6499,, +5618,IGN 1992 LD height,5212,IGN 1992 LD,9001,1,0,6499,, +5619,IGN 1988 SB height,5213,IGN 1988 SB,9001,1,0,6499,, +5620,IGN 1988 SM height,5214,IGN 1988 SM,9001,1,0,6499,, +5621,EVRF2007 height,5215,European Vertical Reference Frame 2007,9001,1,0,6499,, +5701,ODN height,5101,Ordnance Datum Newlyn,9001,1,0,6499,, +5702,"NGVD29 height (ftUS)",5102,National Geodetic Vertical Datum 1929,9003,1,0,6497,, +5703,NAVD88 height,5103,North American Vertical Datum 1988,9001,1,0,6499,9665,"g2012a_conus.gtx,g2012a_alaska.gtx,g2012a_guam.gtx,g2012a_hawaii.gtx,g2012a_puertorico.gtx,g2012a_samoa.gtx" +5704,Yellow Sea,5104,Yellow Sea 1956,9001,1,1,6499,, +5705,Baltic height,5105,Baltic Sea,9001,1,0,6499,, +5706,Caspian depth,5106,Caspian Sea,9001,1,0,6498,, +5709,NAP height,5109,Normaal Amsterdams Peil,9001,1,0,6499,, +5710,Ostend height,5110,Ostend,9001,1,0,6499,, +5711,AHD height,5111,Australian Height Datum,9001,1,0,6499,, +5712,"AHD (Tasmania) height",5112,"Australian Height Datum (Tasmania)",9001,1,0,6499,, +5713,CGVD28 height,5114,Canadian Geodetic Vertical Datum of 1928,9001,1,0,6499,, +5714,MSL height,5100,Mean Sea Level,9001,1,0,6499,, +5715,MSL depth,5100,Mean Sea Level,9001,1,0,6498,, +5716,Piraeus height,5115,Piraeus Harbour 1986,9001,1,0,6499,, +5717,N60 height,5116,Helsinki 1960,9001,1,0,6499,, +5718,RH70 height,5117,Rikets hojdsystem 1970,9001,1,0,6499,, +5719,NGF Lallemand height,5118,Nivellement General de la France - Lallemand,9001,1,0,6499,, +5720,NGF-IGN69 height,5119,Nivellement General de la France - IGN69,9001,1,0,6499,, +5721,NGF-IGN78 height,5120,Nivellement General de la France - IGN78,9001,1,0,6499,, +5722,Maputo height,5121,Maputo,9001,1,0,6499,, +5723,JSLD69 height,5122,Japanese Standard Levelling Datum 1969,9001,1,0,6499,, +5724,PHD93 height,5123,PDO Height Datum 1993,9001,1,0,6499,, +5725,Fahud HD height,5124,Fahud Height Datum,9001,1,0,6499,, +5726,Ha Tien 1960 height,5125,Ha Tien 1960,9001,1,0,6499,, +5727,Hon Dau 1992 height,5126,Hon Dau 1992,9001,1,0,6499,, +5728,LN02 height,5127,Landesnivellement 1902,9001,1,0,6499,, +5729,LHN95 height,5128,Landeshohennetz 1995,9001,1,0,6499,, +5730,EVRF2000 height,5129,European Vertical Reference Frame 2000,9001,1,0,6499,, +5731,Malin Head height,5130,Malin Head,9001,1,0,6499,, +5732,Belfast height,5131,Belfast Lough,9001,1,0,6499,, +5733,DNN height,5132,Dansk Normal Nul,9001,1,0,6499,, +5734,AIOC95 depth,5133,AIOC 1995,9001,1,0,6498,, +5735,Black Sea height,5134,Black Sea,9001,1,0,6499,, +5736,Yellow Sea 1956 height,5104,Yellow Sea 1956,9001,1,0,6499,, +5737,Yellow Sea 1985 height,5137,Yellow Sea 1985,9001,1,0,6499,, +5738,HKPD height,5135,Hong Kong Principal Datum,9001,1,0,6499,, +5739,HKCD depth,5136,Hong Kong Chart Datum,9001,1,0,6498,, +5740,ODN Orkney height,5138,"Ordnance Datum Newlyn (Orkney Isles)",9001,1,0,6499,, +5741,Fair Isle height,5139,Fair Isle,9001,1,0,6499,, +5742,Lerwick height,5140,Lerwick,9001,1,0,6499,, +5743,Foula height,5141,Foula,9001,1,0,6499,, +5744,Sule Skerry height,5142,Sule Skerry,9001,1,0,6499,, +5745,North Rona height,5143,North Rona,9001,1,0,6499,, +5746,Stornoway height,5144,Stornoway,9001,1,0,6499,, +5747,St Kilda height,5145,St Kilda,9001,1,0,6499,, +5748,Flannan Isles height,5146,Flannan Isles,9001,1,0,6499,, +5749,St Marys height,5147,St Marys,9001,1,0,6499,, +5750,Douglas height,5148,Douglas,9001,1,0,6499,, +5751,Fao height,5149,Fao,9001,1,0,6499,, +5752,Bandar Abbas height,5150,Bandar Abbas,9001,1,0,6499,, +5753,NGNC height,5151,Nivellement General de Nouvelle Caledonie,9001,1,0,6499,, +5754,"Poolbeg height (ft(Br36))",5152,Poolbeg,9095,1,0,6496,, +5755,NGG1977 height,5153,Nivellement General Guyanais 1977,9001,1,0,6499,, +5756,Martinique 1987 height,5154,Martinique 1987,9001,1,0,6499,, +5757,Guadeloupe 1988 height,5155,Guadeloupe 1988,9001,1,0,6499,, +5758,Reunion 1989 height,5156,Reunion 1989,9001,1,0,6499,, +5759,Auckland 1946 height,5157,Auckland 1946,9001,1,0,6499,, +5760,Bluff 1955 height,5158,Bluff 1955,9001,1,0,6499,, +5761,Dunedin 1958 height,5159,Dunedin 1958,9001,1,0,6499,, +5762,Gisborne 1926 height,5160,Gisborne 1926,9001,1,0,6499,, +5763,Lyttelton 1937 height,5161,Lyttelton 1937,9001,1,0,6499,, +5764,Moturiki 1953 height,5162,Moturiki 1953,9001,1,0,6499,, +5765,Napier 1962 height,5163,Napier 1962,9001,1,0,6499,, +5766,Nelson 1955 height,5164,Nelson 1955,9001,1,0,6499,, +5767,One Tree Point 1964 height,5165,One Tree Point 1964,9001,1,0,6499,, +5768,Tararu 1952 height,5166,Tararu 1952,9001,1,0,6499,, +5769,Taranaki 1970 height,5167,Taranaki 1970,9001,1,0,6499,, +5770,Wellington 1953 height,5168,Wellington 1953,9001,1,0,6499,, +5771,Chatham Island 1959 height,5169,"Waitangi (Chatham Island) 1959",9001,1,0,6499,, +5772,Stewart Island 1977 height,5170,Stewart Island 1977,9001,1,0,6499,, +5773,EGM96 geoid height,5171,EGM96 geoid,9001,1,0,6499,9665,"egm96_15.gtx" +5774,NG-L height,5172,Nivellement General du Luxembourg,9001,1,0,6499,, +5775,Antalya height,5173,Antalya,9001,1,0,6499,, +5776,NN54 height,5174,Norway Normal Null 1954,9001,1,0,6499,, +5777,Durres height,5175,Durres,9001,1,0,6499,, +5778,GHA height,5176,Gebrauchshohen ADRIA,9001,1,0,6499,, +5779,NVN99 height,5177,National Vertical Network 1999,9001,1,0,6499,, +5780,Cascais height,5178,Cascais,9001,1,0,6499,, +5781,Constanta height,5179,Constanta,9001,1,0,6499,, +5782,Alicante height,5180,Alicante,9001,1,0,6499,, +5783,DHHN92 height,5181,Deutsches Haupthoehennetz 1992,9001,1,0,6499,, +5784,DHHN85 height,5182,Deutsches Haupthoehennetz 1985,9001,1,0,6499,, +5785,SNN76 height,5183,Staatlichen Nivellementnetzes 1976,9001,1,0,6499,, +5786,Baltic 1982 height,5184,Baltic 1982,9001,1,0,6499,, +5787,EOMA 1980 height,5185,Baltic 1980,9001,1,0,6499,, +5788,Kuwait PWD height,5186,Kuwait PWD,9001,1,0,6499,, +5789,KOC WD depth,5187,KOC Well Datum,9001,1,0,6498,, +5790,KOC CD height,5188,KOC Construction Datum,9001,1,0,6499,, +5791,NGC 1948 height,5189,Nivellement General de la Corse 1948,9001,1,0,6499,, +5792,Danger 1950 height,5190,Danger 1950,9001,1,0,6499,, +5793,Mayotte 1950 height,5191,Mayotte 1950,9001,1,0,6499,, +5794,Martinique 1955 height,5192,Martinique 1955,9001,1,0,6499,, +5795,Guadeloupe 1951 height,5193,Guadeloupe 1951,9001,1,0,6499,, +5796,Lagos 1955 height,5194,Lagos 1955,9001,1,0,6499,, +5797,AIOC95 height,5133,AIOC 1995,9001,1,0,6499,, +5798,EGM84 height,5203,EGM84 geoid,9001,1,0,6499,, +5799,DVR90 height,5206,Dansk Vertikal Reference 1990,9001,1,0,6499,, +5829,Instantaneous Water Level height,5113,Instantaneous Water Level,9001,1,0,6499,, +5831,Instantaneous Water Level depth,5113,Instantaneous Water Level,9001,1,0,6498,, +5843,Ras Ghumays height,1146,Ras Ghumays,9001,1,0,6499,, +5861,LAT depth,1080,Lowest Astronomic Tide,9001,1,0,6498,, +5862,LLWLT depth,1083,Lower Low Water Large Tide,9001,1,0,6498,, +5863,ISLW depth,1085,Indian Spring Low Water,9001,1,0,6498,, +5864,MLLWS depth,1086,Mean Lower Low Water Spring Tides,9001,1,0,6498,, +5865,MLWS depth,1087,Mean Low Water Spring Tides,9001,1,0,6498,, +5866,MLLW depth,1089,Mean Lower Low Water,9001,1,0,6498,, +5867,MLW depth,1091,Mean Low Water,9001,1,0,6498,, +5868,MHW height,1092,Mean High Water,9001,1,0,6499,, +5869,MHHW height,1090,Mean Higher High Water,9001,1,0,6499,, +5870,MHWS height,1088,Mean High Water Spring Tides,9001,1,0,6499,, +5871,HHWLT height,1084,Higher High Water Large Tide,9001,1,0,6499,, +5872,HAT height,1082,Highest Astronomic Tide,9001,1,0,6499,, +5873,Low Water depth,1093,Low Water,9001,1,0,6498,, +5874,High Water height,1094,High Water,9001,1,0,6499,, +5941,NN2000 height,1096,Norway Normal Null 2000,9001,1,0,6499,, +6130,"GCVD54 height (ft)",1097,Grand Cayman Vertical Datum 1954,9002,1,0,1030,, +6131,"LCVD61 height (ft)",1098,Little Cayman Vertical Datum 1961,9002,1,0,1030,, +6132,"CBVD61 height (ft)",1099,Cayman Brac Vertical Datum 1961,9002,1,0,1030,, +6178,Cais da Pontinha - Funchal height,1101,Cais da Pontinha - Funchal,9001,1,0,6499,, +6179,Cais da Vila - Porto Santo height,1102,Cais da Vila - Porto Santo,9001,1,0,6499,, +6180,Cais das Velas height,1103,Cais das Velas,9001,1,0,6499,, +6181,Horta height,1104,Horta,9001,1,0,6499,, +6182,Cais da Madalena height,1105,Cais da Madalena,9001,1,0,6499,, +6183,Santa Cruz da Graciosa height,1106,Santa Cruz da Graciosa,9001,1,0,6499,, +6184,Cais da Figueirinha - Angra do Heroismo height,1107,Cais da Figueirinha - Angra do Heroismo,9001,1,0,6499,, +6185,Santa Cruz das Flores height,1108,Santa Cruz das Flores,9001,1,0,6499,, +6186,Cais da Vila do Porto height,1109,Cais da Vila do Porto,9001,1,0,6499,, +6187,Ponta Delgada height,1110,Ponta Delgada,9001,1,0,6499,, +6357,NAVD88 depth,5103,North American Vertical Datum 1988,9001,1,0,6498,, +6358,"NAVD88 depth (ftUS)",5103,North American Vertical Datum 1988,9003,1,0,1043,, +6359,"NGVD29 depth (ftUS)",5102,National Geodetic Vertical Datum 1929,9003,1,0,1043,, +6360,"NAVD88 height (ftUS)",5103,North American Vertical Datum 1988,9003,1,0,6497,, +6638,Tutuila 1962 height,1121,Tutuila Vertical Datum of 1962,9001,1,0,6499,, +6639,Guam 1963 height,1122,Guam Vertical Datum of 1963,9001,1,0,6499,, +6640,NMVD03 height,1119,Northern Marianas Vertical Datum of 2003,9001,1,0,6499,, +6641,PRVD02 height,1123,Puerto Rico Vertical Datum of 2002,9001,1,0,6499,, +6642,VIVD09 height,1124,Virgin Islands Vertical Datum of 2009,9001,1,0,6499,, +6643,ASVD02 height,1125,American Samoa Vertical Datum of 2002,9001,1,0,6499,, +6644,GUVD04 height,1126,Guam Vertical Datum of 2004,9001,1,0,6499,, +6647,CGVD2013 height,1127,Canadian Geodetic Vertical Datum of 2013,9001,1,0,6499,, +6693,JSLD72 height,1129,Japanese Standard Levelling Datum 1972,9001,1,0,6499,, +6694,"JGD2000 (vertical) height",1130,"Japanese Geodetic Datum 2000 (vertical)",9001,1,0,6499,, +6695,"JGD2011 (vertical) height",1131,"Japanese Geodetic Datum 2011 (vertical)",9001,1,0,6499,, +6916,SHD height,1140,Singapore Height Datum,9001,1,0,6499,, +7446,Famagusta 1960 height,1148,Famagusta 1960,9001,1,0,6499,, +7447,PNG08 height,1149,PNG08,9001,1,0,6499,, +7651,Kumul 34 height,1150,Kumul 34,9001,1,0,6499,, +7652,Kiunga height,1151,Kiunga,9001,1,0,6499,, +7699,DHHN12 height,1161,Deutsches Haupthoehennetz 1912,9001,1,0,6499,, +7700,Latvia 2000 height,1162,Latvian Height System 2000,9001,1,0,6499,, +7707,"ODN (Offshore) height",1164,"Ordnance Datum Newlyn (Offshore)",9001,1,0,6499,, +7832,POM96 height,1171,Port Moresby 1996,9001,1,0,6499,, +7837,DHHN2016 height,1170,Deutsches Haupthoehennetz 2016,9001,1,0,6499,, +7839,NZVD2016 height,1169,New Zealand Vertical Datum 2016,9001,1,0,6499,, +7841,POM08 height,1172,Port Moresby 2008,9001,1,0,6499,, +7888,Jamestown 1971 height,1175,Jamestown 1971,9001,1,0,6499,, +7889,St. Helena Tritan 2011 height,1176,St. Helena Tritan Vertical Datum 2011,9001,1,0,6499,, +7890,SHVD2015 height,1177,St. Helena Vertical Datum 2015,9001,1,0,6499,, +7962,"Poolbeg height (m)",5152,Poolbeg,9001,1,0,6499,, +7968,"NGVD29 height (m)",5102,National Geodetic Vertical Datum 1929,9001,1,0,6499,, +7976,HKPD depth,5135,Hong Kong Principal Datum,9001,1,0,6498,, +7979,KOC WD height,5187,KOC Well Datum,9001,1,0,6499,, +8050,"MSL height (ft)",5100,Mean Sea Level,9002,1,0,1030,, +8051,"MSL depth (ft)",5100,Mean Sea Level,9002,1,0,6495,, +8052,"MSL height (ftUS)",5100,Mean Sea Level,9003,1,0,6497,, +8053,"MSL depth (ftUS)",5100,Mean Sea Level,9003,1,0,1043,, +8089,ISH2004 height,1190,Landshaedarkerfi Islands 2004,9001,1,0,6499,, +8228,"NAVD88 height (ft)",5103,North American Vertical Datum 1988,9002,1,0,1030,, +8266,GVR2000 height,1199,Greenland Vertical Reference 2000,9001,1,0,6499,, +8267,GVR2016 height,1200,Greenland Vertical Reference 2016,9001,1,0,6499,, diff --git a/rpm/qgis.spec.template b/rpm/qgis.spec.template index e2e3f0ac6a..c4be9361e5 100644 --- a/rpm/qgis.spec.template +++ b/rpm/qgis.spec.template @@ -176,7 +176,13 @@ Obsoletes: python2-%{name} < %{version}-%{release} Summary: Python integration and plug-ins for QGIS Requires: %{name}%{?_isa} = %{combinedversion}-%{release} Requires: gdal-python3 +# Starting from Fedora 30 python2-gdal package +# has been renamed to gdal-python-tools +%if 0%{?fedora} >= 30 Requires: gdal-python-tools +%else +Requires: python2-gdal +%endif Requires: python3-future Requires: python3-jinja2 Requires: python3-OWSLib diff --git a/scripts/generate_test_mask_image.py b/scripts/generate_test_mask_image.py index 5694c013ca..fa18d204e2 100755 --- a/scripts/generate_test_mask_image.py +++ b/scripts/generate_test_mask_image.py @@ -22,7 +22,7 @@ __author__ = 'Nyall Dawson' __date__ = 'February 2015' __copyright__ = '(C) 2015, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # Generates (or updates) a unit test image mask, which is used to specify whether diff --git a/scripts/mkuidefaults.py b/scripts/mkuidefaults.py index 0cada8e9cf..e97d32fa5c 100755 --- a/scripts/mkuidefaults.py +++ b/scripts/mkuidefaults.py @@ -22,7 +22,7 @@ __author__ = 'Juergen E. Fischer' __date__ = 'June 2013' __copyright__ = '(C) 2013, Juergen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import sys import struct diff --git a/scripts/parse_dash_results.py b/scripts/parse_dash_results.py index 9c20adaf86..151dd49f0a 100755 --- a/scripts/parse_dash_results.py +++ b/scripts/parse_dash_results.py @@ -26,7 +26,7 @@ __author__ = 'Nyall Dawson' __date__ = 'October 2016' __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import sys diff --git a/scripts/pyuic-wrapper.py b/scripts/pyuic-wrapper.py index f1c654710c..06e1282da3 100644 --- a/scripts/pyuic-wrapper.py +++ b/scripts/pyuic-wrapper.py @@ -21,6 +21,6 @@ __author__ = 'Juergen E. Fischer' __date__ = 'March 2016' __copyright__ = '(C) 2016, Juergen E. Fischer' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis.PyQt.uic.pyuic diff --git a/scripts/qgis_srs.sh b/scripts/qgis_srs.sh index 3a712aa7f4..6306094e0e 100755 --- a/scripts/qgis_srs.sh +++ b/scripts/qgis_srs.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/env bash ########################################################################### # qgis_srs.sh # --------------------- @@ -199,7 +199,7 @@ for i in $(awk 'NR>1' ${gdal_share}/pcs.csv | cut -d, -f1); do raw=$(epsg_tr.py -proj4 $i 2>&1 | tr "\n" " " | sed 's/ <> $//' | grep -v "^ERROR 6: ") - if [ -n "$raw" ]; then + if [[ -n "$raw" ]]; then no=$((no + 1)) name=$(echo $raw | sed 's/^# //' | grep -o "^.\{1,\} <[[:digit:]]\{1,\}>" | sed 's/ <[[:digit:]]\{1,\}>//' | sed "s/'/''/g") @@ -222,7 +222,7 @@ for i in $(awk 'NR>1' ${gdal_share}/gcs.csv | cut -d, -f1); do raw=$(epsg_tr.py -proj4 $i 2>&1 | tr "\n" " " | sed 's/ <> $//' | grep -v "^ERROR 6: ") - if [ -n "$raw" ]; then + if [[ -n "$raw" ]]; then no=$((no + 1)) name=$(echo $raw | sed 's/^# //' | grep -o "^.\{1,\} <[[:digit:]]\{1,\}>" | sed 's/ <[[:digit:]]\{1,\}>//' | sed "s/'/''/g") diff --git a/scripts/sip_include.sh b/scripts/sip_include.sh index b8c84f4ebf..f35e18bebb 100755 --- a/scripts/sip_include.sh +++ b/scripts/sip_include.sh @@ -31,7 +31,11 @@ if [[ "$OSTYPE" =~ darwin* ]]; then GP=g fi -modules=(core gui analysis server) +if [[ -n $1 ]]; then + modules=("$1") +else + modules=(core gui analysis server) +fi sources=(HDRS MOC_HDRS SRCS) for module in "${modules[@]}"; do @@ -62,7 +66,7 @@ for module in "${modules[@]}"; do sip=$(${GP}sed -r 's/(.*)\.h$/\1.sip/' <<< ${header}) if_cond=$(grep -x -E '^(#define +)?SIP_IF_MODULE\((.*)\)$' src/${module}/${header} | \ ${GP}sed -r -e 's/(#define +)?SIP_IF_MODULE\((.*)\)/%If (\2)/') - if [[ ! -z $if_cond ]]; then + if [[ -n $if_cond ]]; then echo "$if_cond" >> $file fi if [[ "$sip" == [0-9]* ]]; then @@ -71,7 +75,7 @@ for module in "${modules[@]}"; do sip="./$sip" fi echo "%Include auto_generated/$sip" >> $file - if [[ ! -z $if_cond ]]; then + if [[ -n $if_cond ]]; then echo "%End" >> $file fi fi diff --git a/scripts/spell_check/check_spelling.sh b/scripts/spell_check/check_spelling.sh index 71f0589dea..4eff44f018 100755 --- a/scripts/spell_check/check_spelling.sh +++ b/scripts/spell_check/check_spelling.sh @@ -85,7 +85,7 @@ declare -A GLOBREP_IGNORE=() ERRORFOUND=NO for I in $(seq -f '%02g' 0 $((SPLIT-1)) ) ; do - ( [[ "$INTERACTIVE" =~ YES ]] || [[ "$TRAVIS" =~ true ]] ) && printf "Progress: %d/%d\r" $(( I + 1 )) $SPLIT + { [[ "$INTERACTIVE" =~ YES ]] || [[ "$TRAVIS" =~ true ]]; } && printf "Progress: %d/%d\r" $(( I + 1 )) $SPLIT SPELLFILE=spelling$I~ ${GP}sed -i '/^#/d' $SPELLFILE @@ -136,10 +136,10 @@ for I in $(seq -f '%02g' 0 $((SPLIT-1)) ) ; do RUN_IGNORECASE=OFF RUN_CASEMATCH=OFF - if [[ ! -z "${IGNORECASE}" ]]; then + if [[ -n "${IGNORECASE}" ]]; then RUN_IGNORECASE=ON fi - if [[ ! -z "${CASEMATCH}" ]]; then + if [[ -n "${CASEMATCH}" ]]; then RUN_CASEMATCH=ON fi @@ -336,7 +336,7 @@ for I in $(seq -f '%02g' 0 $((SPLIT-1)) ) ; do done -( [[ "$INTERACTIVE" =~ YES ]] || [[ "$TRAVIS" =~ true ]] ) && echo +{ [[ "$INTERACTIVE" =~ YES ]] || [[ "$TRAVIS" =~ true ]]; } && echo if [[ "$ERRORFOUND" =~ YES ]]; then echo -e "\x1B[1msome errors have been found.\x1B[0m" >&2 diff --git a/scripts/spell_check/spell_test.sh b/scripts/spell_check/spell_test.sh index 02400ca263..9f979d66f4 100755 --- a/scripts/spell_check/spell_test.sh +++ b/scripts/spell_check/spell_test.sh @@ -5,12 +5,12 @@ set -e echo "Spell check" cd $(git rev-parse --show-toplevel) -if [[ ! -z $TRAVIS_PULL_REQUEST_BRANCH ]]; then +if [[ -n $TRAVIS_PULL_REQUEST_BRANCH ]]; then # if on a PR, just analyze the changed files echo "TRAVIS PR BRANCH: $TRAVIS_PULL_REQUEST_BRANCH" FILES=$(git diff --diff-filter=AM --name-only $(git merge-base HEAD ${TRAVIS_BRANCH}) | tr '\n' ' ' ) export PATH=${HOME}/osgeo4travis/bin:${PATH} -elif [[ ! -z $TRAVIS_COMMIT_RANGE ]]; then +elif [[ -n $TRAVIS_COMMIT_RANGE ]]; then echo "TRAVIS COMMIT RANGE: $TRAVIS_COMMIT_RANGE" FILES=$(git diff --diff-filter=AM --name-only ${TRAVIS_COMMIT_RANGE/.../..} | tr '\n' ' ' ) export PATH=${HOME}/osgeo4travis/bin:${PATH} @@ -19,7 +19,7 @@ else FILES="" fi -if [[ ! -z $FILES ]]; then +if [[ -n $FILES ]]; then DIR=$(git rev-parse --show-toplevel)/scripts/spell_check ${DIR}/check_spelling.sh -r $FILES fi diff --git a/scripts/spell_check/test.sh b/scripts/spell_check/test.sh index 3aaaac84b8..50e4fa6d37 100755 --- a/scripts/spell_check/test.sh +++ b/scripts/spell_check/test.sh @@ -85,7 +85,7 @@ ${DIR}/check_spelling.sh -r -l spelling_error.log~ spelling_error.dat~ ${GP}sort -u -o spelling_error.log~ spelling_error.log~ DIFF=$(diff spelling_error.log~ spelling_error.expected~) -if [[ ! -z $DIFF ]]; then +if [[ -n $DIFF ]]; then echo "SPELLING TEST FAILED" >&2 else echo "TEST OK" diff --git a/scripts/verify-indentation.sh b/scripts/verify-indentation.sh index 92b07bc55e..70445ebc8f 100755 --- a/scripts/verify-indentation.sh +++ b/scripts/verify-indentation.sh @@ -19,11 +19,11 @@ ASTYLEDIFF=/tmp/astyle.diff true > $ASTYLEDIFF -if [[ ! -z $TRAVIS_PULL_REQUEST_BRANCH ]]; then +if [[ -n $TRAVIS_PULL_REQUEST_BRANCH ]]; then # if on a PR, just analyze the changed files echo "TRAVIS PR BRANCH: $TRAVIS_PULL_REQUEST_BRANCH" FILES=$(git diff --diff-filter=AM --name-only $(git merge-base HEAD ${TRAVIS_BRANCH}) | tr '\n' ' ' ) -elif [[ ! -z $TRAVIS_COMMIT_RANGE ]]; then +elif [[ -n $TRAVIS_COMMIT_RANGE ]]; then echo "TRAVIS COMMIT RANGE: $TRAVIS_COMMIT_RANGE" FILES=$(git diff --diff-filter=AM --name-only ${TRAVIS_COMMIT_RANGE/.../..} | tr '\n' ' ' ) fi diff --git a/scripts/widgets_tree.py b/scripts/widgets_tree.py index 641a5d3218..c28aabdba9 100644 --- a/scripts/widgets_tree.py +++ b/scripts/widgets_tree.py @@ -22,7 +22,7 @@ __author__ = 'Martin Dobias' __date__ = 'May 2011' __copyright__ = '(C) 2011, Martin Dobias' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' """ Reads .ui files from ../src/ui/ directory and write to stdout an XML describing diff --git a/src/analysis/processing/qgsalgorithmextractbyattribute.cpp b/src/analysis/processing/qgsalgorithmextractbyattribute.cpp index 605c3c5139..7f08e89d6e 100644 --- a/src/analysis/processing/qgsalgorithmextractbyattribute.cpp +++ b/src/analysis/processing/qgsalgorithmextractbyattribute.cpp @@ -53,14 +53,14 @@ void QgsExtractByAttributeAlgorithm::initAlgorithm( const QVariantMap & ) << QObject::tr( "=" ) << QObject::tr( "≠" ) << QObject::tr( ">" ) - << QObject::tr( ">=" ) + << QObject::tr( "≥" ) << QObject::tr( "<" ) - << QObject::tr( "<=" ) + << QObject::tr( "≤" ) << QObject::tr( "begins with" ) << QObject::tr( "contains" ) << QObject::tr( "is null" ) << QObject::tr( "is not null" ) - << QObject::tr( "does not contain" ) ) ); + << QObject::tr( "does not contain" ), false, 0 ) ); addParameter( new QgsProcessingParameterString( QStringLiteral( "VALUE" ), QObject::tr( "Value" ), QVariant(), false, true ) ); addParameter( new QgsProcessingParameterFeatureSink( QStringLiteral( "OUTPUT" ), QObject::tr( "Extracted (attribute)" ) ) ); diff --git a/src/analysis/processing/qgsalgorithmpackage.cpp b/src/analysis/processing/qgsalgorithmpackage.cpp index bd191106b8..54da704392 100644 --- a/src/analysis/processing/qgsalgorithmpackage.cpp +++ b/src/analysis/processing/qgsalgorithmpackage.cpp @@ -171,6 +171,20 @@ bool QgsPackageAlgorithm::packageVectorLayer( QgsVectorLayer *layer, const QStri options.fileEncoding = context.defaultEncoding(); options.feedback = feedback; + // remove any existing FID field, let this be completely recreated + // since many layer sources have fid fields which are not compatible with gpkg requirements + QgsFields fields = layer->fields(); + const int fidIndex = fields.lookupField( QStringLiteral( "fid" ) ); + + options.attributes = fields.allAttributesList(); + if ( fidIndex >= 0 ) + options.attributes.removeAll( fidIndex ); + if ( options.attributes.isEmpty() ) + { + // fid was the only field + options.skipAttributeCreation = true; + } + QString error; if ( QgsVectorFileWriter::writeAsVectorFormat( layer, path, options, &error ) != QgsVectorFileWriter::NoError ) { diff --git a/src/analysis/processing/qgsalgorithmsaveselectedfeatures.cpp b/src/analysis/processing/qgsalgorithmsaveselectedfeatures.cpp index 731a4772ee..51f71b7a67 100644 --- a/src/analysis/processing/qgsalgorithmsaveselectedfeatures.cpp +++ b/src/analysis/processing/qgsalgorithmsaveselectedfeatures.cpp @@ -29,7 +29,7 @@ void QgsSaveSelectedFeatures::initAlgorithm( const QVariantMap & ) { addParameter( new QgsProcessingParameterVectorLayer( QStringLiteral( "INPUT" ), QObject::tr( "Input layer" ), QList< int >() << QgsProcessing::TypeVector ) ); - addParameter( new QgsProcessingParameterFeatureSink( QStringLiteral( "OUTPUT" ), QObject::tr( "Selected features" ), QgsProcessing::TypeVectorPoint ) ); + addParameter( new QgsProcessingParameterFeatureSink( QStringLiteral( "OUTPUT" ), QObject::tr( "Selected features" ) ) ); } QString QgsSaveSelectedFeatures::name() const diff --git a/src/analysis/raster/qgsrastercalclexer.ll b/src/analysis/raster/qgsrastercalclexer.ll index 1462725e20..a54b40b2b3 100644 --- a/src/analysis/raster/qgsrastercalclexer.ll +++ b/src/analysis/raster/qgsrastercalclexer.ll @@ -36,6 +36,7 @@ #ifdef _MSC_VER #define YY_NO_UNISTD_H #endif + %} white [ \t\r\n]+ @@ -80,8 +81,12 @@ raster_band_ref_quoted \"(\\.|[^"])*\" {raster_band_ref_quoted} { return RASTER_BAND_REF; } {white} /* skip blanks and tabs */ + +[a-z][a-z0-9_]* { return yytext[0]; } /* other unknown tokens */ + %% + void set_raster_input_buffer(const char* buffer) { raster_scan_string(buffer); diff --git a/src/analysis/raster/qgsrastercalculator.cpp b/src/analysis/raster/qgsrastercalculator.cpp index a61bb1e324..0d9e62c347 100644 --- a/src/analysis/raster/qgsrastercalculator.cpp +++ b/src/analysis/raster/qgsrastercalculator.cpp @@ -137,8 +137,7 @@ QgsRasterCalculator::Result QgsRasterCalculator::processCalculation( QgsFeedback //read / write line by line QMap<QString, QgsRasterBlock * > _rasterData; // Cast to float - std::vector<float> castedResult; - castedResult.reserve( static_cast<size_t>( mNumOutputColumns ) ); + std::vector<float> castedResult( static_cast<size_t>( mNumOutputColumns ), 0 ); auto rowHeight = mOutputRectangle.height() / mNumOutputRows; for ( size_t row = 0; row < static_cast<size_t>( mNumOutputRows ); ++row ) { @@ -186,11 +185,7 @@ QgsRasterCalculator::Result QgsRasterCalculator::processCalculation( QgsFeedback if ( calcNode->calculate( _rasterData, resultMatrix, 0 ) ) { - // write scanline to the dataset - for ( size_t i = 0; i < static_cast<size_t>( mNumOutputColumns ); i++ ) - { - castedResult[i] = static_cast<float>( resultMatrix.data()[i] ); - } + std::copy( resultMatrix.data(), resultMatrix.data() + mNumOutputColumns, castedResult.begin() ); if ( GDALRasterIO( outputRasterBand, GF_Write, 0, row, mNumOutputColumns, 1, castedResult.data(), mNumOutputColumns, 1, GDT_Float32, 0, 0 ) != CE_None ) { QgsDebugMsg( QStringLiteral( "RasterIO error!" ) ); diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index d323099baf..3ad85d01c5 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -654,6 +654,7 @@ INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/core/mesh ${CMAKE_SOURCE_DIR}/src/core/layertree ${CMAKE_SOURCE_DIR}/src/core/locator + ${CMAKE_SOURCE_DIR}/src/core/pal ${CMAKE_SOURCE_DIR}/src/core/providers/memory ${CMAKE_SOURCE_DIR}/src/core/raster ${CMAKE_SOURCE_DIR}/src/core/scalebar diff --git a/src/app/layout/qgslayoutatlaswidget.cpp b/src/app/layout/qgslayoutatlaswidget.cpp index c2ae5fd893..8cff46bd40 100644 --- a/src/app/layout/qgslayoutatlaswidget.cpp +++ b/src/app/layout/qgslayoutatlaswidget.cpp @@ -63,7 +63,7 @@ QgsLayoutAtlasWidget::QgsLayoutAtlasWidget( QWidget *parent, QgsPrintLayout *lay { mAtlasFileFormat->addItem( QString( formats.at( i ) ) ); } - connect( mAtlasFileFormat, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, [ = ]( int ) { changeFileFormat(); } ); + connect( mAtlasFileFormat, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, [ = ]( int ) { changeFileFormat(); } ); updateGuiElements(); } diff --git a/src/app/layout/qgslayoutdesignerdialog.cpp b/src/app/layout/qgslayoutdesignerdialog.cpp index f1c586bd0a..f09d1971ad 100644 --- a/src/app/layout/qgslayoutdesignerdialog.cpp +++ b/src/app/layout/qgslayoutdesignerdialog.cpp @@ -935,7 +935,11 @@ void QgsLayoutDesignerDialog::setMasterLayout( QgsMasterLayoutInterface *layout QObject *obj = dynamic_cast< QObject * >( mMasterLayout ); if ( obj ) - connect( obj, &QObject::destroyed, this, &QgsLayoutDesignerDialog::close ); + connect( obj, &QObject::destroyed, this, [ = ] + { + this->close(); + QgsApplication::sendPostedEvents( nullptr, QEvent::DeferredDelete ); + } ); setTitle( mMasterLayout->name() ); diff --git a/src/app/layout/qgslayoutlabelwidget.cpp b/src/app/layout/qgslayoutlabelwidget.cpp index 7c11a52032..af1008f2c9 100644 --- a/src/app/layout/qgslayoutlabelwidget.cpp +++ b/src/app/layout/qgslayoutlabelwidget.cpp @@ -54,6 +54,7 @@ QgsLayoutLabelWidget::QgsLayoutLabelWidget( QgsLayoutItemLabel *label ) mFontColorButton->setColorDialogTitle( tr( "Select Font Color" ) ); mFontColorButton->setContext( QStringLiteral( "composer" ) ); + mFontColorButton->setAllowOpacity( true ); mMarginXDoubleSpinBox->setClearValue( 0.0 ); mMarginYDoubleSpinBox->setClearValue( 0.0 ); diff --git a/src/app/layout/qgslayoutmanagerdialog.cpp b/src/app/layout/qgslayoutmanagerdialog.cpp index 48a7e5636a..484c17288c 100644 --- a/src/app/layout/qgslayoutmanagerdialog.cpp +++ b/src/app/layout/qgslayoutmanagerdialog.cpp @@ -94,12 +94,15 @@ QgsLayoutManagerDialog::QgsLayoutManagerDialog( QWidget *parent, Qt::WindowFlags mUserTemplatesDir = QgsApplication::qgisSettingsDirPath() + "/composer_templates"; QMap<QString, QString> userTemplateMap = defaultTemplates( true ); - this->addTemplates( userTemplateMap ); + addTemplates( userTemplateMap ); + // TODO QGIS 4: Remove this, default templates should not be shipped in the application folder mDefaultTemplatesDir = QgsApplication::pkgDataPath() + "/composer_templates"; QMap<QString, QString> defaultTemplateMap = defaultTemplates( false ); - this->addTemplates( defaultTemplateMap ); - this->addTemplates( this->otherTemplates() ); + addTemplates( defaultTemplateMap ); + addTemplates( otherTemplates() ); + + mTemplatesDefaultDirBtn->setToolTip( tr( "Use <i>Settings --> Options --> Layouts --> Layout Paths</i> to configure the folders in which QGIS will search for print layout templates." ) ); toggleButtons(); } @@ -148,6 +151,7 @@ void QgsLayoutManagerDialog::addTemplates( const QMap<QString, QString> &templat void QgsLayoutManagerDialog::activate() { + updateTemplateButtonEnabledState(); raise(); setWindowState( windowState() & ~Qt::WindowMinimized ); activateWindow(); @@ -186,13 +190,12 @@ QMap<QString, QString> QgsLayoutManagerDialog::templatesFromPath( const QString return templateMap; } - QFileInfoList fileInfoList = templateDir.entryInfoList( QDir::Files ); - QFileInfoList::const_iterator infoIt = fileInfoList.constBegin(); - for ( ; infoIt != fileInfoList.constEnd(); ++infoIt ) + const QFileInfoList fileInfoList = templateDir.entryInfoList( QDir::Files ); + for ( const QFileInfo &info : fileInfoList ) { - if ( infoIt->suffix().compare( QLatin1String( "qpt" ), Qt::CaseInsensitive ) == 0 ) + if ( info.suffix().compare( QLatin1String( "qpt" ), Qt::CaseInsensitive ) == 0 ) { - templateMap.insert( infoIt->baseName(), infoIt->absoluteFilePath() ); + templateMap.insert( info.baseName(), info.absoluteFilePath() ); } } return templateMap; @@ -285,7 +288,14 @@ void QgsLayoutManagerDialog::mTemplate_currentIndexChanged( int indx ) void QgsLayoutManagerDialog::mTemplatesDefaultDirBtn_pressed() { - openLocalDirectory( mDefaultTemplatesDir ); + if ( QDir( mDefaultTemplatesDir ).exists() ) + openLocalDirectory( mDefaultTemplatesDir ); + else + { + const QStringList paths = QgsApplication::layoutTemplatePaths(); + if ( !paths.empty() ) + openLocalDirectory( paths.at( 0 ) ); + } } void QgsLayoutManagerDialog::mTemplatesUserDirBtn_pressed() @@ -331,6 +341,11 @@ void QgsLayoutManagerDialog::openLocalDirectory( const QString &localDirPath ) } } +void QgsLayoutManagerDialog::updateTemplateButtonEnabledState() +{ + mTemplatesDefaultDirBtn->setEnabled( QDir( mDefaultTemplatesDir ).exists() || !QgsApplication::layoutTemplatePaths().empty() ); +} + #ifdef Q_OS_MAC void QgsLayoutManagerDialog::showEvent( QShowEvent *event ) { diff --git a/src/app/layout/qgslayoutmanagerdialog.h b/src/app/layout/qgslayoutmanagerdialog.h index 4e20337aea..36e2acec2c 100644 --- a/src/app/layout/qgslayoutmanagerdialog.h +++ b/src/app/layout/qgslayoutmanagerdialog.h @@ -85,7 +85,7 @@ class QgsLayoutManagerDialog: public QDialog, private Ui::QgsLayoutManagerBase /** * Returns the default templates (key: template name, value: absolute path to template file) - * \param fromUser whether to return user templates from ~/.qgis/composer_templates + * \param fromUser whether to return user templates from [profile folder]/composer_templates */ QMap<QString, QString> defaultTemplates( bool fromUser = false ) const; QMap<QString, QString> otherTemplates() const; @@ -93,10 +93,12 @@ class QgsLayoutManagerDialog: public QDialog, private Ui::QgsLayoutManagerBase QMap<QString, QString> templatesFromPath( const QString &path ) const; /** - * Open local directory with user's system, creating it if not present + * Opens local directory with user's system and tries to create it if not present */ void openLocalDirectory( const QString &localDirPath ); + void updateTemplateButtonEnabledState(); + QString mDefaultTemplatesDir; QString mUserTemplatesDir; QPushButton *mCreateReportButton = nullptr; diff --git a/src/app/main.cpp b/src/app/main.cpp index 4fbbde51bc..07ec91e637 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -108,6 +108,15 @@ typedef SInt32 SRefCon; #include "qgsopenclutils.h" #endif +/** + * Print QGIS version + */ +void version( ) +{ + const QString msg = QStringLiteral( "QGIS %1 '%2' (%3)\n" ).arg( VERSION ).arg( RELEASE_NAME ).arg( QGSVERSION ); + std::cout << msg.toStdString(); +} + /** * Print usage text */ @@ -116,11 +125,10 @@ void usage( const QString &appName ) QStringList msg; msg - << QStringLiteral( "QGIS - " ) << VERSION << QStringLiteral( " '" ) << RELEASE_NAME << QStringLiteral( "' (" ) - << QGSVERSION << QStringLiteral( ")\n" ) << QStringLiteral( "QGIS is a user friendly Open Source Geographic Information System.\n" ) << QStringLiteral( "Usage: " ) << appName << QStringLiteral( " [OPTION] [FILE]\n" ) << QStringLiteral( " OPTION:\n" ) + << QStringLiteral( "\t[--version]\tdisplay version information and exit\n" ) << QStringLiteral( "\t[--snapshot filename]\temit snapshot of loaded datasets to given file\n" ) << QStringLiteral( "\t[--width width]\twidth of snapshot to emit\n" ) << QStringLiteral( "\t[--height height]\theight of snapshot to emit\n" ) @@ -168,7 +176,7 @@ void usage( const QString &appName ) "QGIS command line options", MB_OK ); #else - std::cerr << msg.join( QString() ).toLocal8Bit().constData(); + std::cout << msg.join( QString() ).toLocal8Bit().constData(); #endif } // usage() @@ -600,7 +608,12 @@ int main( int argc, char *argv[] ) if ( arg == QLatin1String( "--help" ) || arg == QLatin1String( "-?" ) ) { usage( args[0] ); - return 2; + return EXIT_SUCCESS; + } + else if ( arg == QLatin1String( "--version" ) || arg == QLatin1String( "-v" ) ) + { + version(); + return EXIT_SUCCESS; } else if ( arg == QLatin1String( "--nologo" ) || arg == QLatin1String( "-n" ) ) { @@ -997,6 +1010,10 @@ int main( int argc, char *argv[] ) if ( !settingsMigrationForce && showWelcome ) { QgsFirstRunDialog dlg; + if ( ! QFile::exists( QSettings( "QGIS", "QGIS2" ).fileName() ) ) + { + dlg.hideMigration(); + } dlg.exec(); runMigration = dlg.migrateSettings(); migSettings.setValue( QStringLiteral( "migration/firstRunVersionFlag" ), Qgis::QGIS_VERSION_INT ); diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 766f6cabe6..aa558ab613 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -2165,7 +2165,7 @@ void QgisApp::createActions() connect( mActionZoomActualSize, &QAction::triggered, this, &QgisApp::zoomActualSize ); connect( mActionMapTips, &QAction::toggled, this, &QgisApp::toggleMapTips ); connect( mActionNewBookmark, &QAction::triggered, this, &QgisApp::newBookmark ); - connect( mActionDraw, &QAction::triggered, this, &QgisApp::refreshMapCanvas ); + connect( mActionDraw, &QAction::triggered, this, [this] { refreshMapCanvas( true ); } ); connect( mActionTextAnnotation, &QAction::triggered, this, &QgisApp::addTextAnnotation ); connect( mActionFormAnnotation, &QAction::triggered, this, &QgisApp::addFormAnnotation ); connect( mActionHtmlAnnotation, &QAction::triggered, this, &QgisApp::addHtmlAnnotation ); @@ -3048,6 +3048,7 @@ void QgisApp::createStatusBar() statusBar()->setFont( statusBarFont ); mStatusBar = new QgsStatusBar(); + mStatusBar->setParentStatusBar( QMainWindow::statusBar() ); mStatusBar->setFont( statusBarFont ); statusBar()->addPermanentWidget( mStatusBar, 10 ); @@ -4596,13 +4597,21 @@ static void setupVectorLayer( const QString &vectorLayerPath, } } + bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QString &enc, const QString &dataSourceType ) +{ + return addVectorLayersPrivate( layerQStringList, enc, dataSourceType ); +} + +bool QgisApp::addVectorLayersPrivate( const QStringList &layerQStringList, const QString &enc, const QString &dataSourceType, const bool guiWarning ) { bool wasfrozen = mMapCanvas->isFrozen(); - QList<QgsMapLayer *> myList; + QList<QgsMapLayer *> layersToAdd; + QList<QgsMapLayer *> addedLayers; QgsSettings settings; + bool userAskedToAddLayers = false; - Q_FOREACH ( QString src, layerQStringList ) + for ( QString src : layerQStringList ) { src = src.trimmed(); QString baseName; @@ -4672,6 +4681,7 @@ bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QStrin if ( layer->isValid() ) { + userAskedToAddLayers = true; layer->setProviderEncoding( enc ); QStringList sublayers = layer->dataProvider()->subLayers(); @@ -4681,7 +4691,7 @@ bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QStrin // sublayers selection dialog so the user can select the sublayers to actually load. if ( sublayers.count() > 1 ) { - askUserForOGRSublayers( layer ); + addedLayers.append( askUserForOGRSublayers( layer ) ); // The first layer loaded is not useful in that case. The user can select it in // the list if he wants to load it. @@ -4693,12 +4703,15 @@ bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QStrin setupVectorLayer( src, sublayers, layer, QStringLiteral( "ogr" ), options ); - myList << layer; + layersToAdd << layer; } else { - QString msg = tr( "%1 doesn't have any layers." ).arg( src ); - visibleMessageBar()->pushMessage( tr( "Invalid Data Source" ), msg, Qgis::Critical, messageTimeout() ); + if ( guiWarning ) + { + QString msg = tr( "%1 doesn't have any layers." ).arg( src ); + visibleMessageBar()->pushMessage( tr( "Invalid Data Source" ), msg, Qgis::Critical, messageTimeout() ); + } delete layer; } } @@ -4712,9 +4725,9 @@ bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QStrin QMessageBox::question( this, tr( "Invalid Data Source" ), tr( "Download with \"Protocol\" source type has failed, do you want to try the \"File\" source type?" ) ) == QMessageBox::Yes ) { - return addVectorLayers( QStringList() << src.replace( QLatin1String( "/vsicurl/" ), " " ), enc, dataSourceType ); + return addVectorLayersPrivate( QStringList() << src.replace( QLatin1String( "/vsicurl/" ), " " ), enc, dataSourceType, guiWarning ); } - else + else if ( guiWarning ) { visibleMessageBar()->pushMessage( tr( "Invalid Data Source" ), msg, Qgis::Critical, messageTimeout() ); } @@ -4722,14 +4735,16 @@ bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QStrin } // make sure at least one layer was successfully added - if ( myList.isEmpty() ) + if ( layersToAdd.isEmpty() ) { - return false; + // we also return true if we asked the user for sublayers, but they choose none. In this case nothing + // went wrong, so we shouldn't return false and cause GUI warnings to appear + return userAskedToAddLayers || !addedLayers.isEmpty(); } // Register this layer with the layers registry - QgsProject::instance()->addMapLayers( myList ); - Q_FOREACH ( QgsMapLayer *l, myList ) + QgsProject::instance()->addMapLayers( layersToAdd ); + for ( QgsMapLayer *l : qgis::as_const( layersToAdd ) ) { bool ok; l->loadDefaultStyle( ok ); @@ -4744,16 +4759,17 @@ bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QStrin freezeCanvases( false ); refreshMapCanvas(); } -// Let render() do its own cursor management -// QApplication::restoreOverrideCursor(); - - // statusBar()->showMessage( mMapCanvas->extent().toString( 2 ) ); return true; -} // QgisApp::addVectorLayer() +} QgsMeshLayer *QgisApp::addMeshLayer( const QString &url, const QString &baseName, const QString &providerKey ) +{ + return addMeshLayerPrivate( url, baseName, providerKey ); +} + +QgsMeshLayer *QgisApp::addMeshLayerPrivate( const QString &url, const QString &baseName, const QString &providerKey, const bool guiWarning ) { bool wasfrozen = mMapCanvas->isFrozen(); QgsSettings settings; @@ -4773,8 +4789,11 @@ QgsMeshLayer *QgisApp::addMeshLayer( const QString &url, const QString &baseName if ( ! layer || !layer->isValid() ) { - QString msg = tr( "%1 is not a valid or recognized data source." ).arg( url ); - visibleMessageBar()->pushMessage( tr( "Invalid Data Source" ), msg, Qgis::Critical, messageTimeout() ); + if ( guiWarning ) + { + QString msg = tr( "%1 is not a valid or recognized data source." ).arg( url ); + visibleMessageBar()->pushMessage( tr( "Invalid Data Source" ), msg, Qgis::Critical, messageTimeout() ); + } // since the layer is bad, stomp on it return nullptr; @@ -4798,7 +4817,7 @@ QgsMeshLayer *QgisApp::addMeshLayer( const QString &url, const QString &baseName refreshMapCanvas(); } return layer.release(); -} // QgisApp::addMeshLayer() +} // present a dialog to choose zipitem layers bool QgisApp::askUserForZipItemLayers( const QString &path ) @@ -4913,23 +4932,24 @@ bool QgisApp::askUserForZipItemLayers( const QString &path ) } // present a dialog to choose GDAL raster sublayers -void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer ) +QList< QgsMapLayer * > QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer ) { + QList< QgsMapLayer * > result; if ( !layer ) - return; + return result; QStringList sublayers = layer->subLayers(); QgsDebugMsg( QStringLiteral( "raster has %1 sublayers" ).arg( layer->subLayers().size() ) ); if ( sublayers.empty() ) - return; + return result; // if promptLayers=Load all, load all sublayers without prompting QgsSettings settings; if ( settings.value( QStringLiteral( "qgis/promptForRasterSublayers" ), 1 ).toInt() == 3 ) { - loadGDALSublayers( layer->source(), sublayers ); - return; + result.append( loadGDALSublayers( layer->source(), sublayers ) ); + return result; } // We initialize a selection dialog and display it. @@ -4950,7 +4970,17 @@ void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer ) // for hdf4 it would be best to get description, because the subdataset_index is not very practical if ( name.startsWith( QLatin1String( "netcdf" ), Qt::CaseInsensitive ) || name.startsWith( QLatin1String( "hdf" ), Qt::CaseInsensitive ) ) + { name = name.mid( name.indexOf( path ) + path.length() + 1 ); + } + else if ( name.startsWith( QLatin1String( "GPKG" ), Qt::CaseInsensitive ) ) + { + const auto parts { name.split( ':' ) }; + if ( parts.count() >= 3 ) + { + name = parts.at( parts.count( ) - 1 ); + } + } else { // remove driver name and file name @@ -5020,6 +5050,7 @@ void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer ) { addRasterLayer( rlayer ); } + result << rlayer; } } @@ -5027,6 +5058,7 @@ void QgisApp::askUserForGDALSublayers( QgsRasterLayer *layer ) if ( addToGroup && ! newLayersVisible ) group->setItemVisibilityCheckedRecursive( newLayersVisible ); } + return result; } // should the GDAL sublayers dialog should be presented to the user? @@ -5048,8 +5080,9 @@ bool QgisApp::shouldAskUserForGDALSublayers( QgsRasterLayer *layer ) // This method will load with GDAL the layers in parameter. // It is normally triggered by the sublayer selection dialog. -void QgisApp::loadGDALSublayers( const QString &uri, const QStringList &list ) +QList< QgsMapLayer * > QgisApp::loadGDALSublayers( const QString &uri, const QStringList &list ) { + QList< QgsMapLayer * > result; QString path, name; QgsRasterLayer *subLayer = nullptr; QgsSettings settings; @@ -5069,6 +5102,7 @@ void QgisApp::loadGDALSublayers( const QString &uri, const QStringList &list ) if ( subLayer ) { if ( subLayer->isValid() ) + { if ( addToGroup ) { QgsProject::instance()->addMapLayer( subLayer, false ); @@ -5078,22 +5112,26 @@ void QgisApp::loadGDALSublayers( const QString &uri, const QStringList &list ) { addRasterLayer( subLayer ); } + result << subLayer; + } else delete subLayer; } } + return result; } // This method is the method that does the real job. If the layer given in // parameter is nullptr, then the method tries to act on the activeLayer. -void QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer ) +QList<QgsMapLayer *> QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer ) { + QList<QgsMapLayer *> result; if ( !layer ) { layer = qobject_cast<QgsVectorLayer *>( activeLayer() ); if ( !layer || layer->dataProvider()->name() != QLatin1String( "ogr" ) ) - return; + return result; } QStringList sublayers = layer->dataProvider()->subLayers(); @@ -5138,7 +5176,7 @@ void QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer ) chooseSublayersDialog.populateLayerTable( list ); if ( !chooseSublayersDialog.exec() ) - return; + return result; QString name = layer->name(); @@ -5149,7 +5187,6 @@ void QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer ) // The uri must contain the actual uri of the vectorLayer from which we are // going to load the sublayers. QString fileName = QFileInfo( uri ).baseName(); - QList<QgsMapLayer *> myList; Q_FOREACH ( const QgsSublayersDialog::LayerDefinition &def, chooseSublayersDialog.selection() ) { QString layerGeometryType = def.type; @@ -5176,7 +5213,7 @@ void QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer ) QgsVectorLayer *layer = new QgsVectorLayer( composedURI, name, QStringLiteral( "ogr" ), options ); if ( layer && layer->isValid() ) { - myList << layer; + result << layer; } else { @@ -5186,7 +5223,7 @@ void QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer ) } } - if ( ! myList.isEmpty() ) + if ( !result.isEmpty() ) { QgsSettings settings; bool addToGroup = settings.value( QStringLiteral( "/qgis/openSublayersInGroup" ), true ).toBool(); @@ -5195,8 +5232,8 @@ void QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer ) if ( addToGroup ) group = QgsProject::instance()->layerTreeRoot()->insertGroup( 0, name ); - QgsProject::instance()->addMapLayers( myList, ! addToGroup ); - Q_FOREACH ( QgsMapLayer *l, myList ) + QgsProject::instance()->addMapLayers( result, ! addToGroup ); + for ( QgsMapLayer *l : qgis::as_const( result ) ) { bool ok; l->loadDefaultStyle( ok ); @@ -5209,6 +5246,7 @@ void QgisApp::askUserForOGRSublayers( QgsVectorLayer *layer ) if ( addToGroup && ! newLayersVisible ) group->setItemVisibilityCheckedRecursive( newLayersVisible ); } + return result; } void QgisApp::addDatabaseLayers( QStringList const &layerPathList, QString const &providerKey ) @@ -5298,12 +5336,12 @@ void QgisApp::addVirtualLayer() this, SLOT( replaceSelectedVectorLayer( QString, QString, QString, QString ) ) ); dts->exec(); delete dts; -} // QgisApp::addVirtualLayer() +} void QgisApp::addSelectedVectorLayer( const QString &uri, const QString &layerName, const QString &provider ) { addVectorLayer( uri, layerName, provider ); -} // QgisApp:addSelectedVectorLayer +} void QgisApp::replaceSelectedVectorLayer( const QString &oldId, const QString &uri, const QString &layerName, const QString &provider ) { @@ -5436,8 +5474,7 @@ bool QgisApp::fileNew( bool promptToSaveFlag, bool forceBlank ) mScaleWidget->updateScales(); // set project CRS - QString defCrs = settings.value( QStringLiteral( "Projections/projectDefaultCrs" ), GEO_EPSG_CRS_AUTHID ).toString(); - QgsCoordinateReferenceSystem srs = QgsCoordinateReferenceSystem::fromOgcWmsCrs( defCrs ); + const QgsCoordinateReferenceSystem srs = QgsCoordinateReferenceSystem( settings.value( QStringLiteral( "/projections/defaultProjectCrs" ), GEO_EPSG_CRS_AUTHID, QgsSettings::App ).toString() ); // write the projections _proj string_ to project settings prj->setCrs( srs ); prj->setEllipsoid( srs.ellipsoidAcronym() ); @@ -6356,24 +6393,17 @@ bool QgisApp::openLayer( const QString &fileName, bool allowInteractive ) else ok = addRasterLayer( fileName, fileInfo.completeBaseName() ); } - // TODO - should we really call isValidRasterFileName() before addRasterLayer() - // this results in 2 calls to GDALOpen() - // I think (Radim) that it is better to test only first if valid, - // addRasterLayer() is really trying to add layer and gives error if fails - // - // if ( addRasterLayer( fileName, fileInfo.completeBaseName() ) ) - // { - // ok = true ); - // } - else // nope - try to load it as a shape/ogr + + // try as a vector + if ( !ok || fileName.endsWith( QLatin1String( ".gpkg" ), Qt::CaseInsensitive ) ) { if ( allowInteractive ) { - ok = addVectorLayers( QStringList( fileName ), QStringLiteral( "System" ), QStringLiteral( "file" ) ); + ok = addVectorLayersPrivate( QStringList( fileName ), QStringLiteral( "System" ), QStringLiteral( "file" ), false ); } else { - ok = addVectorLayer( fileName, fileInfo.completeBaseName(), QStringLiteral( "ogr" ) ); + ok = addVectorLayerPrivate( fileName, fileInfo.completeBaseName(), QStringLiteral( "ogr" ), false ); } } @@ -6382,13 +6412,16 @@ bool QgisApp::openLayer( const QString &fileName, bool allowInteractive ) // Try to load as mesh layer after raster & vector if ( !ok ) { - ok = addMeshLayer( fileName, fileInfo.completeBaseName(), "mdal" ); + ok = static_cast< bool >( addMeshLayerPrivate( fileName, fileInfo.completeBaseName(), QStringLiteral( "mdal" ), false ) ); } if ( !ok ) { // we have no idea what this file is... QgsMessageLog::logMessage( tr( "Unable to load %1" ).arg( fileName ) ); + + const QString msg = tr( "%1 is not a valid or recognized data source." ).arg( fileName ); + visibleMessageBar()->pushMessage( tr( "Invalid Data Source" ), msg, Qgis::Critical, messageTimeout() ); } return ok; @@ -9159,13 +9192,16 @@ void QgisApp::copyFeatures( QgsFeatureStore &featureStore ) clipboard()->replaceWithCopyOf( featureStore ); } -void QgisApp::refreshMapCanvas() +void QgisApp::refreshMapCanvas( bool redrawAllLayers ) { Q_FOREACH ( QgsMapCanvas *canvas, mapCanvases() ) { //stop any current rendering canvas->stopRendering(); - canvas->refreshAllLayers(); + if ( redrawAllLayers ) + canvas->refreshAllLayers(); + else + canvas->refresh(); } } @@ -10833,6 +10869,11 @@ void QgisApp::showLayoutManager() } QgsVectorLayer *QgisApp::addVectorLayer( const QString &vectorLayerPath, const QString &name, const QString &providerKey ) +{ + return addVectorLayerPrivate( vectorLayerPath, name, providerKey ); +} + +QgsVectorLayer *QgisApp::addVectorLayerPrivate( const QString &vectorLayerPath, const QString &name, const QString &providerKey, const bool guiWarning ) { bool wasfrozen = mMapCanvas->isFrozen(); QgsSettings settings; @@ -10878,12 +10919,12 @@ QgsVectorLayer *QgisApp::addVectorLayer( const QString &vectorLayerPath, const Q ! vectorLayerPath.contains( QStringLiteral( "layerid=" ) ) && ! vectorLayerPath.contains( QStringLiteral( "layername=" ) ) ) { - askUserForOGRSublayers( layer ); + QList< QgsMapLayer * > addedLayers = askUserForOGRSublayers( layer ); // The first layer loaded is not useful in that case. The user can select it in // the list if he wants to load it. delete layer; - layer = nullptr; + layer = addedLayers.isEmpty() ? nullptr : qobject_cast< QgsVectorLayer * >( addedLayers.at( 0 ) ); } else { @@ -10907,9 +10948,12 @@ QgsVectorLayer *QgisApp::addVectorLayer( const QString &vectorLayerPath, const Q } else { - QString message = layer->dataProvider()->error().message( QgsErrorMessage::Text ); - QString msg = tr( "The layer %1 is not a valid layer and can not be added to the map. Reason: %2" ).arg( vectorLayerPath, message ); - visibleMessageBar()->pushMessage( tr( "Layer is not valid" ), msg, Qgis::Critical, messageTimeout() ); + if ( guiWarning ) + { + QString message = layer->dataProvider()->error().message( QgsErrorMessage::Text ); + QString msg = tr( "The layer %1 is not a valid layer and can not be added to the map. Reason: %2" ).arg( vectorLayerPath, message ); + visibleMessageBar()->pushMessage( tr( "Layer is not valid" ), msg, Qgis::Critical, messageTimeout() ); + } delete layer; freezeCanvases( false ); @@ -10929,9 +10973,7 @@ QgsVectorLayer *QgisApp::addVectorLayer( const QString &vectorLayerPath, const Q return layer; -} // QgisApp::addVectorLayer - - +} void QgisApp::addMapLayer( QgsMapLayer *mapLayer ) { @@ -12102,7 +12144,7 @@ void QgisApp::layersWereAdded( const QList<QgsMapLayer *> &layers ) if ( provider ) { connect( provider, &QgsDataProvider::dataChanged, layer, [layer] { layer->triggerRepaint(); } ); - connect( provider, &QgsDataProvider::dataChanged, this, &QgisApp::refreshMapCanvas ); + connect( provider, &QgsDataProvider::dataChanged, this, [this] { refreshMapCanvas(); } ); } } } @@ -12933,13 +12975,13 @@ QgsRasterLayer *QgisApp::addRasterLayerPrivate( if ( shouldAskUserForGDALSublayers( layer ) ) { - askUserForGDALSublayers( layer ); + QList< QgsMapLayer * > subLayers = askUserForGDALSublayers( layer ); ok = true; // The first layer loaded is not useful in that case. The user can select it in // the list if he wants to load it. delete layer; - layer = nullptr; + layer = !subLayers.isEmpty() ? qobject_cast< QgsRasterLayer * >( subLayers.at( 0 ) ) : nullptr; } } else diff --git a/src/app/qgisapp.h b/src/app/qgisapp.h index 2bd79a86e8..8eb1c4e60e 100644 --- a/src/app/qgisapp.h +++ b/src/app/qgisapp.h @@ -173,6 +173,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow { Q_OBJECT public: + //! Constructor QgisApp( QSplashScreen *splash, bool restorePlugins = true, bool skipVersionCheck = false, const QString &rootProfileLocation = QString(), @@ -857,7 +858,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow //! copies features to internal clipboard void copyFeatures( QgsFeatureStore &featureStore ); - void loadGDALSublayers( const QString &uri, const QStringList &list ); + QList<QgsMapLayer *> loadGDALSublayers( const QString &uri, const QStringList &list ); //! Deletes the selected attributes for the currently selected vector layer void deleteSelected( QgsMapLayer *layer = nullptr, QWidget *parent = nullptr, bool checkFeaturesVisible = false ); @@ -1441,7 +1442,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow void selectByForm(); //! refresh map canvas - void refreshMapCanvas(); + void refreshMapCanvas( bool redrawAllLayers = false ); //! start "busy" progress bar void canvasRefreshStarted(); @@ -1753,9 +1754,10 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow bool askUserForZipItemLayers( const QString &path ); /** - * This method will open a dialog so the user can select GDAL sublayers to load + * This method will open a dialog so the user can select GDAL sublayers to load, + * and then returns a list of these layers. */ - void askUserForGDALSublayers( QgsRasterLayer *layer ); + QList< QgsMapLayer * > askUserForGDALSublayers( QgsRasterLayer *layer ); /** * This method will verify if a GDAL layer contains sublayers @@ -1763,9 +1765,10 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow bool shouldAskUserForGDALSublayers( QgsRasterLayer *layer ); /** - * This method will open a dialog so the user can select OGR sublayers to load + * This method will open a dialog so the user can select OGR sublayers to load, + * and then returns a list of these layers. */ - void askUserForOGRSublayers( QgsVectorLayer *layer ); + QList< QgsMapLayer * > askUserForOGRSublayers( QgsVectorLayer *layer ); /** * Add a raster layer to the map (passed in as a ptr). @@ -1778,6 +1781,14 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow const QString &providerKey, bool guiWarning, bool guiUpdate ); + //! Open a mesh layer - this is the generic function which takes all parameters + QgsMeshLayer *addMeshLayerPrivate( const QString &uri, const QString &baseName, + const QString &providerKey, bool guiWarning = true ); + + bool addVectorLayersPrivate( const QStringList &layerQStringList, const QString &enc, const QString &dataSourceType, bool guiWarning = true ); + QgsVectorLayer *addVectorLayerPrivate( const QString &vectorLayerPath, const QString &baseName, const QString &providerKey, bool guiWarning = true ); + + /** * Add the current project to the recently opened/saved projects list * pass settings by reference since creating more than one diff --git a/src/app/qgsattributetabledialog.cpp b/src/app/qgsattributetabledialog.cpp index e6c74149b5..e3b2b3df7f 100644 --- a/src/app/qgsattributetabledialog.cpp +++ b/src/app/qgsattributetabledialog.cpp @@ -148,12 +148,11 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttr // Initialize the window geometry restoreGeometry( settings.value( QStringLiteral( "Windows/BetterAttributeTable/geometry" ) ).toByteArray() ); - myDa = new QgsDistanceArea(); + QgsDistanceArea da; + da.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() ); + da.setEllipsoid( QgsProject::instance()->ellipsoid() ); + mEditorContext.setDistanceArea( da ); - myDa->setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() ); - myDa->setEllipsoid( QgsProject::instance()->ellipsoid() ); - - mEditorContext.setDistanceArea( *myDa ); mEditorContext.setVectorLayerTools( QgisApp::instance()->vectorLayerTools() ); mEditorContext.setMapCanvas( QgisApp::instance()->mapCanvas() ); @@ -362,11 +361,6 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttr } } -QgsAttributeTableDialog::~QgsAttributeTableDialog() -{ - delete myDa; -} - void QgsAttributeTableDialog::updateTitle() { if ( ! mLayer ) @@ -511,7 +505,10 @@ void QgsAttributeTableDialog::runFieldCalculation( QgsVectorLayer *layer, const QString error; QgsExpression exp( expression ); - exp.setGeomCalculator( myDa ); + QgsDistanceArea da; + da.setSourceCrs( mLayer->crs(), QgsProject::instance()->transformContext() ); + da.setEllipsoid( QgsProject::instance()->ellipsoid() ); + exp.setGeomCalculator( &da ); exp.setDistanceUnits( QgsProject::instance()->distanceUnits() ); exp.setAreaUnits( QgsProject::instance()->areaUnits() ); bool useGeometry = exp.needsGeometry(); diff --git a/src/app/qgsattributetabledialog.h b/src/app/qgsattributetabledialog.h index 9f9ff9656b..72f94d57ac 100644 --- a/src/app/qgsattributetabledialog.h +++ b/src/app/qgsattributetabledialog.h @@ -53,8 +53,6 @@ class APP_EXPORT QgsAttributeTableDialog : public QDialog, private Ui::QgsAttrib */ QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttributeTableFilterModel::FilterMode initialMode = QgsAttributeTableFilterModel::ShowAll, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::Window ); - ~QgsAttributeTableDialog() override; - QgsExpressionContext createExpressionContext() const override; public slots: @@ -229,8 +227,6 @@ class APP_EXPORT QgsAttributeTableDialog : public QDialog, private Ui::QgsAttrib QgsDockWidget *mDock = nullptr; QDialog *mDialog = nullptr; - QgsDistanceArea *myDa = nullptr; - QMenu *mFilterColumnsMenu = nullptr; QSignalMapper *mFilterActionMapper = nullptr; diff --git a/src/app/qgsfirstrundialog.cpp b/src/app/qgsfirstrundialog.cpp index d39e13774a..dd63edec75 100644 --- a/src/app/qgsfirstrundialog.cpp +++ b/src/app/qgsfirstrundialog.cpp @@ -31,3 +31,8 @@ bool QgsFirstRunDialog::migrateSettings() { return ( mImportSettingsYes->isChecked() ); } + +void QgsFirstRunDialog::hideMigration() +{ + mMigrationWidget->hide(); +} diff --git a/src/app/qgsfirstrundialog.h b/src/app/qgsfirstrundialog.h index 38f438f2d9..241f8bbc06 100644 --- a/src/app/qgsfirstrundialog.h +++ b/src/app/qgsfirstrundialog.h @@ -30,6 +30,12 @@ class APP_EXPORT QgsFirstRunDialog : public QDialog, private Ui::QgsFirstRunDial bool migrateSettings(); + /** + * Hides the migration checkboxes + */ + void hideMigration(); + + signals: public slots: diff --git a/src/app/qgslabelinggui.cpp b/src/app/qgslabelinggui.cpp index 54aabcd73a..521fdda016 100644 --- a/src/app/qgslabelinggui.cpp +++ b/src/app/qgslabelinggui.cpp @@ -537,6 +537,7 @@ void QgsLabelingGui::populateDataDefinedButtons() registerDataDefinedButton( mCentroidDDBtn, QgsPalLayerSettings::CentroidWhole ); registerDataDefinedButton( mPointQuadOffsetDDBtn, QgsPalLayerSettings::OffsetQuad ); registerDataDefinedButton( mPointPositionOrderDDBtn, QgsPalLayerSettings::PredefinedPositionOrder ); + registerDataDefinedButton( mLinePlacementFlagsDDBtn, QgsPalLayerSettings::LinePlacementOptions ); registerDataDefinedButton( mPointOffsetDDBtn, QgsPalLayerSettings::OffsetXY ); registerDataDefinedButton( mPointOffsetUnitsDDBtn, QgsPalLayerSettings::OffsetUnits ); registerDataDefinedButton( mLineDistanceDDBtn, QgsPalLayerSettings::LabelDistance ); diff --git a/src/app/qgsmaptoollabel.cpp b/src/app/qgsmaptoollabel.cpp index 2bdb268e37..b172a067a2 100644 --- a/src/app/qgsmaptoollabel.cpp +++ b/src/app/qgsmaptoollabel.cpp @@ -68,13 +68,12 @@ void QgsMapToolLabel::createRubberBands() delete mFeatureRubberBand; //label rubber band - QgsRectangle rect = mCurrentLabel.pos.labelRect; mLabelRubberBand = new QgsRubberBand( mCanvas, QgsWkbTypes::LineGeometry ); - mLabelRubberBand->addPoint( QgsPointXY( rect.xMinimum(), rect.yMinimum() ) ); - mLabelRubberBand->addPoint( QgsPointXY( rect.xMinimum(), rect.yMaximum() ) ); - mLabelRubberBand->addPoint( QgsPointXY( rect.xMaximum(), rect.yMaximum() ) ); - mLabelRubberBand->addPoint( QgsPointXY( rect.xMaximum(), rect.yMinimum() ) ); - mLabelRubberBand->addPoint( QgsPointXY( rect.xMinimum(), rect.yMinimum() ) ); + mLabelRubberBand->addPoint( mCurrentLabel.pos.cornerPoints.at( 0 ) ); + mLabelRubberBand->addPoint( mCurrentLabel.pos.cornerPoints.at( 1 ) ); + mLabelRubberBand->addPoint( mCurrentLabel.pos.cornerPoints.at( 2 ) ); + mLabelRubberBand->addPoint( mCurrentLabel.pos.cornerPoints.at( 3 ) ); + mLabelRubberBand->addPoint( mCurrentLabel.pos.cornerPoints.at( 0 ) ); mLabelRubberBand->setColor( QColor( 0, 255, 0, 65 ) ); mLabelRubberBand->setWidth( 3 ); mLabelRubberBand->show(); diff --git a/src/app/qgsmaptoolpinlabels.cpp b/src/app/qgsmaptoolpinlabels.cpp index 891d61863f..45ef31604e 100644 --- a/src/app/qgsmaptoolpinlabels.cpp +++ b/src/app/qgsmaptoolpinlabels.cpp @@ -140,13 +140,12 @@ void QgsMapToolPinLabels::highlightLabel( const QgsLabelPosition &labelpos, const QString &id, const QColor &color ) { - QgsRectangle rect = labelpos.labelRect; QgsRubberBand *rb = new QgsRubberBand( mCanvas, QgsWkbTypes::PolygonGeometry ); - rb->addPoint( QgsPointXY( rect.xMinimum(), rect.yMinimum() ) ); - rb->addPoint( QgsPointXY( rect.xMinimum(), rect.yMaximum() ) ); - rb->addPoint( QgsPointXY( rect.xMaximum(), rect.yMaximum() ) ); - rb->addPoint( QgsPointXY( rect.xMaximum(), rect.yMinimum() ) ); - rb->addPoint( QgsPointXY( rect.xMinimum(), rect.yMinimum() ) ); + rb->addPoint( labelpos.cornerPoints.at( 0 ) ); + rb->addPoint( labelpos.cornerPoints.at( 1 ) ); + rb->addPoint( labelpos.cornerPoints.at( 2 ) ); + rb->addPoint( labelpos.cornerPoints.at( 3 ) ); + rb->addPoint( labelpos.cornerPoints.at( 0 ) ); rb->setColor( color ); rb->setWidth( 0 ); rb->show(); diff --git a/src/app/qgsmaptoolreshape.cpp b/src/app/qgsmaptoolreshape.cpp index d755cd82f2..9aa2521627 100644 --- a/src/app/qgsmaptoolreshape.cpp +++ b/src/app/qgsmaptoolreshape.cpp @@ -121,9 +121,11 @@ void QgsMapToolReshape::reshape( QgsVectorLayer *vlayer ) bbox.combineExtentWith( points().at( i ).x(), points().at( i ).y() ); } - QgsLineString reshapeLineString( points() ); - if ( QgsWkbTypes::hasZ( vlayer->wkbType() ) ) - reshapeLineString.addZValue( defaultZValue() ); + + QgsPointSequence pts; + QVector<QgsPoint> points; + captureCurve()->points( pts ); + QgsLineString reshapeLineString( pts ); //query all the features that intersect bounding box of capture line QgsFeatureIterator fit = vlayer->getFeatures( QgsFeatureRequest().setFilterRect( bbox ).setNoAttributes() ); @@ -143,7 +145,7 @@ void QgsMapToolReshape::reshape( QgsVectorLayer *vlayer ) { // in case of a binding line, we just want to update the line from // the starting point and not both side - if ( isBinding && !geom.asPolyline().contains( points().first() ) ) + if ( isBinding && !geom.asPolyline().contains( pts.first() ) ) continue; reshapeReturn = geom.reshapeGeometry( reshapeLineString ); diff --git a/src/app/qgsoptions.cpp b/src/app/qgsoptions.cpp index d98c0839d4..ed83cce8e5 100644 --- a/src/app/qgsoptions.cpp +++ b/src/app/qgsoptions.cpp @@ -51,6 +51,7 @@ #include "qgsoptionswidgetfactory.h" #include "qgslocatorwidget.h" #include "qgslocatoroptionswidget.h" +#include "qgsgui.h" #ifdef HAVE_OPENCL #include "qgsopenclutils.h" @@ -89,7 +90,6 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WindowFlags fl, const QList<QgsOpti { setupUi( this ); connect( cbxProjectDefaultNew, &QCheckBox::toggled, this, &QgsOptions::cbxProjectDefaultNew_toggled ); - connect( leProjectGlobalCrs, &QgsProjectionSelectionWidget::crsChanged, this, &QgsOptions::leProjectGlobalCrs_crsChanged ); connect( leLayerGlobalCrs, &QgsProjectionSelectionWidget::crsChanged, this, &QgsOptions::leLayerGlobalCrs_crsChanged ); connect( lstGdalDrivers, &QTreeWidget::itemDoubleClicked, this, &QgsOptions::lstGdalDrivers_itemDoubleClicked ); connect( mProjectOnLaunchCmbBx, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsOptions::mProjectOnLaunchCmbBx_currentIndexChanged ); @@ -373,12 +373,12 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WindowFlags fl, const QList<QgsOpti // cache settings mCacheDirectory->setText( mSettings->value( QStringLiteral( "cache/directory" ) ).toString() ); - mCacheDirectory->setPlaceholderText( QDir( QgsApplication::qgisSettingsDirPath() ).canonicalPath() + QDir::separator() + QStringLiteral( "cache" ) ); + mCacheDirectory->setPlaceholderText( QStandardPaths::writableLocation( QStandardPaths::CacheLocation ) ); mCacheSize->setMinimum( 0 ); mCacheSize->setMaximum( std::numeric_limits<int>::max() ); mCacheSize->setSingleStep( 1024 ); - qint64 cacheSize = mSettings->value( QStringLiteral( "cache/size" ), 50 * 1024 * 1024 ).toULongLong(); - mCacheSize->setValue( ( int )( cacheSize / 1024 ) ); + qint64 cacheSize = mSettings->value( QStringLiteral( "cache/size" ), 50 * 1024 * 1024 ).toLongLong(); + mCacheSize->setValue( static_cast<int>( cacheSize / 1024 ) ); connect( mBrowseCacheDirectory, &QAbstractButton::clicked, this, &QgsOptions::browseCacheDirectory ); connect( mClearCache, &QAbstractButton::clicked, this, &QgsOptions::clearCache ); @@ -460,12 +460,24 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WindowFlags fl, const QList<QgsOpti mLayerDefaultCrs = QgsCoordinateReferenceSystem::fromOgcWmsCrs( myLayerDefaultCrs ); leLayerGlobalCrs->setCrs( mLayerDefaultCrs ); - QString myDefaultCrs = mSettings->value( QStringLiteral( "/Projections/projectDefaultCrs" ), GEO_EPSG_CRS_AUTHID ).toString(); - mDefaultCrs = QgsCoordinateReferenceSystem::fromOgcWmsCrs( myDefaultCrs ); - leProjectGlobalCrs->setCrs( mDefaultCrs ); + const QString defaultProjectCrs = mSettings->value( QStringLiteral( "/projections/defaultProjectCrs" ), GEO_EPSG_CRS_AUTHID, QgsSettings::App ).toString(); leProjectGlobalCrs->setOptionVisible( QgsProjectionSelectionWidget::DefaultCrs, false ); + leProjectGlobalCrs->setOptionVisible( QgsProjectionSelectionWidget::CrsNotSet, true ); + leProjectGlobalCrs->setNotSetText( tr( "No projection (or unknown/non-Earth projection)" ) ); + leProjectGlobalCrs->setCrs( QgsCoordinateReferenceSystem( defaultProjectCrs ) ); + const QgsGui::ProjectCrsBehavior projectCrsBehavior = mSettings->enumValue( QStringLiteral( "/projections/newProjectCrsBehavior" ), QgsGui::UseCrsOfFirstLayerAdded, QgsSettings::App ); + switch ( projectCrsBehavior ) + { + case QgsGui::UseCrsOfFirstLayerAdded: + radProjectUseCrsOfFirstLayer->setChecked( true ); + break; + + case QgsGui::UsePresetCrs: + radProjectUseDefaultCrs->setChecked( true ); + break; + } - mShowDatumTransformDialogCheckBox->setChecked( mSettings->value( QStringLiteral( "/Projections/showDatumTransformDialog" ), false ).toBool() ); + mShowDatumTransformDialogCheckBox->setChecked( mSettings->value( QStringLiteral( "/projections/promptWhenMultipleTransformsExist" ), false, QgsSettings::App ).toBool() ); // Datum transforms QgsCoordinateTransformContext context; @@ -1533,9 +1545,9 @@ void QgsOptions::saveOptions() } mSettings->setValue( QStringLiteral( "/Projections/layerDefaultCrs" ), mLayerDefaultCrs.authid() ); - mSettings->setValue( QStringLiteral( "/Projections/projectDefaultCrs" ), mDefaultCrs.authid() ); - - mSettings->setValue( QStringLiteral( "/Projections/showDatumTransformDialog" ), mShowDatumTransformDialogCheckBox->isChecked() ); + mSettings->setValue( QStringLiteral( "/projections/defaultProjectCrs" ), leProjectGlobalCrs->crs().authid(), QgsSettings::App ); + mSettings->setEnumValue( QStringLiteral( "/projections/newProjectCrsBehavior" ), radProjectUseCrsOfFirstLayer->isChecked() ? QgsGui::UseCrsOfFirstLayerAdded : QgsGui::UsePresetCrs, QgsSettings::App ); + mSettings->setValue( QStringLiteral( "/projections/promptWhenMultipleTransformsExist" ), mShowDatumTransformDialogCheckBox->isChecked(), QgsSettings::App ); //measurement settings @@ -1783,10 +1795,6 @@ void QgsOptions::mFontFamilyComboBox_currentFontChanged( const QFont &font ) } } -void QgsOptions::leProjectGlobalCrs_crsChanged( const QgsCoordinateReferenceSystem &crs ) -{ - mDefaultCrs = crs; -} void QgsOptions::leLayerGlobalCrs_crsChanged( const QgsCoordinateReferenceSystem &crs ) { diff --git a/src/app/qgsoptions.h b/src/app/qgsoptions.h index eed0cf5f20..0501688c1a 100644 --- a/src/app/qgsoptions.h +++ b/src/app/qgsoptions.h @@ -69,8 +69,6 @@ class APP_EXPORT QgsOptions : public QgsOptionsDialogBase, private Ui::QgsOption void resetProjectDefault(); void browseTemplateFolder(); void resetTemplateFolder(); - //! Slot called when user chooses to change the project wide projection. - void leProjectGlobalCrs_crsChanged( const QgsCoordinateReferenceSystem &crs ); //! Slot called when user chooses to change the default 'on the fly' projection. void leLayerGlobalCrs_crsChanged( const QgsCoordinateReferenceSystem &crs ); void lstGdalDrivers_itemDoubleClicked( QTreeWidgetItem *item, int column ); @@ -237,7 +235,6 @@ class APP_EXPORT QgsOptions : public QgsOptionsDialogBase, private Ui::QgsOption void saveMinMaxLimits( QComboBox *cbox, const QString &name ); void setZoomFactorValue(); double zoomFactorValue(); - QgsCoordinateReferenceSystem mDefaultCrs; QgsCoordinateReferenceSystem mLayerDefaultCrs; bool mLoadedGdalDriverList; diff --git a/src/app/qgsrulebasedlabelingwidget.cpp b/src/app/qgsrulebasedlabelingwidget.cpp index 8edfae2a5e..956c7698a2 100644 --- a/src/app/qgsrulebasedlabelingwidget.cpp +++ b/src/app/qgsrulebasedlabelingwidget.cpp @@ -596,8 +596,8 @@ QgsLabelingRulePropsWidget::QgsLabelingRulePropsWidget( QgsRuleBasedLabeling::Ru { groupScale->setChecked( true ); // caution: rule uses scale denom, scale widget uses true scales - mScaleRangeWidget->setMaximumScale( std::max( rule->maximumScale(), 0.0 ) ); - mScaleRangeWidget->setMinimumScale( std::max( rule->minimumScale(), 0.0 ) ); + mScaleRangeWidget->setScaleRange( std::max( rule->minimumScale(), 0.0 ), + std::max( rule->maximumScale(), 0.0 ) ); } mScaleRangeWidget->setMapCanvas( mMapCanvas ); diff --git a/src/app/vertextool/qgsvertextool.cpp b/src/app/vertextool/qgsvertextool.cpp index 178f1ccab9..1e65e94bbc 100644 --- a/src/app/vertextool/qgsvertextool.cpp +++ b/src/app/vertextool/qgsvertextool.cpp @@ -313,6 +313,7 @@ QgsVertexTool::~QgsVertexTool() delete mVertexBand; delete mEdgeBand; delete mEndpointMarker; + delete mVertexEditor; } void QgsVertexTool::activate() @@ -1391,12 +1392,12 @@ void QgsVertexTool::showVertexEditor() //#spellok { if ( !mVertexEditor ) { - mVertexEditor.reset( new QgsVertexEditor( mCanvas ) ); - if ( !QgisApp::instance()->restoreDockWidget( mVertexEditor.get() ) ) - QgisApp::instance()->addDockWidget( Qt::LeftDockWidgetArea, mVertexEditor.get() ); + mVertexEditor = new QgsVertexEditor( mCanvas ); + if ( !QgisApp::instance()->restoreDockWidget( mVertexEditor ) ) + QgisApp::instance()->addDockWidget( Qt::LeftDockWidgetArea, mVertexEditor ); - connect( mVertexEditor.get(), &QgsVertexEditor::deleteSelectedRequested, this, &QgsVertexTool::deleteVertexEditorSelection ); - connect( mVertexEditor.get(), &QgsVertexEditor::editorClosed, this, &QgsVertexTool::cleanupVertexEditor ); + connect( mVertexEditor, &QgsVertexEditor::deleteSelectedRequested, this, &QgsVertexTool::deleteVertexEditorSelection ); + connect( mVertexEditor, &QgsVertexEditor::editorClosed, this, &QgsVertexTool::cleanupVertexEditor ); // timer required as showing/raising the vertex editor in the same function following restoreDockWidget fails QTimer::singleShot( 200, this, [ = ] { mVertexEditor->show(); mVertexEditor->raise(); } ); @@ -1411,7 +1412,10 @@ void QgsVertexTool::showVertexEditor() //#spellok void QgsVertexTool::cleanupVertexEditor() { mLockedFeature.reset(); - mVertexEditor.reset(); + // do not delete immediately because vertex editor + // can be still used in the qt event loop + mVertexEditor->deleteLater(); + updateLockedFeatureVertices(); } diff --git a/src/app/vertextool/qgsvertextool.h b/src/app/vertextool/qgsvertextool.h index e5a35f61fe..87d3f64819 100644 --- a/src/app/vertextool/qgsvertextool.h +++ b/src/app/vertextool/qgsvertextool.h @@ -18,6 +18,8 @@ #include <memory> +#include <QPointer> + #include "qgis_app.h" #include "qgsmaptooladvanceddigitizing.h" #include "qgsgeometry.h" @@ -447,7 +449,7 @@ class APP_EXPORT QgsVertexTool : public QgsMapToolAdvancedDigitizing //! Locked feature for the vertex editor std::unique_ptr<QgsLockedFeature> mLockedFeature; //! Dock widget which allows editing vertices - std::unique_ptr<QgsVertexEditor> mVertexEditor; + QPointer<QgsVertexEditor> mVertexEditor; /** * Data structure that stores alternative features to the currently selected (locked) feature. diff --git a/src/auth/basic/qgsauthbasicmethod.cpp b/src/auth/basic/qgsauthbasicmethod.cpp index 371d15f3ac..ec738e8cf1 100644 --- a/src/auth/basic/qgsauthbasicmethod.cpp +++ b/src/auth/basic/qgsauthbasicmethod.cpp @@ -105,18 +105,28 @@ bool QgsAuthBasicMethod::updateDataSourceUriItems( QStringList &connectionItems, return false; } + QString sslMode = QStringLiteral( "prefer" ); + int sslModeIdx = connectionItems.indexOf( QRegExp( "^sslmode=.*" ) ); + if ( sslModeIdx != -1 ) + { + sslMode = connectionItems.at( sslModeIdx ).split( '=' ).at( 1 ); + } + // SSL Extra CAs QString caparam; QList<QSslCertificate> cas; - cas = QgsApplication::authManager()->trustedCaCerts(); - // save CAs to temp file - QString tempFileBase = QStringLiteral( "tmp_basic_%1.pem" ); - QString caFilePath = QgsAuthCertUtils::pemTextToTempFile( - tempFileBase.arg( QUuid::createUuid().toString() ), - QgsAuthCertUtils::certsToPemText( cas ) ); - if ( ! caFilePath.isEmpty() ) + if ( sslMode.startsWith( QStringLiteral( "verify-" ) ) ) { - caparam = "sslrootcert='" + caFilePath + "'"; + cas = QgsApplication::authManager()->trustedCaCerts(); + // save CAs to temp file + QString tempFileBase = QStringLiteral( "tmp_basic_%1.pem" ); + QString caFilePath = QgsAuthCertUtils::pemTextToTempFile( + tempFileBase.arg( QUuid::createUuid().toString() ), + QgsAuthCertUtils::certsToPemText( cas ) ); + if ( ! caFilePath.isEmpty() ) + { + caparam = "sslrootcert='" + caFilePath + "'"; + } } // Branch for OGR diff --git a/src/auth/oauth2/qgsauthoauth2method.cpp b/src/auth/oauth2/qgsauthoauth2method.cpp index a421b83ad5..8dc25e8787 100644 --- a/src/auth/oauth2/qgsauthoauth2method.cpp +++ b/src/auth/oauth2/qgsauthoauth2method.cpp @@ -142,23 +142,46 @@ bool QgsAuthOAuth2Method::updateNetworkRequest( QNetworkRequest &request, const if ( expired ) { - msg = QStringLiteral( "Token expired, attempting refresh for authcfg %1" ).arg( authcfg ); - QgsMessageLog::logMessage( msg, AUTH_METHOD_KEY, Qgis::MessageLevel::Info ); - - // Try to get a refresh token first - // go into local event loop and wait for a fired refresh-related slot - QEventLoop rloop( nullptr ); - connect( o2, &QgsO2::refreshFinished, &rloop, &QEventLoop::quit ); - - // Asynchronously attempt the refresh - // TODO: This already has a timed reply setup in O2 base class (and in QgsNetworkAccessManager!) - // May need to address this or app crashes will occur! - o2->refresh(); - - // block request update until asynchronous linking loop is quit - rloop.exec( QEventLoop::ExcludeUserInputEvents ); - - // refresh result should set o2 to (un)linked + if ( o2->refreshToken().isEmpty() || o2->refreshTokenUrl().isEmpty() ) + { + msg = QStringLiteral( "Token expired, but no refresh token or URL defined for authcfg %1" ).arg( authcfg ); + QgsMessageLog::logMessage( msg, AUTH_METHOD_KEY, Qgis::MessageLevel::Info ); + // clear any previous token session properties + o2->unlink(); + } + else + { + msg = QStringLiteral( "Token expired, attempting refresh for authcfg %1" ).arg( authcfg ); + QgsMessageLog::logMessage( msg, AUTH_METHOD_KEY, Qgis::MessageLevel::Info ); + + // Try to get a refresh token first + // go into local event loop and wait for a fired refresh-related slot + QEventLoop rloop( nullptr ); + connect( o2, &QgsO2::refreshFinished, &rloop, &QEventLoop::quit ); + + // add singlshot timer to quit refresh after an alloted timeout + // this should keep the local event loop from blocking forever + QTimer r_timer( nullptr ); + int r_reqtimeout = o2->oauth2config()->requestTimeout() * 1000; + r_timer.setInterval( r_reqtimeout ); + r_timer.setSingleShot( true ); + connect( &r_timer, &QTimer::timeout, &rloop, &QEventLoop::quit ); + r_timer.start(); + + // Asynchronously attempt the refresh + // TODO: This already has a timed reply setup in O2 base class (and in QgsNetworkAccessManager!) + // May need to address this or app crashes will occur! + o2->refresh(); + + // block request update until asynchronous linking loop is quit + rloop.exec(); + if ( r_timer.isActive() ) + { + r_timer.stop(); + } + + // refresh result should set o2 to (un)linked + } } } @@ -388,6 +411,12 @@ void QgsAuthOAuth2Method::onReplyFinished() { QgsMessageLog::logMessage( tr( "Network reply finished" ), AUTH_METHOD_KEY, Qgis::MessageLevel::Info ); QNetworkReply *reply = qobject_cast<QNetworkReply *>( sender() ); + if ( !reply ) + { + QString msg = tr( "Network reply finished but no reply object accessible" ); + QgsMessageLog::logMessage( msg, AUTH_METHOD_KEY, Qgis::MessageLevel::Warning ); + return; + } QgsMessageLog::logMessage( tr( "Results: %1" ).arg( QString( reply->readAll() ) ), AUTH_METHOD_KEY, Qgis::MessageLevel::Info ); } @@ -411,12 +440,22 @@ void QgsAuthOAuth2Method::onNetworkError( QNetworkReply::NetworkError err ) // TODO: update debug messages to output to QGIS - int status = reply->attribute( QNetworkRequest::HttpStatusCodeAttribute ).toInt(); - msg = tr( "Network error, HTTP status: %1" ).arg( - reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString() ); - QgsMessageLog::logMessage( msg, AUTH_METHOD_KEY, Qgis::MessageLevel::Info ); + QVariant status = reply->attribute( QNetworkRequest::HttpStatusCodeAttribute ); + if ( !status.isValid() ) + { + msg = tr( "Network error but no reply object attributes found" ); + QgsMessageLog::logMessage( msg, AUTH_METHOD_KEY, Qgis::MessageLevel::Warning ); + return; + } + QVariant phrase = reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ); + if ( phrase.isValid() ) + { + msg = tr( "Network error, HTTP status: %1" ).arg( phrase.toString() ); + QgsMessageLog::logMessage( msg, AUTH_METHOD_KEY, Qgis::MessageLevel::Info ); + } + - if ( status == 401 ) + if ( status.toInt() == 401 ) { msg = tr( "Attempting token refresh..." ); QgsMessageLog::logMessage( msg, AUTH_METHOD_KEY, Qgis::MessageLevel::Info ); @@ -452,6 +491,12 @@ void QgsAuthOAuth2Method::onNetworkError( QNetworkReply::NetworkError err ) void QgsAuthOAuth2Method::onRefreshFinished( QNetworkReply::NetworkError err ) { QNetworkReply *reply = qobject_cast<QNetworkReply *>( sender() ); + if ( !reply ) + { + QString msg = tr( "Token refresh finished but no reply object accessible" ); + QgsMessageLog::logMessage( msg, AUTH_METHOD_KEY, Qgis::MessageLevel::Warning ); + return; + } if ( err != QNetworkReply::NoError ) { QgsMessageLog::logMessage( tr( "Token refresh error: %1" ).arg( reply->errorString() ), diff --git a/src/core/auth/qgsauthmanager.cpp b/src/core/auth/qgsauthmanager.cpp index c369a46481..72c904e045 100644 --- a/src/core/auth/qgsauthmanager.cpp +++ b/src/core/auth/qgsauthmanager.cpp @@ -1698,6 +1698,8 @@ bool QgsAuthManager::initSslCaches() res = res && rebuildCertTrustCache(); res = res && rebuildTrustedCaCertsCache(); res = res && rebuildIgnoredSslErrorCache(); + mCustomConfigByHostCache.clear(); + mHasCheckedIfCustomConfigByHostExists = false; QgsDebugMsg( QStringLiteral( "Init of SSL caches %1" ).arg( res ? "SUCCEEDED" : "FAILED" ) ); return res; @@ -1994,6 +1996,8 @@ bool QgsAuthManager::storeSslCertCustomConfig( const QgsAuthConfigSslServer &con .arg( config.sslHostPort().trimmed(), id ) ); updateIgnoredSslErrorsCacheFromConfig( config ); + mHasCheckedIfCustomConfigByHostExists = false; + mCustomConfigByHostCache.clear(); return true; } @@ -2042,23 +2046,53 @@ const QgsAuthConfigSslServer QgsAuthManager::sslCertCustomConfig( const QString const QgsAuthConfigSslServer QgsAuthManager::sslCertCustomConfigByHost( const QString &hostport ) { - QMutexLocker locker( mMutex ); QgsAuthConfigSslServer config; - if ( hostport.isEmpty() ) { - QgsDebugMsg( QStringLiteral( "Passed host:port is empty" ) ); return config; } + QMutexLocker locker( mMutex ); + if ( mHasCheckedIfCustomConfigByHostExists && !mHasCustomConfigByHost ) + return config; + if ( mCustomConfigByHostCache.contains( hostport ) ) + return mCustomConfigByHostCache.value( hostport ); + QSqlQuery query( authDatabaseConnection() ); + + // first run -- see if we have ANY custom config by host. If not, we can skip all future checks for any host + if ( !mHasCheckedIfCustomConfigByHostExists ) + { + mHasCheckedIfCustomConfigByHostExists = true; + query.prepare( QString( "SELECT count(*) FROM %1" ).arg( authDatabaseServersTable() ) ); + if ( !authDbQuery( &query ) ) + { + mHasCustomConfigByHost = false; + return config; + } + if ( query.isActive() && query.isSelect() && query.first() ) + { + mHasCustomConfigByHost = query.value( 0 ).toInt() > 0; + if ( !mHasCustomConfigByHost ) + return config; + } + else + { + mHasCustomConfigByHost = false; + return config; + } + } + query.prepare( QString( "SELECT id, host, cert, config FROM %1 " "WHERE host = :host" ).arg( authDatabaseServersTable() ) ); query.bindValue( QStringLiteral( ":host" ), hostport.trimmed() ); if ( !authDbQuery( &query ) ) + { + mCustomConfigByHostCache.insert( hostport, config ); return config; + } if ( query.isActive() && query.isSelect() ) { @@ -2075,9 +2109,12 @@ const QgsAuthConfigSslServer QgsAuthManager::sslCertCustomConfigByHost( const QS emit messageOut( tr( "Authentication database contains duplicate SSL cert custom configs for host:port: %1" ) .arg( hostport ), authManTag(), WARNING ); QgsAuthConfigSslServer emptyconfig; + mCustomConfigByHostCache.insert( hostport, emptyconfig ); return emptyconfig; } } + + mCustomConfigByHostCache.insert( hostport, config ); return config; } @@ -2155,6 +2192,9 @@ bool QgsAuthManager::removeSslCertCustomConfig( const QString &id, const QString return false; } + mHasCheckedIfCustomConfigByHostExists = false; + mCustomConfigByHostCache.clear(); + QSqlQuery query( authDatabaseConnection() ); query.prepare( QStringLiteral( "DELETE FROM %1 WHERE id = :id AND host = :host" ).arg( authDatabaseServersTable() ) ); diff --git a/src/core/auth/qgsauthmanager.h b/src/core/auth/qgsauthmanager.h index af0005c48b..a74dab0496 100644 --- a/src/core/auth/qgsauthmanager.h +++ b/src/core/auth/qgsauthmanager.h @@ -874,6 +874,10 @@ class CORE_EXPORT QgsAuthManager : public QObject QList<QSslCertificate> mTrustedCaCertsCache; // cache of SSL errors to be ignored in network connections, per sha-hostport QHash<QString, QSet<QSslError::SslError> > mIgnoredSslErrorsCache; + + bool mHasCustomConfigByHost = false; + bool mHasCheckedIfCustomConfigByHostExists = false; + QMap< QString, QgsAuthConfigSslServer > mCustomConfigByHostCache; #endif ////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/dxf/qgsdxfexport.cpp b/src/core/dxf/qgsdxfexport.cpp index 60717172e9..431d0fa38d 100644 --- a/src/core/dxf/qgsdxfexport.cpp +++ b/src/core/dxf/qgsdxfexport.cpp @@ -3721,13 +3721,13 @@ void QgsDxfExport::addFeature( QgsSymbolRenderContext &ctx, const QgsCoordinateT if ( !fet->hasGeometry() ) return; - std::unique_ptr<QgsAbstractGeometry> geom( fet->geometry().constGet()->clone() ); + QgsGeometry geom( fet->geometry() ); if ( ct.isValid() ) { - geom->transform( ct ); + geom.transform( ct ); } - QgsWkbTypes::Type geometryType = geom->wkbType(); + QgsWkbTypes::Type geometryType = geom.wkbType(); QColor penColor; QColor brushColor; @@ -3763,13 +3763,13 @@ void QgsDxfExport::addFeature( QgsSymbolRenderContext &ctx, const QgsCoordinateT // single point if ( QgsWkbTypes::flatType( geometryType ) == QgsWkbTypes::Point ) { - writePoint( geom->coordinateSequence().at( 0 ).at( 0 ).at( 0 ), layer, penColor, ctx, symbolLayer, symbol, angle ); + writePoint( geom.constGet()->coordinateSequence().at( 0 ).at( 0 ).at( 0 ), layer, penColor, ctx, symbolLayer, symbol, angle ); return; } if ( QgsWkbTypes::flatType( geometryType ) == QgsWkbTypes::MultiPoint ) { - const QgsCoordinateSequence &cs = geom->coordinateSequence(); + const QgsCoordinateSequence &cs = geom.constGet()->coordinateSequence(); for ( int i = 0; i < cs.size(); i++ ) { writePoint( cs.at( i ).at( 0 ).at( 0 ), layer, penColor, ctx, symbolLayer, symbol, angle ); @@ -3779,49 +3779,52 @@ void QgsDxfExport::addFeature( QgsSymbolRenderContext &ctx, const QgsCoordinateT if ( penStyle != Qt::NoPen ) { - const QgsAbstractGeometry *tempGeom = geom.get(); + const QgsAbstractGeometry *sourceGeom = geom.constGet(); + std::unique_ptr< QgsAbstractGeometry > tempGeom; switch ( QgsWkbTypes::flatType( geometryType ) ) { case QgsWkbTypes::CircularString: case QgsWkbTypes::CompoundCurve: - tempGeom = geom->segmentize(); + tempGeom.reset( geom.constGet()->segmentize() ); + sourceGeom = tempGeom.get(); if ( !tempGeom ) break; FALLTHROUGH case QgsWkbTypes::LineString: if ( !qgsDoubleNear( offset, 0.0 ) ) { - QgsGeos geos( tempGeom ); - if ( tempGeom != geom.get() ) - delete tempGeom; - tempGeom = geos.offsetCurve( offset, 0, GEOSBUF_JOIN_MITRE, 2.0 ); //#spellok - if ( !tempGeom ) - tempGeom = geom.get(); + QgsGeos geos( sourceGeom ); + tempGeom.reset( geos.offsetCurve( offset, 0, GEOSBUF_JOIN_MITRE, 2.0 ) ); //#spellok + if ( tempGeom ) + sourceGeom = tempGeom.get(); + else + sourceGeom = geom.constGet(); } - writePolyline( tempGeom->coordinateSequence().at( 0 ).at( 0 ), layer, lineStyleName, penColor, width ); + writePolyline( sourceGeom->coordinateSequence().at( 0 ).at( 0 ), layer, lineStyleName, penColor, width ); break; case QgsWkbTypes::MultiCurve: - tempGeom = geom->segmentize(); + tempGeom.reset( geom.constGet()->segmentize() ); if ( !tempGeom ) break; + sourceGeom = tempGeom.get(); FALLTHROUGH case QgsWkbTypes::MultiLineString: { if ( !qgsDoubleNear( offset, 0.0 ) ) { - QgsGeos geos( tempGeom ); - if ( tempGeom != geom.get() ) - delete tempGeom; - tempGeom = geos.offsetCurve( offset, 0, GEOSBUF_JOIN_MITRE, 2.0 ); //#spellok - if ( !tempGeom ) - tempGeom = geom.get(); + QgsGeos geos( sourceGeom ); + tempGeom.reset( geos.offsetCurve( offset, 0, GEOSBUF_JOIN_MITRE, 2.0 ) ); //#spellok + if ( tempGeom ) + sourceGeom = tempGeom.get(); + else + sourceGeom = geom.constGet(); } - const QgsCoordinateSequence &cs = tempGeom->coordinateSequence(); + const QgsCoordinateSequence &cs = sourceGeom->coordinateSequence(); for ( int i = 0; i < cs.size(); i++ ) { writePolyline( cs.at( i ).at( 0 ), layer, lineStyleName, penColor, width ); @@ -3831,23 +3834,24 @@ void QgsDxfExport::addFeature( QgsSymbolRenderContext &ctx, const QgsCoordinateT } case QgsWkbTypes::CurvePolygon: - tempGeom = geom->segmentize(); + tempGeom.reset( geom.constGet()->segmentize() ); if ( !tempGeom ) break; + sourceGeom = tempGeom.get(); FALLTHROUGH case QgsWkbTypes::Polygon: { if ( !qgsDoubleNear( offset, 0.0 ) ) { - QgsGeos geos( tempGeom ); - if ( tempGeom != geom.get() ) - delete tempGeom; - tempGeom = geos.buffer( offset, 0, GEOSBUF_CAP_FLAT, GEOSBUF_JOIN_MITRE, 2.0 ); //#spellok - if ( !tempGeom ) - tempGeom = geom.get(); + QgsGeos geos( sourceGeom ); + tempGeom.reset( geos.buffer( offset, 0, GEOSBUF_CAP_FLAT, GEOSBUF_JOIN_MITRE, 2.0 ) ); //#spellok + if ( tempGeom ) + sourceGeom = tempGeom.get(); + else + sourceGeom = geom.constGet(); } - const QgsCoordinateSequence &cs = tempGeom->coordinateSequence(); + const QgsCoordinateSequence &cs = sourceGeom->coordinateSequence(); for ( int i = 0; i < cs.at( 0 ).size(); i++ ) { writePolyline( cs.at( 0 ).at( i ), layer, lineStyleName, penColor, width ); @@ -3856,19 +3860,25 @@ void QgsDxfExport::addFeature( QgsSymbolRenderContext &ctx, const QgsCoordinateT break; } + case QgsWkbTypes::MultiSurface: + tempGeom.reset( geom.constGet()->segmentize() ); + if ( !tempGeom ) + break; + sourceGeom = tempGeom.get(); + FALLTHROUGH case QgsWkbTypes::MultiPolygon: { if ( !qgsDoubleNear( offset, 0.0 ) ) { - QgsGeos geos( tempGeom ); - if ( tempGeom != geom.get() ) - delete tempGeom; - tempGeom = geos.buffer( offset, 0, GEOSBUF_CAP_FLAT, GEOSBUF_JOIN_MITRE, 2.0 ); //#spellok - if ( !tempGeom ) - tempGeom = geom.get(); + QgsGeos geos( sourceGeom ); + tempGeom.reset( geos.buffer( offset, 0, GEOSBUF_CAP_FLAT, GEOSBUF_JOIN_MITRE, 2.0 ) ); //#spellok + if ( tempGeom ) + sourceGeom = tempGeom.get(); + else + sourceGeom = geom.constGet(); } - const QgsCoordinateSequence &cs = tempGeom->coordinateSequence(); + const QgsCoordinateSequence &cs = sourceGeom->coordinateSequence(); for ( int i = 0; i < cs.size(); i++ ) for ( int j = 0; j < cs.at( i ).size(); j++ ) writePolyline( cs.at( i ).at( j ), layer, lineStyleName, penColor, width ); @@ -3880,28 +3890,34 @@ void QgsDxfExport::addFeature( QgsSymbolRenderContext &ctx, const QgsCoordinateT break; } - if ( tempGeom != geom.get() ) - delete tempGeom; } if ( brushStyle != Qt::NoBrush ) { - const QgsAbstractGeometry *tempGeom = geom.get(); + const QgsAbstractGeometry *sourceGeom = geom.constGet(); + std::unique_ptr< QgsAbstractGeometry > tempGeom; switch ( QgsWkbTypes::flatType( geometryType ) ) { case QgsWkbTypes::CurvePolygon: - tempGeom = tempGeom->segmentize(); + tempGeom.reset( geom.constGet()->segmentize() ); if ( !tempGeom ) break; + sourceGeom = tempGeom.get(); FALLTHROUGH case QgsWkbTypes::Polygon: - writePolygon( tempGeom->coordinateSequence().at( 0 ), layer, QStringLiteral( "SOLID" ), brushColor ); + writePolygon( sourceGeom->coordinateSequence().at( 0 ), layer, QStringLiteral( "SOLID" ), brushColor ); break; + case QgsWkbTypes::MultiSurface: + tempGeom.reset( geom.constGet()->segmentize() ); + if ( !tempGeom ) + break; + sourceGeom = tempGeom.get(); + FALLTHROUGH case QgsWkbTypes::MultiPolygon: { - const QgsCoordinateSequence &cs = geom->coordinateSequence(); + const QgsCoordinateSequence &cs = sourceGeom->coordinateSequence(); for ( int i = 0; i < cs.size(); i++ ) { writePolygon( cs.at( i ), layer, QStringLiteral( "SOLID" ), brushColor ); @@ -3913,9 +3929,6 @@ void QgsDxfExport::addFeature( QgsSymbolRenderContext &ctx, const QgsCoordinateT break; } - - if ( tempGeom != geom.get() ) - delete tempGeom; } } diff --git a/src/core/effects/qgsblureffect.cpp b/src/core/effects/qgsblureffect.cpp index cf3dd4edb6..9d442d12e5 100644 --- a/src/core/effects/qgsblureffect.cpp +++ b/src/core/effects/qgsblureffect.cpp @@ -18,6 +18,7 @@ #include "qgsblureffect.h" #include "qgsimageoperation.h" #include "qgsrendercontext.h" +#include "qgssymbollayerutils.h" QgsPaintEffect *QgsBlurEffect::create( const QgsStringMap &map ) { @@ -44,14 +45,16 @@ void QgsBlurEffect::draw( QgsRenderContext &context ) void QgsBlurEffect::drawStackBlur( QgsRenderContext &context ) { + int blurLevel = std::floor( context.convertToPainterUnits( mBlurLevel, mBlurUnit, mBlurMapUnitScale ) ); QImage im = sourceAsImage( context )->copy(); - QgsImageOperation::stackBlur( im, mBlurLevel ); + QgsImageOperation::stackBlur( im, blurLevel ); drawBlurredImage( context, im ); } void QgsBlurEffect::drawGaussianBlur( QgsRenderContext &context ) { - QImage *im = QgsImageOperation::gaussianBlur( *sourceAsImage( context ), mBlurLevel ); + int blurLevel = std::floor( context.convertToPainterUnits( mBlurLevel, mBlurUnit, mBlurMapUnitScale ) ); + QImage *im = QgsImageOperation::gaussianBlur( *sourceAsImage( context ), blurLevel ); drawBlurredImage( context, *im ); delete im; } @@ -76,6 +79,8 @@ QgsStringMap QgsBlurEffect::properties() const props.insert( QStringLiteral( "blend_mode" ), QString::number( static_cast< int >( mBlendMode ) ) ); props.insert( QStringLiteral( "opacity" ), QString::number( mOpacity ) ); props.insert( QStringLiteral( "blur_level" ), QString::number( mBlurLevel ) ); + props.insert( QStringLiteral( "blur_unit" ), QgsUnitTypes::encodeUnit( mBlurUnit ) ); + props.insert( QStringLiteral( "blur_unit_scale" ), QgsSymbolLayerUtils::encodeMapUnitScale( mBlurMapUnitScale ) ); props.insert( QStringLiteral( "blur_method" ), QString::number( static_cast< int >( mBlurMethod ) ) ); return props; } @@ -107,11 +112,18 @@ void QgsBlurEffect::readProperties( const QgsStringMap &props ) mEnabled = props.value( QStringLiteral( "enabled" ), QStringLiteral( "1" ) ).toInt(); mDrawMode = static_cast< QgsPaintEffect::DrawMode >( props.value( QStringLiteral( "draw_mode" ), QStringLiteral( "2" ) ).toInt() ); - int level = props.value( QStringLiteral( "blur_level" ) ).toInt( &ok ); + double level = props.value( QStringLiteral( "blur_level" ) ).toDouble( &ok ); if ( ok ) { mBlurLevel = level; + if ( !props.contains( QStringLiteral( "blur_unit" ) ) ) + { + // deal with pre blur unit era by assuming 96 dpi and converting pixel values as millimeters + mBlurLevel *= 0.2645; + } } + mBlurUnit = QgsUnitTypes::decodeRenderUnit( props.value( QStringLiteral( "blur_unit" ) ) ); + mBlurMapUnitScale = QgsSymbolLayerUtils::decodeMapUnitScale( props.value( QStringLiteral( "blur_unit_scale" ) ) ); QgsBlurEffect::BlurMethod method = static_cast< QgsBlurEffect::BlurMethod >( props.value( QStringLiteral( "blur_method" ) ).toInt( &ok ) ); if ( ok ) { @@ -127,9 +139,8 @@ QgsBlurEffect *QgsBlurEffect::clone() const QRectF QgsBlurEffect::boundingRect( const QRectF &rect, const QgsRenderContext &context ) const { - Q_UNUSED( context ); - + int blurLevel = std::round( context.convertToPainterUnits( mBlurLevel, mBlurUnit, mBlurMapUnitScale ) ); //plus possible extension due to blur, with a couple of extra pixels thrown in for safety - double spread = mBlurLevel * 2.0 + 10; + double spread = blurLevel * 2.0 + 10; return rect.adjusted( -spread, -spread, spread, spread ); } diff --git a/src/core/effects/qgsblureffect.h b/src/core/effects/qgsblureffect.h index d23ad36766..bca002aa68 100644 --- a/src/core/effects/qgsblureffect.h +++ b/src/core/effects/qgsblureffect.h @@ -19,6 +19,8 @@ #include "qgis_core.h" #include "qgspainteffect.h" +#include "qgsunittypes.h" +#include "qgsmapunitscale.h" #include "qgis.h" #include <QPainter> @@ -61,22 +63,66 @@ class CORE_EXPORT QgsBlurEffect : public QgsPaintEffect QgsBlurEffect *clone() const override SIP_FACTORY; /** - * Sets blur level (strength) + * Sets blur level (radius) * \param level blur level. Depending on the current blurMethod(), this parameter * has different effects * \see blurLevel - * \see blurMethod + * \see setBlurUnit + * \see setBlurMapUnitScale + * \see setBlurMethod */ - void setBlurLevel( const int level ) { mBlurLevel = level; } + void setBlurLevel( const double level ) { mBlurLevel = level; } /** - * Returns the blur level (strength) + * Returns the blur level (radius) * \returns blur level. Depending on the current blurMethod(), this parameter * has different effects * \see setBlurLevel + * \see blurUnit + * \see blurMapUnitScale * \see blurMethod */ - int blurLevel() const { return mBlurLevel; } + double blurLevel() const { return mBlurLevel; } + + /** + * Sets the units used for the blur level (radius). + * \param unit units for blur level + * \see blurUnit + * \see setBlurLevel + * \see setBlurMapUnitScale + * \since QGIS 3.4.9 + */ + void setBlurUnit( const QgsUnitTypes::RenderUnit unit ) { mBlurUnit = unit; } + + /** + * Returns the units used for the blur level (radius). + * \returns units for blur level + * \see setBlurUnit + * \see blurLevel + * \see blurMapUnitScale + * \since QGIS 3.4.9 + */ + QgsUnitTypes::RenderUnit blurUnit() const { return mBlurUnit; } + + /** + * Sets the map unit scale used for the blur strength (radius). + * \param scale map unit scale for blur strength + * \see blurMapUnitScale + * \see setBlurLevel + * \see setBlurUnit + * \since QGIS 3.4.9 + */ + void setBlurMapUnitScale( const QgsMapUnitScale &scale ) { mBlurMapUnitScale = scale; } + + /** + * Returns the map unit scale used for the blur strength (radius). + * \returns map unit scale for blur strength + * \see setBlurMapUnitScale + * \see blurLevel + * \see blurUnit + * \since QGIS 3.4.9 + */ + const QgsMapUnitScale &blurMapUnitScale() const { return mBlurMapUnitScale; } /** * Sets the blur method (algorithm) to use for performing the blur. @@ -131,7 +177,9 @@ class CORE_EXPORT QgsBlurEffect : public QgsPaintEffect private: - int mBlurLevel = 10; + double mBlurLevel = 2.645; + QgsUnitTypes::RenderUnit mBlurUnit = QgsUnitTypes::RenderMillimeters; + QgsMapUnitScale mBlurMapUnitScale; BlurMethod mBlurMethod = StackBlur; double mOpacity = 1.0; QPainter::CompositionMode mBlendMode = QPainter::CompositionMode_SourceOver; diff --git a/src/core/effects/qgsgloweffect.cpp b/src/core/effects/qgsgloweffect.cpp index d636972c23..4cd943c030 100644 --- a/src/core/effects/qgsgloweffect.cpp +++ b/src/core/effects/qgsgloweffect.cpp @@ -78,9 +78,16 @@ void QgsGlowEffect::draw( QgsRenderContext &context ) dtProps.ramp = ramp; QgsImageOperation::distanceTransform( im, dtProps ); - if ( mBlurLevel > 0 ) + int blurLevel = std::floor( context.convertToPainterUnits( mBlurLevel, mBlurUnit, mBlurMapUnitScale ) ); + if ( blurLevel <= 16 ) { - QgsImageOperation::stackBlur( im, mBlurLevel ); + QgsImageOperation::stackBlur( im, blurLevel ); + } + else + { + QImage *imb = QgsImageOperation::gaussianBlur( im, blurLevel ); + im = QImage( *imb ); + delete imb; } QgsImageOperation::multiplyOpacity( im, mOpacity ); @@ -110,6 +117,8 @@ QgsStringMap QgsGlowEffect::properties() const props.insert( QStringLiteral( "blend_mode" ), QString::number( int( mBlendMode ) ) ); props.insert( QStringLiteral( "opacity" ), QString::number( mOpacity ) ); props.insert( QStringLiteral( "blur_level" ), QString::number( mBlurLevel ) ); + props.insert( QStringLiteral( "blur_unit" ), QgsUnitTypes::encodeUnit( mBlurUnit ) ); + props.insert( QStringLiteral( "blur_unit_scale" ), QgsSymbolLayerUtils::encodeMapUnitScale( mBlurMapUnitScale ) ); props.insert( QStringLiteral( "spread" ), QString::number( mSpread ) ); props.insert( QStringLiteral( "spread_unit" ), QgsUnitTypes::encodeUnit( mSpreadUnit ) ); props.insert( QStringLiteral( "spread_unit_scale" ), QgsSymbolLayerUtils::encodeMapUnitScale( mSpreadMapUnitScale ) ); @@ -150,11 +159,18 @@ void QgsGlowEffect::readProperties( const QgsStringMap &props ) } mEnabled = props.value( QStringLiteral( "enabled" ), QStringLiteral( "1" ) ).toInt(); mDrawMode = static_cast< QgsPaintEffect::DrawMode >( props.value( QStringLiteral( "draw_mode" ), QStringLiteral( "2" ) ).toInt() ); - int level = props.value( QStringLiteral( "blur_level" ) ).toInt( &ok ); + double level = props.value( QStringLiteral( "blur_level" ) ).toDouble( &ok ); if ( ok ) { mBlurLevel = level; + if ( !props.contains( QStringLiteral( "blur_unit" ) ) ) + { + // deal with pre blur unit era by assuming 96 dpi and converting pixel values as millimeters + mBlurLevel *= 0.2645; + } } + mBlurUnit = QgsUnitTypes::decodeRenderUnit( props.value( QStringLiteral( "blur_unit" ) ) ); + mBlurMapUnitScale = QgsSymbolLayerUtils::decodeMapUnitScale( props.value( QStringLiteral( "blur_unit_scale" ) ) ); double spread = props.value( QStringLiteral( "spread" ) ).toDouble( &ok ); if ( ok ) { @@ -210,10 +226,11 @@ QgsGlowEffect &QgsGlowEffect::operator=( const QgsGlowEffect &rhs ) QRectF QgsGlowEffect::boundingRect( const QRectF &rect, const QgsRenderContext &context ) const { - //spread size + //blur radius and spread size + int blurLevel = std::round( context.convertToPainterUnits( mBlurLevel, mBlurUnit, mBlurMapUnitScale ) ); double spread = context.convertToPainterUnits( mSpread, mSpreadUnit, mSpreadMapUnitScale ); //plus possible extension due to blur, with a couple of extra pixels thrown in for safety - spread += mBlurLevel * 2 + 10; + spread += blurLevel * 2 + 10; return rect.adjusted( -spread, -spread, spread, spread ); } diff --git a/src/core/effects/qgsgloweffect.h b/src/core/effects/qgsgloweffect.h index eb7454738a..9c0cb2f0b0 100644 --- a/src/core/effects/qgsgloweffect.h +++ b/src/core/effects/qgsgloweffect.h @@ -109,21 +109,63 @@ class CORE_EXPORT QgsGlowEffect : public QgsPaintEffect const QgsMapUnitScale &spreadMapUnitScale() const { return mSpreadMapUnitScale; } /** - * Sets blur level (strength) for the glow. This can be used to smooth the + * Sets blur level (radius) for the glow. This can be used to smooth the * output from the glow effect. - * \param level blur level. Values between 0 and 16 are valid, with larger - * values indicating greater blur strength. + * \param level blur level. * \see blurLevel + * \see setBlurUnit + * \see setBlurMapUnitScale */ - void setBlurLevel( const int level ) { mBlurLevel = level; } + void setBlurLevel( const double level ) { mBlurLevel = level; } /** - * Returns the blur level (strength) for the glow. - * \returns blur level. Value will be between 0 and 16, with larger - * values indicating greater blur strength. + * Returns the blur level (radius) for the glow. + * \returns blur level. * \see setBlurLevel + * \see blurUnit + * \see blurMapUnitScale */ - int blurLevel() const { return mBlurLevel; } + double blurLevel() const { return mBlurLevel; } + + /** + * Sets the units used for the glow blur level (radius). + * \param unit units for blur level + * \see blurUnit + * \see setBlurLevel + * \see setBlurMapUnitScale + * \since QGIS 3.4.9 + */ + void setBlurUnit( const QgsUnitTypes::RenderUnit unit ) { mBlurUnit = unit; } + + /** + * Returns the units used for the glow blur level (radius). + * \returns units for blur level + * \see setBlurUnit + * \see blurLevel + * \see blurMapUnitScale + * \since QGIS 3.4.9 + */ + QgsUnitTypes::RenderUnit blurUnit() const { return mBlurUnit; } + + /** + * Sets the map unit scale used for the glow blur strength (radius). + * \param scale map unit scale for blur strength + * \see blurMapUnitScale + * \see setBlurLevel + * \see setBlurUnit + * \since QGIS 3.4.9 + */ + void setBlurMapUnitScale( const QgsMapUnitScale &scale ) { mBlurMapUnitScale = scale; } + + /** + * Returns the map unit scale used for the glow blur strength (radius). + * \returns map unit scale for blur strength + * \see setBlurMapUnitScale + * \see blurLevel + * \see blurUnit + * \since QGIS 3.4.9 + */ + const QgsMapUnitScale &blurMapUnitScale() const { return mBlurMapUnitScale; } /** * Sets the \a opacity for the effect. @@ -235,7 +277,9 @@ class CORE_EXPORT QgsGlowEffect : public QgsPaintEffect QgsUnitTypes::RenderUnit mSpreadUnit = QgsUnitTypes::RenderMillimeters; QgsMapUnitScale mSpreadMapUnitScale; QgsColorRamp *mRamp = nullptr; - int mBlurLevel = 3; + double mBlurLevel = 2.645; + QgsUnitTypes::RenderUnit mBlurUnit = QgsUnitTypes::RenderMillimeters; + QgsMapUnitScale mBlurMapUnitScale; double mOpacity = 0.5; QColor mColor; QPainter::CompositionMode mBlendMode = QPainter::CompositionMode_SourceOver; diff --git a/src/core/effects/qgsshadoweffect.cpp b/src/core/effects/qgsshadoweffect.cpp index a6c215ff96..af25377841 100644 --- a/src/core/effects/qgsshadoweffect.cpp +++ b/src/core/effects/qgsshadoweffect.cpp @@ -45,7 +45,18 @@ void QgsShadowEffect::draw( QgsRenderContext &context ) } QgsImageOperation::overlayColor( colorisedIm, mColor ); - QgsImageOperation::stackBlur( colorisedIm, mBlurLevel ); + + int blurLevel = std::floor( context.convertToPainterUnits( mBlurLevel, mBlurUnit, mBlurMapUnitScale ) ); + if ( blurLevel <= 16 ) + { + QgsImageOperation::stackBlur( colorisedIm, blurLevel ); + } + else + { + QImage *imb = QgsImageOperation::gaussianBlur( colorisedIm, blurLevel ); + colorisedIm = QImage( *imb ); + delete imb; + } double offsetDist = context.convertToPainterUnits( mOffsetDist, mOffsetUnit, mOffsetMapUnitScale ); @@ -88,6 +99,8 @@ QgsStringMap QgsShadowEffect::properties() const props.insert( QStringLiteral( "blend_mode" ), QString::number( int( mBlendMode ) ) ); props.insert( QStringLiteral( "opacity" ), QString::number( mOpacity ) ); props.insert( QStringLiteral( "blur_level" ), QString::number( mBlurLevel ) ); + props.insert( QStringLiteral( "blur_unit" ), QgsUnitTypes::encodeUnit( mBlurUnit ) ); + props.insert( QStringLiteral( "blur_unit_scale" ), QgsSymbolLayerUtils::encodeMapUnitScale( mBlurMapUnitScale ) ); props.insert( QStringLiteral( "offset_angle" ), QString::number( mOffsetAngle ) ); props.insert( QStringLiteral( "offset_distance" ), QString::number( mOffsetDist ) ); props.insert( QStringLiteral( "offset_unit" ), QgsUnitTypes::encodeUnit( mOffsetUnit ) ); @@ -122,11 +135,18 @@ void QgsShadowEffect::readProperties( const QgsStringMap &props ) } mEnabled = props.value( QStringLiteral( "enabled" ), QStringLiteral( "1" ) ).toInt(); mDrawMode = static_cast< QgsPaintEffect::DrawMode >( props.value( QStringLiteral( "draw_mode" ), QStringLiteral( "2" ) ).toInt() ); - int level = props.value( QStringLiteral( "blur_level" ) ).toInt( &ok ); + double level = props.value( QStringLiteral( "blur_level" ) ).toDouble( &ok ); if ( ok ) { mBlurLevel = level; + if ( !props.contains( QStringLiteral( "blur_unit" ) ) ) + { + // deal with pre blur unit era by assuming 96 dpi and converting pixel values as millimeters + mBlurLevel *= 0.2645; + } } + mBlurUnit = QgsUnitTypes::decodeRenderUnit( props.value( QStringLiteral( "blur_unit" ) ) ); + mBlurMapUnitScale = QgsSymbolLayerUtils::decodeMapUnitScale( props.value( QStringLiteral( "blur_unit_scale" ) ) ); int angle = props.value( QStringLiteral( "offset_angle" ) ).toInt( &ok ); if ( ok ) { @@ -147,10 +167,11 @@ void QgsShadowEffect::readProperties( const QgsStringMap &props ) QRectF QgsShadowEffect::boundingRect( const QRectF &rect, const QgsRenderContext &context ) const { - //offset distance + //blur radius and offset distance + int blurLevel = std::floor( context.convertToPainterUnits( mBlurLevel, mBlurUnit, mBlurMapUnitScale ) ); double spread = context.convertToPainterUnits( mOffsetDist, mOffsetUnit, mOffsetMapUnitScale ); //plus possible extension due to blur, with a couple of extra pixels thrown in for safety - spread += mBlurLevel * 2 + 10; + spread += blurLevel * 2 + 10; return rect.adjusted( -spread, -spread, spread, spread ); } diff --git a/src/core/effects/qgsshadoweffect.h b/src/core/effects/qgsshadoweffect.h index 80bcf46dfb..c0fb0db665 100644 --- a/src/core/effects/qgsshadoweffect.h +++ b/src/core/effects/qgsshadoweffect.h @@ -42,20 +42,64 @@ class CORE_EXPORT QgsShadowEffect : public QgsPaintEffect void readProperties( const QgsStringMap &props ) override; /** - * Sets blur level (strength) for the shadow. - * \param level blur level. Values between 0 and 16 are valid, with larger + * Sets blur level (radius) for the shadow. + * \param level blur level. * values indicating greater blur strength. * \see blurLevel + * \see setBlurUnit + * \see setBlurMapUnitScale */ - void setBlurLevel( const int level ) { mBlurLevel = level; } + void setBlurLevel( const double level ) { mBlurLevel = level; } /** - * Returns the blur level (strength) for the shadow. - * \returns blur level. Value will be between 0 and 16, with larger + * Returns the blur level (radius) for the shadow. + * \returns blur level. * values indicating greater blur strength. * \see setBlurLevel + * \see blurUnit + * \see blurMapUnitScale */ - int blurLevel() const { return mBlurLevel; } + double blurLevel() const { return mBlurLevel; } + + /** + * Sets the units used for the shadow blur level (radius). + * \param unit units for blur level + * \see blurUnit + * \see setBlurLevel + * \see setBlurMapUnitScale + * \since QGIS 3.4.9 + */ + void setBlurUnit( const QgsUnitTypes::RenderUnit unit ) { mBlurUnit = unit; } + + /** + * Returns the units used for the shadow blur level (radius). + * \returns units for blur level + * \see setBlurUnit + * \see blurLevel + * \see blurMapUnitScale + * \since QGIS 3.4.9 + */ + QgsUnitTypes::RenderUnit blurUnit() const { return mBlurUnit; } + + /** + * Sets the map unit scale used for the shadow blur strength (radius). + * \param scale map unit scale for blur strength + * \see blurMapUnitScale + * \see setBlurLevel + * \see setBlurUnit + * \since QGIS 3.4.9 + */ + void setBlurMapUnitScale( const QgsMapUnitScale &scale ) { mBlurMapUnitScale = scale; } + + /** + * Returns the map unit scale used for the shadow blur strength (radius). + * \returns map unit scale for blur strength + * \see setBlurMapUnitScale + * \see blurLevel + * \see blurUnit + * \since QGIS 3.4.9 + */ + const QgsMapUnitScale &blurMapUnitScale() const { return mBlurMapUnitScale; } /** * Sets the angle for offsetting the shadow. @@ -186,7 +230,9 @@ class CORE_EXPORT QgsShadowEffect : public QgsPaintEffect */ virtual bool exteriorShadow() const = 0; - int mBlurLevel = 10; + double mBlurLevel = 2.645; + QgsUnitTypes::RenderUnit mBlurUnit = QgsUnitTypes::RenderMillimeters; + QgsMapUnitScale mBlurMapUnitScale; int mOffsetAngle = 135; double mOffsetDist = 2.0; QgsUnitTypes::RenderUnit mOffsetUnit = QgsUnitTypes::RenderMillimeters; diff --git a/src/core/expression/qgsexpressionnodeimpl.cpp b/src/core/expression/qgsexpressionnodeimpl.cpp index 6b838e78ad..b3d1429fce 100644 --- a/src/core/expression/qgsexpressionnodeimpl.cpp +++ b/src/core/expression/qgsexpressionnodeimpl.cpp @@ -1170,6 +1170,8 @@ QString QgsExpressionNodeLiteral::dump() const return QString::number( mValue.toInt() ); case QVariant::Double: return QString::number( mValue.toDouble() ); + case QVariant::LongLong: + return QString::number( mValue.toLongLong() ); case QVariant::String: return QgsExpression::quotedString( mValue.toString() ); case QVariant::Bool: diff --git a/src/core/geometry/qgsgeometry.cpp b/src/core/geometry/qgsgeometry.cpp index 100623980b..8752f079a0 100644 --- a/src/core/geometry/qgsgeometry.cpp +++ b/src/core/geometry/qgsgeometry.cpp @@ -253,7 +253,17 @@ QgsGeometry QgsGeometry::collectGeometry( const QVector< QgsGeometry > &geometri } else { - collected.addPart( g ); + if ( g.isMultipart() ) + { + for ( auto p = g.const_parts_begin(); p != g.const_parts_end(); ++p ) + { + collected.addPart( ( *p )->clone() ); + } + } + else + { + collected.addPart( g ); + } } } return collected; diff --git a/src/core/geometry/qgsgeometryutils.cpp b/src/core/geometry/qgsgeometryutils.cpp index 07dd5a3e7b..572f9709ae 100644 --- a/src/core/geometry/qgsgeometryutils.cpp +++ b/src/core/geometry/qgsgeometryutils.cpp @@ -327,10 +327,10 @@ bool QgsGeometryUtils::lineCircleIntersection( const QgsPointXY ¢er, const d const double dx = x2 - x1; const double dy = y2 - y1; - const double dr = std::sqrt( std::pow( dx, 2 ) + std::pow( dy, 2 ) ); + const double dr2 = std::pow( dx, 2 ) + std::pow( dy, 2 ); const double d = x1 * y2 - x2 * y1; - const double disc = std::pow( radius, 2 ) * std::pow( dr, 2 ) - std::pow( d, 2 ); + const double disc = std::pow( radius, 2 ) * dr2 - std::pow( d, 2 ); if ( disc < 0 ) { @@ -342,12 +342,14 @@ bool QgsGeometryUtils::lineCircleIntersection( const QgsPointXY ¢er, const d // two solutions const int sgnDy = dy < 0 ? -1 : 1; - const double ax = center.x() + ( d * dy + sgnDy * dx * std::sqrt( std::pow( radius, 2 ) * std::pow( dr, 2 ) - std::pow( d, 2 ) ) ) / ( std::pow( dr, 2 ) ); - const double ay = center.y() + ( -d * dx + std::fabs( dy ) * std::sqrt( std::pow( radius, 2 ) * std::pow( dr, 2 ) - std::pow( d, 2 ) ) ) / ( std::pow( dr, 2 ) ); + const double sqrDisc = std::sqrt( disc ); + + const double ax = center.x() + ( d * dy + sgnDy * dx * sqrDisc ) / dr2; + const double ay = center.y() + ( -d * dx + std::fabs( dy ) * sqrDisc ) / dr2; const QgsPointXY p1( ax, ay ); - const double bx = center.x() + ( d * dy - sgnDy * dx * std::sqrt( std::pow( radius, 2 ) * std::pow( dr, 2 ) - std::pow( d, 2 ) ) ) / ( std::pow( dr, 2 ) ); - const double by = center.y() + ( -d * dx - std::fabs( dy ) * std::sqrt( std::pow( radius, 2 ) * std::pow( dr, 2 ) - std::pow( d, 2 ) ) ) / ( std::pow( dr, 2 ) ); + const double bx = center.x() + ( d * dy - sgnDy * dx * sqrDisc ) / dr2; + const double by = center.y() + ( -d * dx - std::fabs( dy ) * sqrDisc ) / dr2; const QgsPointXY p2( bx, by ); // snap to nearest intersection @@ -870,7 +872,8 @@ void QgsGeometryUtils::segmentizeArc( const QgsPoint &p1, const QgsPoint &p2, co if ( symmetric ) { double angle = a3 - a1; - if ( angle < 0 ) angle += M_PI * 2; + // angle == 0 when full circle + if ( angle <= 0 ) angle += M_PI * 2; /* Number of segments in output */ int segs = ceil( angle / increment ); @@ -879,7 +882,8 @@ void QgsGeometryUtils::segmentizeArc( const QgsPoint &p1, const QgsPoint &p2, co } /* Adjust a3 up so we can increment from a1 to a3 cleanly */ - if ( a3 < a1 ) + // a3 == a1 when full circle + if ( a3 <= a1 ) a3 += 2.0 * M_PI; if ( a2 < a1 ) a2 += 2.0 * M_PI; diff --git a/src/core/layout/qgslayoutexporter.cpp b/src/core/layout/qgslayoutexporter.cpp index 3a3ff8a78f..10f92d37f3 100644 --- a/src/core/layout/qgslayoutexporter.cpp +++ b/src/core/layout/qgslayoutexporter.cpp @@ -343,8 +343,8 @@ QgsLayoutExporter::ExportResult QgsLayoutExporter::exportToImage( const QString PageExportDetails pageDetails; pageDetails.directory = fi.path(); - pageDetails.baseName = fi.baseName(); - pageDetails.extension = fi.completeSuffix(); + pageDetails.baseName = fi.completeBaseName(); + pageDetails.extension = fi.suffix(); LayoutContextPreviewSettingRestorer restorer( mLayout ); ( void )restorer; @@ -490,6 +490,8 @@ QgsLayoutExporter::ExportResult QgsLayoutExporter::exportToPdf( const QString &f ( void )contextRestorer; mLayout->renderContext().setDpi( settings.dpi ); + mLayout->renderContext().setFlags( settings.flags ); + // If we are not printing as raster, temporarily disable advanced effects // as QPrinter does not support composition modes and can result // in items missing from the output @@ -561,6 +563,8 @@ QgsLayoutExporter::ExportResult QgsLayoutExporter::exportToPdf( QgsAbstractLayou ( void )contextRestorer; iterator->layout()->renderContext().setDpi( settings.dpi ); + iterator->layout()->renderContext().setFlags( settings.flags ); + // If we are not printing as raster, temporarily disable advanced effects // as QPrinter does not support composition modes and can result // in items missing from the output @@ -671,6 +675,7 @@ QgsLayoutExporter::ExportResult QgsLayoutExporter::print( QPrinter &printer, con ( void )contextRestorer; mLayout->renderContext().setDpi( settings.dpi ); + mLayout->renderContext().setFlags( settings.flags ); // If we are not printing as raster, temporarily disable advanced effects // as QPrinter does not support composition modes and can result // in items missing from the output @@ -730,6 +735,8 @@ QgsLayoutExporter::ExportResult QgsLayoutExporter::print( QgsAbstractLayoutItera ( void )contextRestorer; iterator->layout()->renderContext().setDpi( settings.dpi ); + iterator->layout()->renderContext().setFlags( settings.flags ); + // If we are not printing as raster, temporarily disable advanced effects // as QPrinter does not support composition modes and can result // in items missing from the output @@ -784,6 +791,7 @@ QgsLayoutExporter::ExportResult QgsLayoutExporter::exportToSvg( const QString &f ( void )contextRestorer; mLayout->renderContext().setDpi( settings.dpi ); + mLayout->renderContext().setFlags( settings.flags ); mLayout->renderContext().setFlag( QgsLayoutRenderContext::FlagForceVectorOutput, settings.forceVectorOutput ); mLayout->renderContext().setTextRenderFormat( s.textRenderFormat ); diff --git a/src/core/layout/qgslayoutitemattributetable.cpp b/src/core/layout/qgslayoutitemattributetable.cpp index 031decf3ee..b4bc414fff 100644 --- a/src/core/layout/qgslayoutitemattributetable.cpp +++ b/src/core/layout/qgslayoutitemattributetable.cpp @@ -28,6 +28,7 @@ #include "qgsgeometry.h" #include "qgsexception.h" #include "qgsmapsettings.h" +#include "qgsgeometryengine.h" //QgsLayoutAttributeTableCompare @@ -182,10 +183,15 @@ void QgsLayoutItemAttributeTable::atlasLayerChanged( QgsVectorLayer *layer ) disconnect( mCurrentAtlasLayer, &QgsVectorLayer::layerModified, this, &QgsLayoutTable::refreshAttributes ); } + const bool mustRebuildColumns = static_cast< bool >( mCurrentAtlasLayer ) || mColumns.empty(); mCurrentAtlasLayer = layer; - //rebuild column list to match all columns from layer - resetColumns(); + if ( mustRebuildColumns ) + { + //rebuild column list to match all columns from layer + resetColumns(); + } + refreshAttributes(); //listen for modifications to layer and refresh table when they occur @@ -230,12 +236,14 @@ void QgsLayoutItemAttributeTable::setMap( QgsLayoutItemMap *map ) { //disconnect from previous map disconnect( mMap, &QgsLayoutItemMap::extentChanged, this, &QgsLayoutTable::refreshAttributes ); + disconnect( mMap, &QgsLayoutItemMap::mapRotationChanged, this, &QgsLayoutTable::refreshAttributes ); } mMap = map; if ( mMap ) { //listen out for extent changes in linked map connect( mMap, &QgsLayoutItemMap::extentChanged, this, &QgsLayoutTable::refreshAttributes ); + connect( mMap, &QgsLayoutItemMap::mapRotationChanged, this, &QgsLayoutTable::refreshAttributes ); } refreshAttributes(); emit changed(); @@ -416,9 +424,12 @@ bool QgsLayoutItemAttributeTable::getTableContents( QgsLayoutTableContents &cont } QgsRectangle selectionRect; + QgsGeometry visibleRegion; + std::unique_ptr< QgsGeometryEngine > visibleMapEngine; if ( mMap && mShowOnlyVisibleFeatures ) { - selectionRect = mMap->extent(); + visibleRegion = QgsGeometry::fromQPolygonF( mMap->visibleExtentPolygon() ); + selectionRect = visibleRegion.boundingBox(); if ( layer ) { //transform back to layer CRS @@ -426,13 +437,37 @@ bool QgsLayoutItemAttributeTable::getTableContents( QgsLayoutTableContents &cont try { selectionRect = coordTransform.transformBoundingBox( selectionRect, QgsCoordinateTransform::ReverseTransform ); + visibleRegion.transform( coordTransform, QgsCoordinateTransform::ReverseTransform ); } catch ( QgsCsException &cse ) { - Q_UNUSED( cse ); + Q_UNUSED( cse ) return false; } } + visibleMapEngine.reset( QgsGeometry::createGeometryEngine( visibleRegion.constGet() ) ); + visibleMapEngine->prepareGeometry(); + } + + QgsGeometry atlasGeometry; + std::unique_ptr< QgsGeometryEngine > atlasGeometryEngine; + if ( mFilterToAtlasIntersection ) + { + atlasGeometry = mLayout->reportContext().currentGeometry( layer->crs() ); + if ( !atlasGeometry.isNull() ) + { + if ( selectionRect.isNull() ) + { + selectionRect = atlasGeometry.boundingBox(); + } + else + { + selectionRect = selectionRect.intersect( atlasGeometry.boundingBox() ); + } + + atlasGeometryEngine.reset( QgsGeometry::createGeometryEngine( atlasGeometry.constGet() ) ); + atlasGeometryEngine->prepareGeometry(); + } } if ( mSource == QgsLayoutItemAttributeTable::RelationChildren ) @@ -471,23 +506,31 @@ bool QgsLayoutItemAttributeTable::getTableContents( QgsLayoutTableContents &cont continue; } } + + // check against exact map bounds + if ( visibleMapEngine ) + { + if ( !f.hasGeometry() ) + continue; + + if ( !visibleMapEngine->intersects( f.geometry().constGet() ) ) + continue; + } + //check against atlas feature intersection if ( mFilterToAtlasIntersection ) { - if ( !f.hasGeometry() ) + if ( !f.hasGeometry() || !atlasGeometryEngine ) { continue; } - QgsFeature atlasFeature = mLayout->reportContext().feature(); - if ( !atlasFeature.hasGeometry() || - !f.geometry().intersects( atlasFeature.geometry() ) ) - { - //feature falls outside current atlas feature + + if ( !atlasGeometryEngine->intersects( f.geometry().constGet() ) ) continue; - } } QgsLayoutTableRow currentRow; + currentRow.reserve( mColumns.count() ); for ( QgsLayoutTableColumn *column : qgis::as_const( mColumns ) ) { @@ -550,6 +593,7 @@ void QgsLayoutItemAttributeTable::finalizeRestoreFromXml() { //if we have found a valid map item, listen out to extent changes on it and refresh the table connect( mMap, &QgsLayoutItemMap::extentChanged, this, &QgsLayoutTable::refreshAttributes ); + connect( mMap, &QgsLayoutItemMap::mapRotationChanged, this, &QgsLayoutTable::refreshAttributes ); } } } @@ -647,6 +691,7 @@ QVector<QPair<int, bool> > QgsLayoutItemAttributeTable::sortAttributes() const //generate list of column index, bool for sort direction (to match 2.0 api) QVector<QPair<int, bool> > attributesBySortRank; + attributesBySortRank.reserve( sortedColumns.size() ); for ( auto &column : qgis::as_const( sortedColumns ) ) { attributesBySortRank.append( qMakePair( column.first, @@ -730,6 +775,7 @@ bool QgsLayoutItemAttributeTable::readPropertiesFromElement( const QDomElement & if ( mMap ) { disconnect( mMap, &QgsLayoutItemMap::extentChanged, this, &QgsLayoutTable::refreshAttributes ); + disconnect( mMap, &QgsLayoutItemMap::mapRotationChanged, this, &QgsLayoutTable::refreshAttributes ); mMap = nullptr; } // setting new mMap occurs in finalizeRestoreFromXml diff --git a/src/core/layout/qgslayoutitemlabel.cpp b/src/core/layout/qgslayoutitemlabel.cpp index 2d3b7192d8..989314e746 100644 --- a/src/core/layout/qgslayoutitemlabel.cpp +++ b/src/core/layout/qgslayoutitemlabel.cpp @@ -363,6 +363,7 @@ bool QgsLayoutItemLabel::writePropertiesToElement( QDomElement &layoutLabelElem, fontColorElem.setAttribute( QStringLiteral( "red" ), mFontColor.red() ); fontColorElem.setAttribute( QStringLiteral( "green" ), mFontColor.green() ); fontColorElem.setAttribute( QStringLiteral( "blue" ), mFontColor.blue() ); + fontColorElem.setAttribute( QStringLiteral( "alpha" ), mFontColor.alpha() ); layoutLabelElem.appendChild( fontColorElem ); return true; @@ -408,7 +409,8 @@ bool QgsLayoutItemLabel::readPropertiesFromElement( const QDomElement &itemElem, int red = fontColorElem.attribute( QStringLiteral( "red" ), QStringLiteral( "0" ) ).toInt(); int green = fontColorElem.attribute( QStringLiteral( "green" ), QStringLiteral( "0" ) ).toInt(); int blue = fontColorElem.attribute( QStringLiteral( "blue" ), QStringLiteral( "0" ) ).toInt(); - mFontColor = QColor( red, green, blue ); + int alpha = fontColorElem.attribute( QStringLiteral( "alpha" ), QStringLiteral( "255" ) ).toInt(); + mFontColor = QColor( red, green, blue, alpha ); } else { @@ -580,7 +582,7 @@ QUrl QgsLayoutItemLabel::createStylesheetUrl() const QString stylesheet; stylesheet += QStringLiteral( "body { margin: %1 %2;" ).arg( std::max( mMarginY * mHtmlUnitsToLayoutUnits, 0.0 ) ).arg( std::max( mMarginX * mHtmlUnitsToLayoutUnits, 0.0 ) ); stylesheet += QgsFontUtils::asCSS( mFont, 0.352778 * mHtmlUnitsToLayoutUnits ); - stylesheet += QStringLiteral( "color: %1;" ).arg( mFontColor.name() ); + stylesheet += QStringLiteral( "color: rgba(%1,%2,%3,%4);" ).arg( mFontColor.red() ).arg( mFontColor.green() ).arg( mFontColor.blue() ).arg( QString::number( mFontColor.alphaF(), 'f', 4 ) ); stylesheet += QStringLiteral( "text-align: %1; }" ).arg( mHAlignment == Qt::AlignLeft ? QStringLiteral( "left" ) : mHAlignment == Qt::AlignRight ? QStringLiteral( "right" ) : mHAlignment == Qt::AlignHCenter ? QStringLiteral( "center" ) : QStringLiteral( "justify" ) ); QByteArray ba; diff --git a/src/core/layout/qgslayoutmultiframe.cpp b/src/core/layout/qgslayoutmultiframe.cpp index 3fdb5124fa..22a2817d01 100644 --- a/src/core/layout/qgslayoutmultiframe.cpp +++ b/src/core/layout/qgslayoutmultiframe.cpp @@ -385,20 +385,23 @@ void QgsLayoutMultiFrame::handlePageChange() } } - //page number of the last item - QgsLayoutFrame *lastFrame = mFrameItems.last(); - int lastItemPage = mLayout->pageCollection()->predictPageNumberForPoint( lastFrame->pos() ); - - for ( int i = lastItemPage + 1; i < mLayout->pageCollection()->pageCount(); ++i ) + if ( !mFrameItems.empty() ) { - //copy last frame to current page - std::unique_ptr< QgsLayoutFrame > newFrame = qgis::make_unique< QgsLayoutFrame >( mLayout, this ); - - newFrame->attemptSetSceneRect( QRectF( lastFrame->pos().x(), - mLayout->pageCollection()->page( i )->pos().y() + lastFrame->pagePos().y(), - lastFrame->rect().width(), lastFrame->rect().height() ) ); - lastFrame = newFrame.get(); - addFrame( newFrame.release(), false ); + //page number of the last item + QgsLayoutFrame *lastFrame = mFrameItems.last(); + int lastItemPage = mLayout->pageCollection()->predictPageNumberForPoint( lastFrame->pos() ); + + for ( int i = lastItemPage + 1; i < mLayout->pageCollection()->pageCount(); ++i ) + { + //copy last frame to current page + std::unique_ptr< QgsLayoutFrame > newFrame = qgis::make_unique< QgsLayoutFrame >( mLayout, this ); + + newFrame->attemptSetSceneRect( QRectF( lastFrame->pos().x(), + mLayout->pageCollection()->page( i )->pos().y() + lastFrame->pagePos().y(), + lastFrame->rect().width(), lastFrame->rect().height() ) ); + lastFrame = newFrame.get(); + addFrame( newFrame.release(), false ); + } } recalculateFrameSizes(); diff --git a/src/core/pal/feature.cpp b/src/core/pal/feature.cpp index f749fe5a65..21f658fd71 100644 --- a/src/core/pal/feature.cpp +++ b/src/core/pal/feature.cpp @@ -597,7 +597,7 @@ int FeaturePart::createCandidatesAlongLineNearStraightSegments( QList<LabelPosit double labelWidth = getLabelWidth(); double labelHeight = getLabelHeight(); double distanceLineToLabel = getLabelDistance(); - LineArrangementFlags flags = mLF->layer()->arrangementFlags(); + LineArrangementFlags flags = mLF->arrangementFlags(); if ( flags == 0 ) flags = FLAG_ON_LINE; // default flag @@ -771,27 +771,29 @@ int FeaturePart::createCandidatesAlongLineNearStraightSegments( QList<LabelPosit bool aboveLine = ( !reversed && ( flags & FLAG_ABOVE_LINE ) ) || ( reversed && ( flags & FLAG_BELOW_LINE ) ); bool belowLine = ( !reversed && ( flags & FLAG_BELOW_LINE ) ) || ( reversed && ( flags & FLAG_ABOVE_LINE ) ); - double placementCost = 0.0; if ( belowLine ) { if ( !mLF->permissibleZonePrepared() || GeomFunction::containsCandidate( mLF->permissibleZonePrepared(), candidateStartX - std::cos( beta ) * ( distanceLineToLabel + labelHeight ), candidateStartY - std::sin( beta ) * ( distanceLineToLabel + labelHeight ), labelWidth, labelHeight, angle ) ) { - lPos.append( new LabelPosition( i, candidateStartX - std::cos( beta ) * ( distanceLineToLabel + labelHeight ), candidateStartY - std::sin( beta ) * ( distanceLineToLabel + labelHeight ), labelWidth, labelHeight, angle, cost + placementCost, this, isRightToLeft ) ); // Line - placementCost += 0.001; + const double candidateCost = cost + ( reversed ? 0 : 0.001 ); + lPos.append( new LabelPosition( i, candidateStartX - std::cos( beta ) * ( distanceLineToLabel + labelHeight ), candidateStartY - std::sin( beta ) * ( distanceLineToLabel + labelHeight ), labelWidth, labelHeight, angle, candidateCost, this, isRightToLeft ) ); // Line } } if ( aboveLine ) { if ( !mLF->permissibleZonePrepared() || GeomFunction::containsCandidate( mLF->permissibleZonePrepared(), candidateStartX + std::cos( beta ) *distanceLineToLabel, candidateStartY + std::sin( beta ) *distanceLineToLabel, labelWidth, labelHeight, angle ) ) { - lPos.append( new LabelPosition( i, candidateStartX + std::cos( beta ) *distanceLineToLabel, candidateStartY + std::sin( beta ) *distanceLineToLabel, labelWidth, labelHeight, angle, cost + placementCost, this, isRightToLeft ) ); // Line - placementCost += 0.001; + const double candidateCost = cost + ( !reversed ? 0 : 0.001 ); // no extra cost for above line placements + lPos.append( new LabelPosition( i, candidateStartX + std::cos( beta ) *distanceLineToLabel, candidateStartY + std::sin( beta ) *distanceLineToLabel, labelWidth, labelHeight, angle, candidateCost, this, isRightToLeft ) ); // Line } } if ( flags & FLAG_ON_LINE ) { if ( !mLF->permissibleZonePrepared() || GeomFunction::containsCandidate( mLF->permissibleZonePrepared(), candidateStartX - labelHeight * std::cos( beta ) / 2, candidateStartY - labelHeight * std::sin( beta ) / 2, labelWidth, labelHeight, angle ) ) - lPos.append( new LabelPosition( i, candidateStartX - labelHeight * std::cos( beta ) / 2, candidateStartY - labelHeight * std::sin( beta ) / 2, labelWidth, labelHeight, angle, cost + placementCost, this, isRightToLeft ) ); // Line + { + const double candidateCost = cost + 0.002; + lPos.append( new LabelPosition( i, candidateStartX - labelHeight * std::cos( beta ) / 2, candidateStartY - labelHeight * std::sin( beta ) / 2, labelWidth, labelHeight, angle, candidateCost, this, isRightToLeft ) ); // Line + } } } else if ( mLF->layer()->arrangement() == QgsPalLayerSettings::Horizontal ) @@ -822,7 +824,7 @@ int FeaturePart::createCandidatesAlongLineNearMidpoint( QList<LabelPosition *> & double angle; double cost; - LineArrangementFlags flags = mLF->layer()->arrangementFlags(); + LineArrangementFlags flags = mLF->arrangementFlags(); if ( flags == 0 ) flags = FLAG_ON_LINE; // default flag @@ -924,17 +926,26 @@ int FeaturePart::createCandidatesAlongLineNearMidpoint( QList<LabelPosition *> & if ( aboveLine ) { if ( !mLF->permissibleZonePrepared() || GeomFunction::containsCandidate( mLF->permissibleZonePrepared(), candidateStartX + std::cos( beta ) *distanceLineToLabel, candidateStartY + std::sin( beta ) *distanceLineToLabel, labelWidth, labelHeight, angle ) ) - positions.append( new LabelPosition( i, candidateStartX + std::cos( beta ) *distanceLineToLabel, candidateStartY + std::sin( beta ) *distanceLineToLabel, labelWidth, labelHeight, angle, cost, this, isRightToLeft ) ); // Line + { + const double candidateCost = cost + ( !reversed ? 0 : 0.001 ); // no extra cost for above line placements + positions.append( new LabelPosition( i, candidateStartX + std::cos( beta ) *distanceLineToLabel, candidateStartY + std::sin( beta ) *distanceLineToLabel, labelWidth, labelHeight, angle, candidateCost, this, isRightToLeft ) ); // Line + } } if ( belowLine ) { if ( !mLF->permissibleZonePrepared() || GeomFunction::containsCandidate( mLF->permissibleZonePrepared(), candidateStartX - std::cos( beta ) * ( distanceLineToLabel + labelHeight ), candidateStartY - std::sin( beta ) * ( distanceLineToLabel + labelHeight ), labelWidth, labelHeight, angle ) ) - positions.append( new LabelPosition( i, candidateStartX - std::cos( beta ) * ( distanceLineToLabel + labelHeight ), candidateStartY - std::sin( beta ) * ( distanceLineToLabel + labelHeight ), labelWidth, labelHeight, angle, cost, this, isRightToLeft ) ); // Line + { + const double candidateCost = cost + ( !reversed ? 0.001 : 0 ); + positions.append( new LabelPosition( i, candidateStartX - std::cos( beta ) * ( distanceLineToLabel + labelHeight ), candidateStartY - std::sin( beta ) * ( distanceLineToLabel + labelHeight ), labelWidth, labelHeight, angle, candidateCost, this, isRightToLeft ) ); // Line + } } if ( flags & FLAG_ON_LINE ) { if ( !mLF->permissibleZonePrepared() || GeomFunction::containsCandidate( mLF->permissibleZonePrepared(), candidateStartX - labelHeight * std::cos( beta ) / 2, candidateStartY - labelHeight * std::sin( beta ) / 2, labelWidth, labelHeight, angle ) ) - positions.append( new LabelPosition( i, candidateStartX - labelHeight * std::cos( beta ) / 2, candidateStartY - labelHeight * std::sin( beta ) / 2, labelWidth, labelHeight, angle, cost, this, isRightToLeft ) ); // Line + { + const double candidateCost = cost + 0.002; + positions.append( new LabelPosition( i, candidateStartX - labelHeight * std::cos( beta ) / 2, candidateStartY - labelHeight * std::sin( beta ) / 2, labelWidth, labelHeight, angle, candidateCost, this, isRightToLeft ) ); // Line + } } } else if ( mLF->layer()->arrangement() == QgsPalLayerSettings::Horizontal ) @@ -964,24 +975,14 @@ int FeaturePart::createCandidatesAlongLineNearMidpoint( QList<LabelPosition *> & } -LabelPosition *FeaturePart::curvedPlacementAtOffset( PointSet *path_positions, double *path_distances, int &orientation, int index, double distance, bool &reversed, bool &flip ) +LabelPosition *FeaturePart::curvedPlacementAtOffset( PointSet *path_positions, double *path_distances, int &orientation, const double offsetAlongLine, bool &reversed, bool &flip ) { - // Check that the given distance is on the given index and find the correct index and distance if not - while ( distance < 0 && index > 1 ) + double offsetAlongSegment = offsetAlongLine; + int index = 1; + // Find index of segment corresponding to starting offset + while ( index < path_positions->nbPoints && offsetAlongSegment > path_distances[index] ) { - index--; - distance += path_distances[index]; - } - - if ( index <= 1 && distance < 0 ) // We've gone off the start, fail out - { - return nullptr; - } - - // Same thing, checking if we go off the end - while ( index < path_positions->nbPoints && distance > path_distances[index] ) - { - distance -= path_distances[index]; + offsetAlongSegment -= path_distances[index]; index += 1; } if ( index >= path_positions->nbPoints ) @@ -993,7 +994,7 @@ LabelPosition *FeaturePart::curvedPlacementAtOffset( PointSet *path_positions, d double string_height = li->label_height; - double segment_length = path_distances[index]; + const double segment_length = path_distances[index]; if ( qgsDoubleNear( segment_length, 0.0 ) ) { // Not allowed to place across on 0 length segments or discontinuities @@ -1004,25 +1005,34 @@ LabelPosition *FeaturePart::curvedPlacementAtOffset( PointSet *path_positions, d { // Calculate the orientation based on the angle of the path segment under consideration - double _distance = distance; + double _distance = offsetAlongSegment; int endindex = index; + double startLabelX = 0; + double startLabelY = 0; + double endLabelX = 0; + double endLabelY = 0; for ( int i = 0; i < li->char_num; i++ ) { LabelInfo::CharacterInfo &ci = li->char_info[i]; - double start_x, start_y, end_x, end_y; - if ( !nextCharPosition( ci.width, path_distances[index], path_positions, endindex, _distance, start_x, start_y, end_x, end_y ) ) + double characterStartX, characterStartY; + if ( !nextCharPosition( ci.width, path_distances[endindex], path_positions, endindex, _distance, characterStartX, characterStartY, endLabelX, endLabelY ) ) { return nullptr; } + if ( i == 0 ) + { + startLabelX = characterStartX; + startLabelY = characterStartY; + } } // Determine the angle of the path segment under consideration - double dx = path_positions->x[endindex] - path_positions->x[index]; - double dy = path_positions->y[endindex] - path_positions->y[index]; - double line_angle = std::atan2( -dy, dx ); + double dx = endLabelX - startLabelX; + double dy = endLabelY - startLabelY; + const double lineAngle = std::atan2( -dy, dx ) * 180 / M_PI; - bool isRightToLeft = ( line_angle > 0.55 * M_PI || line_angle < -0.45 * M_PI ); + bool isRightToLeft = ( lineAngle > 90 || lineAngle < -90 ); reversed = isRightToLeft; orientation = isRightToLeft ? -1 : 1; } @@ -1062,7 +1072,7 @@ LabelPosition *FeaturePart::curvedPlacementAtOffset( PointSet *path_positions, d continue; double start_x, start_y, end_x, end_y; - if ( !nextCharPosition( ci.width, path_distances[index], path_positions, index, distance, start_x, start_y, end_x, end_y ) ) + if ( !nextCharPosition( ci.width, path_distances[index], path_positions, index, offsetAlongSegment, start_x, start_y, end_x, end_y ) ) { delete slp; return nullptr; @@ -1130,7 +1140,6 @@ LabelPosition *FeaturePart::curvedPlacementAtOffset( PointSet *path_positions, d if ( render_angle > M_PI_2 && render_angle < 1.5 * M_PI ) slp->incrementUpsideDownCharCount(); } - // END FOR return slp; } @@ -1151,7 +1160,7 @@ int FeaturePart::createCurvedCandidatesAlongLine( QList< LabelPosition * > &lPos return 0; // distance calculation - double *path_distances = new double[mapShape->nbPoints]; + std::unique_ptr< double [] > path_distances = qgis::make_unique<double[]>( mapShape->nbPoints ); double total_distance = 0; double old_x = -1.0, old_y = -1.0; for ( int i = 0; i < mapShape->nbPoints; i++ ) @@ -1168,19 +1177,29 @@ int FeaturePart::createCurvedCandidatesAlongLine( QList< LabelPosition * > &lPos if ( qgsDoubleNear( total_distance, 0.0 ) ) { - delete[] path_distances; + return 0; + } + + double totalCharacterWidth = 0; + for ( int i = 0; i < li->char_num; ++i ) + totalCharacterWidth += li->char_info[ i ].width; + + if ( totalCharacterWidth > total_distance ) + { + // label doesn't fit on this line, don't waste time trying to make candidates + // TODO: in future allow this, and allow label to overlap end of line return 0; } QLinkedList<LabelPosition *> positions; double delta = std::max( li->label_height, total_distance / mLF->layer()->pal->line_p ); - unsigned long flags = mLF->layer()->arrangementFlags(); + pal::LineArrangementFlags flags = mLF->arrangementFlags(); if ( flags == 0 ) flags = FLAG_ON_LINE; // default flag // generate curved labels - for ( double i = 0; i < total_distance; i += delta ) + for ( double distanceAlongLineToStartCandidate = 0; distanceAlongLineToStartCandidate < total_distance; distanceAlongLineToStartCandidate += delta ) { bool flip = false; // placements may need to be reversed if using map orientation and the line has right-to-left direction @@ -1195,7 +1214,7 @@ int FeaturePart::createCurvedCandidatesAlongLine( QList< LabelPosition * > &lPos orientation = 1; } - LabelPosition *slp = curvedPlacementAtOffset( mapShape, path_distances, orientation, 1, i, reversed, flip ); + LabelPosition *slp = curvedPlacementAtOffset( mapShape, path_distances.get(), orientation, distanceAlongLineToStartCandidate, reversed, flip ); if ( !slp ) continue; @@ -1207,7 +1226,7 @@ int FeaturePart::createCurvedCandidatesAlongLine( QList< LabelPosition * > &lPos { delete slp; orientation = -orientation; - slp = curvedPlacementAtOffset( mapShape, path_distances, orientation, 1, i, reversed, flip ); + slp = curvedPlacementAtOffset( mapShape, path_distances.get(), orientation, distanceAlongLineToStartCandidate, reversed, flip ); } } if ( !slp ) @@ -1238,9 +1257,9 @@ int FeaturePart::createCurvedCandidatesAlongLine( QList< LabelPosition * > &lPos if ( cost < 0.0001 ) cost = 0.0001; // penalize positions which are further from the line's midpoint - double labelCenter = i + getLabelWidth() / 2; + double labelCenter = distanceAlongLineToStartCandidate + getLabelWidth() / 2; double costCenter = std::fabs( total_distance / 2 - labelCenter ) / total_distance; // <0, 0.5> - cost += costCenter / 1000; // < 0, 0.0005 > + cost += costCenter / 100; // < 0, 0.005 > slp->setCost( cost ); // average angle is calculated with respect to periodicity of angles @@ -1293,8 +1312,6 @@ int FeaturePart::createCurvedCandidatesAlongLine( QList< LabelPosition * > &lPos lPos << positions.takeFirst(); } - delete[] path_distances; - return nbp; } @@ -1747,38 +1764,38 @@ bool FeaturePart::showUprightLabels() const return uprightLabel; } -bool FeaturePart::nextCharPosition( double charWidth, double segment_length, PointSet *path_positions, int &index, double &distance, - double &start_x, double &start_y, double &end_x, double &end_y ) const +bool FeaturePart::nextCharPosition( double charWidth, double segmentLength, PointSet *path_positions, int &index, double ¤tDistanceAlongSegment, + double &characterStartX, double &characterStartY, double &characterEndX, double &characterEndY ) const { // Coordinates this character will start at - if ( qgsDoubleNear( segment_length, 0.0 ) ) + if ( qgsDoubleNear( segmentLength, 0.0 ) ) { // Not allowed to place across on 0 length segments or discontinuities return false; } - double old_x = path_positions->x[index - 1]; - double old_y = path_positions->y[index - 1]; + double segmentStartX = path_positions->x[index - 1]; + double segmentStartY = path_positions->y[index - 1]; - double new_x = path_positions->x[index]; - double new_y = path_positions->y[index]; + double segmentEndX = path_positions->x[index]; + double segmentEndY = path_positions->y[index]; - double dx = new_x - old_x; - double dy = new_y - old_y; + double segmentDx = segmentEndX - segmentStartX; + double segmentDy = segmentEndY - segmentStartY; - start_x = old_x + dx * distance / segment_length; - start_y = old_y + dy * distance / segment_length; + characterStartX = segmentStartX + segmentDx * currentDistanceAlongSegment / segmentLength; + characterStartY = segmentStartY + segmentDy * currentDistanceAlongSegment / segmentLength; // Coordinates this character ends at, calculated below - end_x = 0; - end_y = 0; + characterEndX = 0; + characterEndY = 0; - if ( segment_length - distance >= charWidth ) + if ( segmentLength - currentDistanceAlongSegment >= charWidth ) { // if the distance remaining in this segment is enough, we just go further along the segment - distance += charWidth; - end_x = old_x + dx * distance / segment_length; - end_y = old_y + dy * distance / segment_length; + currentDistanceAlongSegment += charWidth; + characterEndX = segmentStartX + segmentDx * currentDistanceAlongSegment / segmentLength; + characterEndY = segmentStartY + segmentDy * currentDistanceAlongSegment / segmentLength; } else { @@ -1786,25 +1803,23 @@ bool FeaturePart::nextCharPosition( double charWidth, double segment_length, Poi // then we need to search until we find the line segment that ends further than ci.width away do { - old_x = new_x; - old_y = new_y; + segmentStartX = segmentEndX; + segmentStartY = segmentEndY; index++; if ( index >= path_positions->nbPoints ) // Bail out if we run off the end of the shape { return false; } - new_x = path_positions->x[index]; - new_y = path_positions->y[index]; - dx = new_x - old_x; - dy = new_y - old_y; + segmentEndX = path_positions->x[index]; + segmentEndY = path_positions->y[index]; } - while ( std::sqrt( std::pow( start_x - new_x, 2 ) + std::pow( start_y - new_y, 2 ) ) < charWidth ); // Distance from start_ to new_ + while ( std::sqrt( std::pow( characterStartX - segmentEndX, 2 ) + std::pow( characterStartY - segmentEndY, 2 ) ) < charWidth ); // Distance from start_ to new_ // Calculate the position to place the end of the character on - GeomFunction::findLineCircleIntersection( start_x, start_y, charWidth, old_x, old_y, new_x, new_y, end_x, end_y ); + GeomFunction::findLineCircleIntersection( characterStartX, characterStartY, charWidth, segmentStartX, segmentStartY, segmentEndX, segmentEndY, characterEndX, characterEndY ); // Need to calculate distance on the new segment - distance = std::sqrt( std::pow( old_x - end_x, 2 ) + std::pow( old_y - end_y, 2 ) ); + currentDistanceAlongSegment = std::sqrt( std::pow( segmentStartX - characterEndX, 2 ) + std::pow( segmentStartY - characterEndY, 2 ) ); } return true; } diff --git a/src/core/pal/feature.h b/src/core/pal/feature.h index 3ee43ccc3b..b86bc6d9c2 100644 --- a/src/core/pal/feature.h +++ b/src/core/pal/feature.h @@ -200,14 +200,13 @@ namespace pal * \param path_positions line path to place label on * \param path_distances array of distances to each segment on path * \param orientation can be 0 for automatic calculation of orientation, or -1/+1 for a specific label orientation - * \param index * \param distance distance to offset label along curve by * \param reversed if true label is reversed from lefttoright to righttoleft * \param flip if true label is placed on the other side of the line * \returns calculated label position */ LabelPosition *curvedPlacementAtOffset( PointSet *path_positions, double *path_distances, - int &orientation, int index, double distance, bool &reversed, bool &flip ); + int &orientation, double distance, bool &reversed, bool &flip ); /** * Generate curved candidates for line features. @@ -298,8 +297,8 @@ namespace pal bool showUprightLabels() const; //! Returns true if the next char position is found. The referenced parameters are updated. - bool nextCharPosition( double charWidth, double segment_length, PointSet *path_positions, int &index, double &distance, - double &start_x, double &start_y, double &end_x, double &end_y ) const; + bool nextCharPosition( double charWidth, double segmentLength, PointSet *path_positions, int &index, double ¤tDistanceAlongSegment, + double &characterStartX, double &characterStartY, double &characterEndX, double &characterEndY ) const; protected: diff --git a/src/core/pal/geomfunction.cpp b/src/core/pal/geomfunction.cpp index 35328c6cd9..fc7dd77057 100644 --- a/src/core/pal/geomfunction.cpp +++ b/src/core/pal/geomfunction.cpp @@ -381,7 +381,7 @@ void GeomFunction::findLineCircleIntersection( double cx, double cy, double radi double C = ( x1 - cx ) * ( x1 - cx ) + ( y1 - cy ) * ( y1 - cy ) - radius * radius; double det = B * B - 4 * A * C; - if ( A <= 0.0000001 || det < 0 ) + if ( A <= 0.000000000001 || det < 0 ) // Should never happen, No real solutions. return; diff --git a/src/core/pal/layer.cpp b/src/core/pal/layer.cpp index eb179f8afd..574059658f 100644 --- a/src/core/pal/layer.cpp +++ b/src/core/pal/layer.cpp @@ -51,7 +51,6 @@ Layer::Layer( QgsAbstractLabelProvider *provider, const QString &name, QgsPalLay , mDisplayAll( displayAll ) , mCentroidInside( false ) , mArrangement( arrangement ) - , mArrangementFlags( nullptr ) , mMode( LabelPerFeature ) , mMergeLines( false ) , mUpsidedownLabels( Upright ) @@ -74,9 +73,6 @@ Layer::~Layer() qDeleteAll( mFeatureParts ); qDeleteAll( mObstacleParts ); - //should already be empty - qDeleteAll( mConnectedHashtable ); - delete mFeatureIndex; delete mObstacleIndex; @@ -302,19 +298,7 @@ void Layer::addFeaturePart( FeaturePart *fpart, const QString &labelText ) // add to hashtable with equally named feature parts if ( mMergeLines && !labelText.isEmpty() ) { - QLinkedList< FeaturePart *> *lst; - if ( !mConnectedHashtable.contains( labelText ) ) - { - // entry doesn't exist yet - lst = new QLinkedList<FeaturePart *>; - mConnectedHashtable.insert( labelText, lst ); - mConnectedTexts << labelText; - } - else - { - lst = mConnectedHashtable.value( labelText ); - } - lst->append( fpart ); // add to the list + mConnectedHashtable[ labelText ].append( fpart ); } } @@ -331,18 +315,18 @@ void Layer::addObstaclePart( FeaturePart *fpart ) mObstacleIndex->Insert( bmin, bmax, fpart ); } -static FeaturePart *_findConnectedPart( FeaturePart *partCheck, QLinkedList<FeaturePart *> *otherParts ) +static FeaturePart *_findConnectedPart( FeaturePart *partCheck, const QVector<FeaturePart *> &otherParts ) { // iterate in the rest of the parts with the same label - QLinkedList<FeaturePart *>::const_iterator p = otherParts->constBegin(); - while ( p != otherParts->constEnd() ) + auto it = otherParts.constBegin(); + while ( it != otherParts.constEnd() ) { - if ( partCheck->isConnected( *p ) ) + if ( partCheck->isConnected( *it ) ) { // stop checking for other connected parts - return *p; + return *it; } - ++p; + ++it; } return nullptr; // no connected part found... @@ -352,20 +336,24 @@ void Layer::joinConnectedFeatures() { // go through all label texts int connectedFeaturesId = 0; - Q_FOREACH ( const QString &labelText, mConnectedTexts ) + for ( auto it = mConnectedHashtable.constBegin(); it != mConnectedHashtable.constEnd(); ++it ) { - if ( !mConnectedHashtable.contains( labelText ) ) - continue; // shouldn't happen - + const QString labelTExt = it.key(); + QVector<FeaturePart *> parts = it.value(); connectedFeaturesId++; - QLinkedList<FeaturePart *> *parts = mConnectedHashtable.value( labelText ); + // need to start with biggest parts first, to avoid merging in side branches before we've + // merged the whole of the longest parts of the joined network + std::sort( parts.begin(), parts.end(), []( FeaturePart * a, FeaturePart * b ) + { + return a->length() > b->length(); + } ); // go one-by-one part, try to merge - while ( !parts->isEmpty() && parts->count() > 1 ) + while ( parts.count() > 1 ) { // part we'll be checking against other in this round - FeaturePart *partCheck = parts->takeFirst(); + FeaturePart *partCheck = parts.takeFirst(); FeaturePart *otherPart = _findConnectedPart( partCheck, parts ); if ( otherPart ) @@ -396,19 +384,9 @@ void Layer::joinConnectedFeatures() } } } - - // we're done processing feature parts with this particular label text - delete parts; - mConnectedHashtable.remove( labelText ); } - // we're done processing connected features - - //should be empty, but clear to be safe - qDeleteAll( mConnectedHashtable ); mConnectedHashtable.clear(); - - mConnectedTexts.clear(); } int Layer::connectedFeatureId( QgsFeatureId featureId ) const diff --git a/src/core/pal/layer.h b/src/core/pal/layer.h index 898a9a07b5..bb5dadc634 100644 --- a/src/core/pal/layer.h +++ b/src/core/pal/layer.h @@ -113,19 +113,6 @@ namespace pal */ void setArrangement( QgsPalLayerSettings::Placement arrangement ) { mArrangement = arrangement; } - /** - * Returns the layer's arrangement flags. - * \see setArrangementFlags - */ - LineArrangementFlags arrangementFlags() const { return mArrangementFlags; } - - /** - * Sets the layer's arrangement flags. - * \param flags arrangement flags - * \see arrangementFlags - */ - void setArrangementFlags( LineArrangementFlags flags ) { mArrangementFlags = flags; } - /** * \brief Sets whether the layer is currently active. * @@ -290,7 +277,7 @@ namespace pal //! Optional flags used for some placement methods QgsPalLayerSettings::Placement mArrangement; - LineArrangementFlags mArrangementFlags; + LabelMode mMode; bool mMergeLines; @@ -304,8 +291,7 @@ namespace pal //obstacle r-tree RTree<FeaturePart *, double, 2, double, 8, 4> *mObstacleIndex; - QHash< QString, QLinkedList<FeaturePart *>* > mConnectedHashtable; - QStringList mConnectedTexts; + QHash< QString, QVector<FeaturePart *> > mConnectedHashtable; QHash< QgsFeatureId, int > mConnectedFeaturesIds; QMutex mMutex; diff --git a/src/core/qgsapplication.cpp b/src/core/qgsapplication.cpp index b31c4502f0..66dfdcf3b5 100644 --- a/src/core/qgsapplication.cpp +++ b/src/core/qgsapplication.cpp @@ -306,6 +306,16 @@ QgsApplication::~QgsApplication() delete mApplicationMembers; delete mQgisTranslator; delete mQtTranslator; + + // invalidate coordinate cache while the PROJ context held by the thread-locale + // QgsProjContextStore object is still alive. Otherwise if this later object + // is destroyed before the static variables of the cache, we might use freed memory. + + // we do this here as well as in exitQgis() -- it's safe to call as often as we want, + // and there's just a *chance* that in between an exitQgis call and this destructor + // something else's destructor has caused a new entry in the caches... + QgsCoordinateTransform::invalidateCache(); + QgsCoordinateReferenceSystem::invalidateCache(); } QgsApplication *QgsApplication::instance() @@ -979,7 +989,7 @@ QString QgsApplication::userLoginName() if ( GetUserName( ( TCHAR * )name, &size ) ) { - sUserName = QString( name ); + sUserName = QString::fromLocal8Bit( name ); } #else @@ -1015,7 +1025,7 @@ QString QgsApplication::userFullName() //note - this only works for accounts connected to domain if ( GetUserNameEx( NameDisplay, ( TCHAR * )name, &size ) ) { - sUserFullName = QString( name ); + sUserFullName = QString::fromLocal8Bit( name ); } //fall back to login name @@ -1190,6 +1200,7 @@ void QgsApplication::exitQgis() // QgsProjContextStore object is still alive. Otherwise if this later object // is destroyed before the static variables of the cache, we might use freed memory. QgsCoordinateTransform::invalidateCache(); + QgsCoordinateReferenceSystem::invalidateCache(); QgsStyle::cleanDefaultStyle(); diff --git a/src/core/qgsattributeeditorelement.h b/src/core/qgsattributeeditorelement.h index 15927a9d0a..ce564a13dc 100644 --- a/src/core/qgsattributeeditorelement.h +++ b/src/core/qgsattributeeditorelement.h @@ -68,7 +68,7 @@ class CORE_EXPORT QgsAttributeEditorElement SIP_ABSTRACT /** * Constructor * - * \param type The type of the new element. Should never + * \param type The type of the new element. * \param name * \param parent */ diff --git a/src/core/qgscolorramp.cpp b/src/core/qgscolorramp.cpp index 51ad3e0a0a..02e2fd2401 100644 --- a/src/core/qgscolorramp.cpp +++ b/src/core/qgscolorramp.cpp @@ -551,7 +551,7 @@ double QgsColorBrewerColorRamp::value( int index ) const QColor QgsColorBrewerColorRamp::color( double value ) const { - if ( mPalette.isEmpty() || value < 0 || value > 1 ) + if ( mPalette.isEmpty() || value < 0 || value > 1 || std::isnan( value ) ) return QColor(); int paletteEntry = static_cast< int >( value * mPalette.count() ); diff --git a/src/core/qgscoordinatereferencesystem.cpp b/src/core/qgscoordinatereferencesystem.cpp index 82281690db..8472800183 100644 --- a/src/core/qgscoordinatereferencesystem.cpp +++ b/src/core/qgscoordinatereferencesystem.cpp @@ -1773,7 +1773,12 @@ bool QgsCoordinateReferenceSystem::loadIds( QHash<int, QString> &wkts ) Q_FOREACH ( const QString &csv, QStringList() << "gcs.csv" << "pcs.csv" << "vertcs.csv" << "compdcs.csv" << "geoccs.csv" ) { - QString filename = CPLFindFile( "gdal", csv.toUtf8() ); + +#if GDAL_VERSION_NUM < GDAL_COMPUTE_VERSION(3,0,0) + const QString filename = CPLFindFile( "gdal", csv.toUtf8() ); +#else + const QString filename = QgsApplication::pkgDataPath() + QStringLiteral( "/resources/" ) + csv; +#endif QFile f( filename ); if ( !f.open( QIODevice::ReadOnly ) ) @@ -2159,8 +2164,13 @@ int QgsCoordinateReferenceSystem::syncDatabase() bool QgsCoordinateReferenceSystem::syncDatumTransform( const QString &dbPath ) { +#if GDAL_VERSION_NUM < GDAL_COMPUTE_VERSION(3,0,0) const char *filename = CSVFilename( "datum_shift.csv" ); FILE *fp = VSIFOpen( filename, "rb" ); +#else + const QString filename = QgsApplication::pkgDataPath() + QStringLiteral( "/resources/datum_shift.csv" ); + FILE *fp = VSIFOpen( filename.toUtf8().constData(), "rb" ); +#endif if ( !fp ) { return false; diff --git a/src/core/qgscoordinatetransform.cpp b/src/core/qgscoordinatetransform.cpp index f608509444..82b89754c1 100644 --- a/src/core/qgscoordinatetransform.cpp +++ b/src/core/qgscoordinatetransform.cpp @@ -736,8 +736,16 @@ bool QgsCoordinateTransform::setFromCache( const QgsCoordinateReferenceSystem &s if ( !src.isValid() || !dest.isValid() ) return false; + const QString sourceKey = src.authid().isEmpty() ? + src.toWkt() : src.authid(); + const QString destKey = dest.authid().isEmpty() ? + dest.toWkt() : dest.authid(); + + if ( sourceKey.isEmpty() || destKey.isEmpty() ) + return false; + sCacheLock.lockForRead(); - const QList< QgsCoordinateTransform > values = sTransforms.values( qMakePair( src.authid(), dest.authid() ) ); + const QList< QgsCoordinateTransform > values = sTransforms.values( qMakePair( sourceKey, destKey ) ); for ( auto valIt = values.constBegin(); valIt != values.constEnd(); ++valIt ) { if ( ( *valIt ).sourceDatumTransformId() == srcDatumTransform && @@ -768,8 +776,16 @@ void QgsCoordinateTransform::addToCache() if ( !d->mSourceCRS.isValid() || !d->mDestCRS.isValid() ) return; + const QString sourceKey = d->mSourceCRS.authid().isEmpty() ? + d->mSourceCRS.toWkt() : d->mSourceCRS.authid(); + const QString destKey = d->mDestCRS.authid().isEmpty() ? + d->mDestCRS.toWkt() : d->mDestCRS.authid(); + + if ( sourceKey.isEmpty() || destKey.isEmpty() ) + return; + sCacheLock.lockForWrite(); - sTransforms.insertMulti( qMakePair( d->mSourceCRS.authid(), d->mDestCRS.authid() ), *this ); + sTransforms.insertMulti( qMakePair( sourceKey, destKey ), *this ); sCacheLock.unlock(); } diff --git a/src/core/qgslabelfeature.h b/src/core/qgslabelfeature.h index 6bbc785af7..1e42da583b 100644 --- a/src/core/qgslabelfeature.h +++ b/src/core/qgslabelfeature.h @@ -22,6 +22,7 @@ #include "geos_c.h" #include "qgsgeos.h" #include "qgsmargins.h" +#include "pal.h" namespace pal { @@ -334,6 +335,19 @@ class CORE_EXPORT QgsLabelFeature */ void setObstacleFactor( double factor ) { mObstacleFactor = factor; } + /** + * Returns the feature's arrangement flags. + * \see setArrangementFlags + */ + pal::LineArrangementFlags arrangementFlags() const { return mArrangementFlags; } + + /** + * Sets the feature's arrangement flags. + * \param flags arrangement flags + * \see arrangementFlags + */ + void setArrangementFlags( pal::LineArrangementFlags flags ) { mArrangementFlags = flags; } + /** * Text of the label * @@ -412,6 +426,8 @@ class CORE_EXPORT QgsLabelFeature //! extra information for curved labels (may be null) pal::LabelInfo *mInfo = nullptr; + pal::LineArrangementFlags mArrangementFlags = nullptr; + private: //! GEOS geometry on which mPermissibleZoneGeosPrepared is based on diff --git a/src/core/qgslabelingengine.cpp b/src/core/qgslabelingengine.cpp index 0a47511cb9..50bb7b5b4e 100644 --- a/src/core/qgslabelingengine.cpp +++ b/src/core/qgslabelingengine.cpp @@ -81,6 +81,13 @@ QgsLabelingEngine::~QgsLabelingEngine() qDeleteAll( mSubProviders ); } +void QgsLabelingEngine::setMapSettings( const QgsMapSettings &mapSettings ) +{ + mMapSettings = mapSettings; + if ( mResults ) + mResults->setMapSettings( mapSettings ); +} + QList< QgsMapLayer * > QgsLabelingEngine::participatingLayers() const { QSet< QgsMapLayer * > layers; @@ -125,9 +132,6 @@ void QgsLabelingEngine::processProvider( QgsAbstractLabelProvider *provider, Qgs flags.testFlag( QgsAbstractLabelProvider::DrawLabels ), flags.testFlag( QgsAbstractLabelProvider::DrawAllLabels ) ); - // extra flags for placement of labels for linestrings - l->setArrangementFlags( static_cast< pal::LineArrangementFlags >( provider->linePlacementFlags() ) ); - // set label mode (label per feature is the default) l->setLabelMode( flags.testFlag( QgsAbstractLabelProvider::LabelPerFeaturePart ) ? pal::Layer::LabelPerFeaturePart : pal::Layer::LabelPerFeature ); @@ -365,7 +369,6 @@ QgsAbstractLabelProvider::QgsAbstractLabelProvider( QgsMapLayer *layer, const QS , mProviderId( providerId ) , mFlags( DrawLabels ) , mPlacement( QgsPalLayerSettings::AroundPoint ) - , mLinePlacementFlags( 0 ) , mPriority( 0.5 ) , mObstacleType( QgsPalLayerSettings::PolygonInterior ) , mUpsidedownLabels( QgsPalLayerSettings::Upright ) @@ -459,3 +462,39 @@ QVector<QgsPalLayerSettings::PredefinedPointPosition> QgsLabelingUtils::decodePr } return result; } + +QString QgsLabelingUtils::encodeLinePlacementFlags( pal::LineArrangementFlags flags ) +{ + QStringList parts; + if ( flags & pal::FLAG_ON_LINE ) + parts << QStringLiteral( "OL" ); + if ( flags & pal::FLAG_ABOVE_LINE ) + parts << QStringLiteral( "AL" ); + if ( flags & pal::FLAG_BELOW_LINE ) + parts << QStringLiteral( "BL" ); + if ( !( flags & pal::FLAG_MAP_ORIENTATION ) ) + parts << QStringLiteral( "LO" ); + return parts.join( ',' ); +} + +pal::LineArrangementFlags QgsLabelingUtils::decodeLinePlacementFlags( const QString &string ) +{ + pal::LineArrangementFlags flags = nullptr; + const QStringList flagList = string.split( ',' ); + bool foundLineOrientationFlag = false; + for ( const QString &flag : flagList ) + { + QString cleaned = flag.trimmed().toUpper(); + if ( cleaned == QLatin1String( "OL" ) ) + flags |= pal::FLAG_ON_LINE; + else if ( cleaned == QLatin1String( "AL" ) ) + flags |= pal::FLAG_ABOVE_LINE; + else if ( cleaned == QLatin1String( "BL" ) ) + flags |= pal::FLAG_BELOW_LINE; + else if ( cleaned == QLatin1String( "LO" ) ) + foundLineOrientationFlag = true; + } + if ( !foundLineOrientationFlag ) + flags |= pal::FLAG_MAP_ORIENTATION; + return flags; +} diff --git a/src/core/qgslabelingengine.h b/src/core/qgslabelingengine.h index 3ba23b973c..28f9c8087f 100644 --- a/src/core/qgslabelingengine.h +++ b/src/core/qgslabelingengine.h @@ -23,7 +23,7 @@ #include "qgspallabeling.h" #include "qgslabelingenginesettings.h" - +#include "pal.h" class QgsLabelingEngine; @@ -93,9 +93,6 @@ class CORE_EXPORT QgsAbstractLabelProvider //! What placement strategy to use for the labels QgsPalLayerSettings::Placement placement() const { return mPlacement; } - //! For layers with linestring geometries - extra placement flags (or-ed combination of QgsPalLayerSettings::LinePlacementFlags) - unsigned int linePlacementFlags() const { return mLinePlacementFlags; } - //! Default priority of labels (may be overridden by individual labels) double priority() const { return mPriority; } @@ -121,8 +118,6 @@ class CORE_EXPORT QgsAbstractLabelProvider Flags mFlags; //! Placement strategy QgsPalLayerSettings::Placement mPlacement; - //! Extra placement flags for linestring geometries - unsigned int mLinePlacementFlags; //! Default priority of labels double mPriority; //! Type of the obstacle of feature geometries @@ -181,7 +176,7 @@ class CORE_EXPORT QgsLabelingEngine QgsLabelingEngine &operator=( const QgsLabelingEngine &rh ) = delete; //! Associate map settings instance - void setMapSettings( const QgsMapSettings &mapSettings ) { mMapSettings = mapSettings; } + void setMapSettings( const QgsMapSettings &mapSettings ); //! Gets associated map settings const QgsMapSettings &mapSettings() const { return mMapSettings; } @@ -255,6 +250,18 @@ class CORE_EXPORT QgsLabelingUtils */ static QVector< QgsPalLayerSettings::PredefinedPointPosition > decodePredefinedPositionOrder( const QString &positionString ); + /** + * Encodes line placement \a flags to a string. + * \see decodeLinePlacementFlags() + */ + static QString encodeLinePlacementFlags( pal::LineArrangementFlags flags ); + + /** + * Decodes a \a string to set of line placement flags. + * \see encodeLinePlacementFlags() + */ + static pal::LineArrangementFlags decodeLinePlacementFlags( const QString &string ); + }; #endif // QGSLABELINGENGINEV2_H diff --git a/src/core/qgslabelsearchtree.cpp b/src/core/qgslabelsearchtree.cpp index b09d2cc4eb..b4e193d891 100644 --- a/src/core/qgslabelsearchtree.cpp +++ b/src/core/qgslabelsearchtree.cpp @@ -27,8 +27,9 @@ QgsLabelSearchTree::~QgsLabelSearchTree() clear(); } -void QgsLabelSearchTree::label( const QgsPointXY &p, QList<QgsLabelPosition *> &posList ) const +void QgsLabelSearchTree::label( const QgsPointXY &point, QList<QgsLabelPosition *> &posList ) const { + QgsPointXY p( point ); double c_min[2]; c_min[0] = p.x() - 0.1; c_min[1] = p.y() - 0.1; @@ -44,7 +45,7 @@ void QgsLabelSearchTree::label( const QgsPointXY &p, QList<QgsLabelPosition *> & QList<QgsLabelPosition *>::const_iterator resultIt = searchResults.constBegin(); for ( ; resultIt != searchResults.constEnd(); ++resultIt ) { - if ( ( *resultIt )->labelRect.contains( p ) ) + if ( ( *resultIt )->labelGeometry.contains( &p ) ) { posList.push_back( *resultIt ); } @@ -67,7 +68,10 @@ void QgsLabelSearchTree::labelsInRect( const QgsRectangle &r, QList<QgsLabelPosi QList<QgsLabelPosition *>::const_iterator resultIt = searchResults.constBegin(); for ( ; resultIt != searchResults.constEnd(); ++resultIt ) { - posList.push_back( *resultIt ); + if ( ( *resultIt )->labelGeometry.intersects( r ) ) + { + posList.push_back( *resultIt ); + } } } @@ -78,28 +82,59 @@ bool QgsLabelSearchTree::insertLabel( pal::LabelPosition *labelPos, int featureI return false; } - double c_min[2]; - double c_max[2]; - labelPos->getBoundingBox( c_min, c_max ); - QVector<QgsPointXY> cornerPoints; cornerPoints.reserve( 4 ); + double xMin = std::numeric_limits< double >::max(); + double yMin = std::numeric_limits< double >::max(); + double xMax = std::numeric_limits< double >::lowest(); + double yMax = std::numeric_limits< double >::lowest(); for ( int i = 0; i < 4; ++i ) { - cornerPoints.push_back( QgsPointXY( labelPos->getX( i ), labelPos->getY( i ) ) ); + // we have to transform the bounding box to convert pre-rotated label positions back to real world locations + QPointF res = mTransform.map( QPointF( labelPos->getX( i ), labelPos->getY( i ) ) ); + cornerPoints.push_back( QgsPointXY( res ) ); + xMin = std::min( xMin, res.x() ); + xMax = std::max( xMax, res.x() ); + yMin = std::min( yMin, res.y() ); + yMax = std::max( yMax, res.y() ); } - QgsLabelPosition *newEntry = new QgsLabelPosition( featureId, labelPos->getAlpha(), cornerPoints, QgsRectangle( c_min[0], c_min[1], c_max[0], c_max[1] ), - labelPos->getWidth(), labelPos->getHeight(), layerName, labeltext, labelfont, labelPos->getUpsideDown(), diagram, pinned, providerId ); - mSpatialIndex.Insert( c_min, c_max, newEntry ); - mOwnedPositions << newEntry; + double c_min[2]; + double c_max[2]; + c_min[0] = xMin; + c_min[1] = yMin; + c_max[0] = xMax; + c_max[1] = yMax; + + QgsGeometry labelGeometry( QgsGeometry::fromPolygonXY( QVector<QgsPolylineXY>() << cornerPoints ) ); + std::unique_ptr< QgsLabelPosition > newEntry = qgis::make_unique< QgsLabelPosition >( featureId, labelPos->getAlpha() + mMapSettings.rotation(), cornerPoints, QgsRectangle( c_min[0], c_min[1], c_max[0], c_max[1] ), + labelPos->getWidth(), labelPos->getHeight(), layerName, labeltext, labelfont, labelPos->getUpsideDown(), diagram, pinned, providerId, labelGeometry ); + mSpatialIndex.Insert( c_min, c_max, newEntry.get() ); + mOwnedPositions.emplace_back( std::move( newEntry ) ); return true; } +void QgsLabelSearchTree::setMapSettings( const QgsMapSettings &settings ) +{ + mMapSettings = settings; + + if ( !qgsDoubleNear( mMapSettings.rotation(), 0.0 ) ) + { + // build a transform to convert points from real world to pre-rotated label positions + const QgsPointXY center = mMapSettings.visibleExtent().center(); + mTransform = QTransform::fromTranslate( center.x(), center.y() ); + mTransform.rotate( mMapSettings.rotation() ); + mTransform.translate( -center.x(), -center.y() ); + } + else + { + mTransform = QTransform(); + } +} + void QgsLabelSearchTree::clear() { mSpatialIndex.RemoveAll(); //PAL rtree iterator is buggy and doesn't iterate over all items, so we can't iterate through the tree to delete positions - qDeleteAll( mOwnedPositions ); mOwnedPositions.clear(); } diff --git a/src/core/qgslabelsearchtree.h b/src/core/qgslabelsearchtree.h index 61c70bccd2..22b6cee166 100644 --- a/src/core/qgslabelsearchtree.h +++ b/src/core/qgslabelsearchtree.h @@ -25,6 +25,7 @@ #include <QVector> #include "qgspallabeling.h" #include "rtree.hpp" +#include "qgsmapsettings.h" class QgsPointXY; @@ -35,6 +36,8 @@ namespace pal } #endif +// TODO QGIS 4.0 - this should be private, not exposed to SIP + /** * \ingroup core * A class to query the labeling structure at a given point (small wrapper around pal RTree class) @@ -78,10 +81,18 @@ class CORE_EXPORT QgsLabelSearchTree */ bool insertLabel( pal::LabelPosition *labelPos, int featureId, const QString &layerName, const QString &labeltext, const QFont &labelfont, bool diagram = false, bool pinned = false, const QString &providerId = QString() ) SIP_SKIP; + /** + * Sets the map \a settings associated with the labeling run. + * \since QGIS 3.4.8 + */ + void setMapSettings( const QgsMapSettings &settings ); + private: // set as mutable because RTree template is not const-correct mutable pal::RTree<QgsLabelPosition *, double, 2, double> mSpatialIndex; - QList< QgsLabelPosition * > mOwnedPositions; + std::vector< std::unique_ptr< QgsLabelPosition > > mOwnedPositions; + QgsMapSettings mMapSettings; + QTransform mTransform; #ifdef SIP_RUN //! QgsLabelSearchTree cannot be copied. diff --git a/src/core/qgsmaplayer.cpp b/src/core/qgsmaplayer.cpp index 4c2dc1b7ed..718efb4eac 100644 --- a/src/core/qgsmaplayer.cpp +++ b/src/core/qgsmaplayer.cpp @@ -799,24 +799,16 @@ QString QgsMapLayer::baseURI( PropertyType type ) const { QString myURI = publicSource(); - // if file is using the VSIFILE mechanism, remove the prefix - if ( myURI.startsWith( QLatin1String( "/vsigzip/" ), Qt::CaseInsensitive ) ) - { - myURI.remove( 0, 9 ); - } - else if ( myURI.startsWith( QLatin1String( "/vsizip/" ), Qt::CaseInsensitive ) && - myURI.endsWith( QLatin1String( ".zip" ), Qt::CaseInsensitive ) ) - { - // ideally we should look for .qml file inside zip file - myURI.remove( 0, 8 ); - } - else if ( myURI.startsWith( QLatin1String( "/vsitar/" ), Qt::CaseInsensitive ) && - ( myURI.endsWith( QLatin1String( ".tar" ), Qt::CaseInsensitive ) || - myURI.endsWith( QLatin1String( ".tar.gz" ), Qt::CaseInsensitive ) || - myURI.endsWith( QLatin1String( ".tgz" ), Qt::CaseInsensitive ) ) ) - { - // ideally we should look for .qml file inside tar file - myURI.remove( 0, 8 ); + // first get base path for delimited text, spatialite and OGR layers, + // as in these cases URI may contain layer name and/or additional + // information. This also strips prefix in case if VSIFILE mechanism + // is used + QString providerType = dataProvider()->name(); + if ( providerType == QLatin1String( "ogr" ) || providerType == QLatin1String( "delimitedtext" ) || + providerType == QLatin1String( "spatialite" ) ) + { + QVariantMap components = QgsProviderRegistry::instance()->decodeUri( providerType, myURI ); + myURI = components["path"].toString(); } QFileInfo myFileInfo( myURI ); diff --git a/src/core/qgsmaptopixelgeometrysimplifier.cpp b/src/core/qgsmaptopixelgeometrysimplifier.cpp index 4f57db3195..4041b690a3 100644 --- a/src/core/qgsmaptopixelgeometrysimplifier.cpp +++ b/src/core/qgsmaptopixelgeometrysimplifier.cpp @@ -162,8 +162,6 @@ std::unique_ptr< QgsAbstractGeometry > QgsMapToPixelSimplifier::simplifyGeometry } double x = 0.0, y = 0.0, lastX = 0.0, lastY = 0.0; - QgsRectangle r; - r.setMinimal(); if ( numPoints <= ( isaLinearRing ? 4 : 2 ) ) isGeneralizable = false; @@ -225,8 +223,6 @@ std::unique_ptr< QgsAbstractGeometry > QgsMapToPixelSimplifier::simplifyGeometry lastX = x; lastY = y; } - - r.combineExtentWith( x, y ); } break; } @@ -300,8 +296,6 @@ std::unique_ptr< QgsAbstractGeometry > QgsMapToPixelSimplifier::simplifyGeometry hasLongSegments |= isLongSegment; } - - r.combineExtentWith( x, y ); } } } @@ -317,7 +311,7 @@ std::unique_ptr< QgsAbstractGeometry > QgsMapToPixelSimplifier::simplifyGeometry { // approximate the geometry's shape by its bounding box // (rect for linear ring / one segment for line string) - return generalizeWkbGeometryByBoundingBox( wkbType, geometry, r, isaLinearRing ); + return generalizeWkbGeometryByBoundingBox( wkbType, geometry, envelope, isaLinearRing ); } else { diff --git a/src/core/qgsnetworkaccessmanager.cpp b/src/core/qgsnetworkaccessmanager.cpp index 9f85a1c0cc..e39f627d3d 100644 --- a/src/core/qgsnetworkaccessmanager.cpp +++ b/src/core/qgsnetworkaccessmanager.cpp @@ -34,6 +34,7 @@ #include <QNetworkReply> #include <QThreadStorage> #include <QAuthenticator> +#include <QStandardPaths> #ifndef QT_NO_SSL #include <QSslConfiguration> @@ -390,8 +391,8 @@ void QgsNetworkAccessManager::setupDefaultProxyAndCache( Qt::ConnectionType conn QString cacheDirectory = settings.value( QStringLiteral( "cache/directory" ) ).toString(); if ( cacheDirectory.isEmpty() ) - cacheDirectory = QgsApplication::qgisSettingsDirPath() + "cache"; - qint64 cacheSize = settings.value( QStringLiteral( "cache/size" ), 50 * 1024 * 1024 ).toULongLong(); + cacheDirectory = QStandardPaths::writableLocation( QStandardPaths::CacheLocation ); + qint64 cacheSize = settings.value( QStringLiteral( "cache/size" ), 50 * 1024 * 1024 ).toLongLong(); newcache->setCacheDirectory( cacheDirectory ); newcache->setMaximumCacheSize( cacheSize ); QgsDebugMsgLevel( QStringLiteral( "cacheDirectory: %1" ).arg( newcache->cacheDirectory() ), 4 ); diff --git a/src/core/qgsofflineediting.cpp b/src/core/qgsofflineediting.cpp index 21e52e25e1..091b8570c7 100644 --- a/src/core/qgsofflineediting.cpp +++ b/src/core/qgsofflineediting.cpp @@ -835,6 +835,16 @@ QgsVectorLayer *QgsOfflineEditing::copyVectorLayer( QgsVectorLayer *layer, sqlit // copy style copySymbology( layer, newLayer ); + //remove constrainst of fields that use defaultValueClauses from provider on original + const auto fields = layer->fields(); + for ( const QgsField &field : fields ) + { + if ( !layer->dataProvider()->defaultValueClause( layer->fields().fieldOriginIndex( layer->fields().indexOf( field.name() ) ) ).isEmpty() ) + { + newLayer->removeFieldConstraint( newLayer->fields().indexOf( field.name() ), QgsFieldConstraints::ConstraintNotNull ); + } + } + QgsLayerTreeGroup *layerTreeRoot = QgsProject::instance()->layerTreeRoot(); // Find the parent group of the original layer QgsLayerTreeLayer *layerTreeLayer = layerTreeRoot->findLayer( layer->id() ); diff --git a/src/core/qgsogrutils.cpp b/src/core/qgsogrutils.cpp index d6f3ccc76e..fed6af3dc3 100644 --- a/src/core/qgsogrutils.cpp +++ b/src/core/qgsogrutils.cpp @@ -307,12 +307,100 @@ std::unique_ptr< QgsLineString > ogrGeometryToQgsLineString( OGRGeometryH geom ) return qgis::make_unique< QgsLineString>( x, y, z, m, wkbType == QgsWkbTypes::LineString25D ); } +QgsWkbTypes::Type QgsOgrUtils::ogrGeometryTypeToQgsWkbType( OGRwkbGeometryType ogrGeomType ) +{ + switch ( ogrGeomType ) + { + case wkbUnknown: return QgsWkbTypes::Type::Unknown; + case wkbPoint: return QgsWkbTypes::Type::Point; + case wkbLineString: return QgsWkbTypes::Type::LineString; + case wkbPolygon: return QgsWkbTypes::Type::Polygon; + case wkbMultiPoint: return QgsWkbTypes::Type::MultiPoint; + case wkbMultiLineString: return QgsWkbTypes::Type::MultiLineString; + case wkbMultiPolygon: return QgsWkbTypes::Type::MultiPolygon; + case wkbGeometryCollection: return QgsWkbTypes::Type::GeometryCollection; + case wkbCircularString: return QgsWkbTypes::Type::CircularString; + case wkbCompoundCurve: return QgsWkbTypes::Type::CompoundCurve; + case wkbCurvePolygon: return QgsWkbTypes::Type::CurvePolygon; + case wkbMultiCurve: return QgsWkbTypes::Type::MultiCurve; + case wkbMultiSurface: return QgsWkbTypes::Type::MultiSurface; + case wkbCurve: return QgsWkbTypes::Type::Unknown; // not an actual concrete type + case wkbSurface: return QgsWkbTypes::Type::Unknown; // not an actual concrete type + case wkbPolyhedralSurface: return QgsWkbTypes::Type::Unknown; // no actual matching + case wkbTIN: return QgsWkbTypes::Type::Unknown; // no actual matching + case wkbTriangle: return QgsWkbTypes::Type::Triangle; + + case wkbNone: return QgsWkbTypes::Type::NoGeometry; + case wkbLinearRing: return QgsWkbTypes::Type::LineString; // approximate match + + case wkbCircularStringZ: return QgsWkbTypes::Type::CircularStringZ; + case wkbCompoundCurveZ: return QgsWkbTypes::Type::CompoundCurveZ; + case wkbCurvePolygonZ: return QgsWkbTypes::Type::CurvePolygonZ; + case wkbMultiCurveZ: return QgsWkbTypes::Type::MultiCurveZ; + case wkbMultiSurfaceZ: return QgsWkbTypes::Type::MultiSurfaceZ; + case wkbCurveZ: return QgsWkbTypes::Type::Unknown; // not an actual concrete type + case wkbSurfaceZ: return QgsWkbTypes::Type::Unknown; // not an actual concrete type + case wkbPolyhedralSurfaceZ: return QgsWkbTypes::Type::Unknown; // no actual matching + case wkbTINZ: return QgsWkbTypes::Type::Unknown; // no actual matching + case wkbTriangleZ: return QgsWkbTypes::Type::TriangleZ; + + case wkbPointM: return QgsWkbTypes::Type::PointM; + case wkbLineStringM: return QgsWkbTypes::Type::LineStringM; + case wkbPolygonM: return QgsWkbTypes::Type::PolygonM; + case wkbMultiPointM: return QgsWkbTypes::Type::MultiPointM; + case wkbMultiLineStringM: return QgsWkbTypes::Type::MultiLineStringM; + case wkbMultiPolygonM: return QgsWkbTypes::Type::MultiPolygonM; + case wkbGeometryCollectionM: return QgsWkbTypes::Type::GeometryCollectionM; + case wkbCircularStringM: return QgsWkbTypes::Type::CircularStringM; + case wkbCompoundCurveM: return QgsWkbTypes::Type::CompoundCurveM; + case wkbCurvePolygonM: return QgsWkbTypes::Type::CurvePolygonM; + case wkbMultiCurveM: return QgsWkbTypes::Type::MultiCurveM; + case wkbMultiSurfaceM: return QgsWkbTypes::Type::MultiSurfaceM; + case wkbCurveM: return QgsWkbTypes::Type::Unknown; // not an actual concrete type + case wkbSurfaceM: return QgsWkbTypes::Type::Unknown; // not an actual concrete type + case wkbPolyhedralSurfaceM: return QgsWkbTypes::Type::Unknown; // no actual matching + case wkbTINM: return QgsWkbTypes::Type::Unknown; // no actual matching + case wkbTriangleM: return QgsWkbTypes::Type::TriangleM; + + case wkbPointZM: return QgsWkbTypes::Type::PointZM; + case wkbLineStringZM: return QgsWkbTypes::Type::LineStringZM; + case wkbPolygonZM: return QgsWkbTypes::Type::PolygonZM; + case wkbMultiPointZM: return QgsWkbTypes::Type::MultiPointZM; + case wkbMultiLineStringZM: return QgsWkbTypes::Type::MultiLineStringZM; + case wkbMultiPolygonZM: return QgsWkbTypes::Type::MultiPolygonZM; + case wkbGeometryCollectionZM: return QgsWkbTypes::Type::GeometryCollectionZM; + case wkbCircularStringZM: return QgsWkbTypes::Type::CircularStringZM; + case wkbCompoundCurveZM: return QgsWkbTypes::Type::CompoundCurveZM; + case wkbCurvePolygonZM: return QgsWkbTypes::Type::CurvePolygonZM; + case wkbMultiCurveZM: return QgsWkbTypes::Type::MultiCurveZM; + case wkbMultiSurfaceZM: return QgsWkbTypes::Type::MultiSurfaceZM; + case wkbCurveZM: return QgsWkbTypes::Type::Unknown; // not an actual concrete type + case wkbSurfaceZM: return QgsWkbTypes::Type::Unknown; // not an actual concrete type + case wkbPolyhedralSurfaceZM: return QgsWkbTypes::Type::Unknown; // no actual matching + case wkbTINZM: return QgsWkbTypes::Type::Unknown; // no actual matching + case wkbTriangleZM: return QgsWkbTypes::Type::TriangleZM; + + case wkbPoint25D: return QgsWkbTypes::Type::PointZ; + case wkbLineString25D: return QgsWkbTypes::Type::LineStringZ; + case wkbPolygon25D: return QgsWkbTypes::Type::PolygonZ; + case wkbMultiPoint25D: return QgsWkbTypes::Type::MultiPointZ; + case wkbMultiLineString25D: return QgsWkbTypes::Type::MultiLineStringZ; + case wkbMultiPolygon25D: return QgsWkbTypes::Type::MultiPolygonZ; + case wkbGeometryCollection25D: return QgsWkbTypes::Type::GeometryCollectionZ; + } + + // should not reach that point normally + return QgsWkbTypes::Type::Unknown; +} + QgsGeometry QgsOgrUtils::ogrGeometryToQgsGeometry( OGRGeometryH geom ) { if ( !geom ) return QgsGeometry(); - QgsWkbTypes::Type wkbType = static_cast<QgsWkbTypes::Type>( OGR_G_GetGeometryType( geom ) ); + const auto ogrGeomType = OGR_G_GetGeometryType( geom ); + QgsWkbTypes::Type wkbType = ogrGeometryTypeToQgsWkbType( ogrGeomType ); + // optimised case for some geometry classes, avoiding wkb conversion on OGR/QGIS sides // TODO - extend to other classes! switch ( QgsWkbTypes::flatType( wkbType ) ) @@ -334,6 +422,19 @@ QgsGeometry QgsOgrUtils::ogrGeometryToQgsGeometry( OGRGeometryH geom ) // Fallback to inefficient WKB conversions + if ( wkbFlatten( wkbType ) == wkbGeometryCollection ) + { + // Shapefile MultiPatch can be reported as GeometryCollectionZ of TINZ + if ( OGR_G_GetGeometryCount( geom ) >= 1 && + wkbFlatten( OGR_G_GetGeometryType( OGR_G_GetGeometryRef( geom, 0 ) ) ) == wkbTIN ) + { + auto newGeom = OGR_G_ForceToMultiPolygon( OGR_G_Clone( geom ) ); + auto ret = ogrGeometryToQgsGeometry( newGeom ); + OGR_G_DestroyGeometry( newGeom ); + return ret; + } + } + // get the wkb representation int memorySize = OGR_G_WkbSize( geom ); unsigned char *wkb = new unsigned char[memorySize]; diff --git a/src/core/qgsogrutils.h b/src/core/qgsogrutils.h index f9f5940e15..21d31c6688 100644 --- a/src/core/qgsogrutils.h +++ b/src/core/qgsogrutils.h @@ -247,6 +247,13 @@ class CORE_EXPORT QgsOgrUtils * \since QGIS 3.2 */ static QStringList cStringListToQStringList( char **stringList ); + + /** + * Converts a OGRwkbGeometryType to QgsWkbTypes::Type + * + * \since QGIS 3.4.9 + */ + static QgsWkbTypes::Type ogrGeometryTypeToQgsWkbType( OGRwkbGeometryType ogrGeomType ); }; #endif // QGSOGRUTILS_H diff --git a/src/core/qgspallabeling.cpp b/src/core/qgspallabeling.cpp index c1c455d718..d2fed0cb7d 100644 --- a/src/core/qgspallabeling.cpp +++ b/src/core/qgspallabeling.cpp @@ -59,6 +59,7 @@ #include "qgssymbollayerutils.h" #include "qgsmaptopixelgeometrysimplifier.h" #include "qgscurvepolygon.h" +#include "qgsgeometrycollection.h" #include <QMessageBox> @@ -191,7 +192,7 @@ void QgsPalLayerSettings::initPropertyDefinitions() }, { QgsPalLayerSettings::OffsetXY, QgsPropertyDefinition( "OffsetXY", QObject::tr( "Offset" ), QgsPropertyDefinition::Offset, origin ) }, { QgsPalLayerSettings::OffsetUnits, QgsPropertyDefinition( "OffsetUnits", QObject::tr( "Offset units" ), QgsPropertyDefinition::RenderUnits, origin ) }, - { QgsPalLayerSettings::LabelDistance, QgsPropertyDefinition( "LabelDistance", QObject::tr( "Label distance" ), QgsPropertyDefinition::DoublePositive, origin ) }, + { QgsPalLayerSettings::LabelDistance, QgsPropertyDefinition( "LabelDistance", QObject::tr( "Label distance" ), QgsPropertyDefinition::Double, origin ) }, { QgsPalLayerSettings::DistanceUnits, QgsPropertyDefinition( "DistanceUnits", QObject::tr( "Label distance units" ), QgsPropertyDefinition::RenderUnits, origin ) }, { QgsPalLayerSettings::OffsetRotation, QgsPropertyDefinition( "OffsetRotation", QObject::tr( "Offset rotation" ), QgsPropertyDefinition::Rotation, origin ) }, { QgsPalLayerSettings::CurvedCharAngleInOut, QgsPropertyDefinition( "CurvedCharAngleInOut", QgsPropertyDefinition::DataTypeString, QObject::tr( "Curved character angles" ), QObject::tr( "double coord [<b>in,out</b> as 20.0-60.0,20.0-95.0]" ), origin ) }, @@ -208,6 +209,11 @@ void QgsPalLayerSettings::initPropertyDefinitions() "<b>BL</b>=Bottom left|<b>BSL</b>=Bottom, slightly left|<b>B</b>=Bottom middle|<br>" "<b>BSR</b>=Bottom, slightly right|<b>BR</b>=Bottom right]" ), origin ) }, + { + QgsPalLayerSettings::LinePlacementOptions, QgsPropertyDefinition( "LinePlacementFlags", QgsPropertyDefinition::DataTypeString, QObject::tr( "Line placement options" ), QObject::tr( "Comma separated list of placement options<br>" ) + + QStringLiteral( "[<b>OL</b>=On line|<b>AL</b>=Above line|<b>BL</b>=Below line|<br>" + "<b>LO</b>=Respect line orientation]" ), origin ) + }, { QgsPalLayerSettings::PositionX, QgsPropertyDefinition( "PositionX", QObject::tr( "Position (X)" ), QgsPropertyDefinition::Double, origin ) }, { QgsPalLayerSettings::PositionY, QgsPropertyDefinition( "PositionY", QObject::tr( "Position (Y)" ), QgsPropertyDefinition::Double, origin ) }, { QgsPalLayerSettings::Hali, QgsPropertyDefinition( "Hali", QgsPropertyDefinition::DataTypeString, QObject::tr( "Horizontal alignment" ), QObject::tr( "string " ) + "[<b>Left</b>|<b>Center</b>|<b>Right</b>]", origin ) }, @@ -1503,9 +1509,9 @@ void QgsPalLayerSettings::registerFeature( QgsFeature &f, QgsRenderContext &cont if ( geom.type() == QgsWkbTypes::PolygonGeometry && fitInPolygonOnly ) { permissibleZone = geom; - if ( QgsPalLabeling::geometryRequiresPreparation( permissibleZone, context, ct, doClip ? extentGeom : QgsGeometry() ) ) + if ( QgsPalLabeling::geometryRequiresPreparation( permissibleZone, context, ct, doClip ? extentGeom : QgsGeometry(), mergeLines ) ) { - permissibleZone = QgsPalLabeling::prepareGeometry( permissibleZone, context, ct, doClip ? extentGeom : QgsGeometry() ); + permissibleZone = QgsPalLabeling::prepareGeometry( permissibleZone, context, ct, doClip ? extentGeom : QgsGeometry(), mergeLines ); } } @@ -1518,9 +1524,9 @@ void QgsPalLayerSettings::registerFeature( QgsFeature &f, QgsRenderContext &cont } geos::unique_ptr geos_geom_clone; - if ( QgsPalLabeling::geometryRequiresPreparation( geom, context, ct, doClip ? extentGeom : QgsGeometry() ) ) + if ( QgsPalLabeling::geometryRequiresPreparation( geom, context, ct, doClip ? extentGeom : QgsGeometry(), mergeLines ) ) { - geom = QgsPalLabeling::prepareGeometry( geom, context, ct, doClip ? extentGeom : QgsGeometry() ); + geom = QgsPalLabeling::prepareGeometry( geom, context, ct, doClip ? extentGeom : QgsGeometry(), mergeLines ); if ( geom.isNull() ) return; @@ -1529,9 +1535,9 @@ void QgsPalLayerSettings::registerFeature( QgsFeature &f, QgsRenderContext &cont if ( isObstacle ) { - if ( !obstacleGeometry.isNull() && QgsPalLabeling::geometryRequiresPreparation( obstacleGeometry, context, ct, doClip ? extentGeom : QgsGeometry() ) ) + if ( !obstacleGeometry.isNull() && QgsPalLabeling::geometryRequiresPreparation( obstacleGeometry, context, ct, doClip ? extentGeom : QgsGeometry(), mergeLines ) ) { - obstacleGeometry = QgsGeometry( QgsPalLabeling::prepareGeometry( obstacleGeometry, context, ct, doClip ? extentGeom : QgsGeometry() ) ); + obstacleGeometry = QgsGeometry( QgsPalLabeling::prepareGeometry( obstacleGeometry, context, ct, doClip ? extentGeom : QgsGeometry(), mergeLines ) ); } } @@ -1927,7 +1933,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature &f, QgsRenderContext &cont // candidates are created just offset from a border and avoids candidates being incorrectly flagged as colliding with neighbours if ( placement == QgsPalLayerSettings::Line || placement == QgsPalLayerSettings::Curved || placement == QgsPalLayerSettings::PerimeterCurved ) { - distance = std::max( distance, 1.0 ); + distance = ( distance < 0 ? -1 : 1 ) * std::max( std::fabs( distance ), 1.0 ); } if ( !qgsDoubleNear( distance, 0.0 ) ) @@ -1941,6 +1947,15 @@ void QgsPalLayerSettings::registerFeature( QgsFeature &f, QgsRenderContext &cont ( *labelFeature )->setHasFixedQuadrant( true ); } + pal::LineArrangementFlags featureArrangementFlags = static_cast< pal::LineArrangementFlags >( placementFlags ); + context.expressionContext().setOriginalValueVariable( QgsLabelingUtils::encodeLinePlacementFlags( featureArrangementFlags ) ); + const QString dataDefinedLineArrangement = mDataDefinedProperties.valueAsString( QgsPalLayerSettings::LinePlacementOptions, context.expressionContext() ); + if ( !dataDefinedLineArrangement.isEmpty() ) + { + featureArrangementFlags = QgsLabelingUtils::decodeLinePlacementFlags( dataDefinedLineArrangement ); + } + ( *labelFeature )->setArrangementFlags( featureArrangementFlags ); + // data defined z-index? context.expressionContext().setOriginalValueVariable( zIndex ); double z = mDataDefinedProperties.valueAsDouble( QgsPalLayerSettings::ZIndex, context.expressionContext(), zIndex ); @@ -2028,9 +2043,9 @@ void QgsPalLayerSettings::registerObstacleFeature( QgsFeature &f, QgsRenderConte geos::unique_ptr geos_geom_clone; std::unique_ptr<QgsGeometry> scopedPreparedGeom; - if ( QgsPalLabeling::geometryRequiresPreparation( geom, context, ct, extentGeom ) ) + if ( QgsPalLabeling::geometryRequiresPreparation( geom, context, ct, extentGeom, mergeLines ) ) { - geom = QgsPalLabeling::prepareGeometry( geom, context, ct, extentGeom ); + geom = QgsPalLabeling::prepareGeometry( geom, context, ct, extentGeom, mergeLines ); } geos_geom_clone = QgsGeos::asGeos( geom ); @@ -2842,13 +2857,18 @@ bool QgsPalLabeling::staticWillUseLayer( QgsVectorLayer *layer ) } -bool QgsPalLabeling::geometryRequiresPreparation( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry ) +bool QgsPalLabeling::geometryRequiresPreparation( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry, bool mergeLines ) { if ( geometry.isNull() ) { return false; } + if ( geometry.type() == QgsWkbTypes::LineGeometry && geometry.isMultipart() && mergeLines ) + { + return true; + } + //requires reprojection if ( ct.isValid() && !ct.isShortCircuited() ) return true; @@ -2914,7 +2934,7 @@ QStringList QgsPalLabeling::splitToGraphemes( const QString &text ) return graphemes; } -QgsGeometry QgsPalLabeling::prepareGeometry( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry ) +QgsGeometry QgsPalLabeling::prepareGeometry( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry, bool mergeLines ) { if ( geometry.isNull() ) { @@ -2924,6 +2944,11 @@ QgsGeometry QgsPalLabeling::prepareGeometry( const QgsGeometry &geometry, QgsRen //don't modify the feature's geometry so that geometry based expressions keep working QgsGeometry geom = geometry; + if ( geom.type() == QgsWkbTypes::LineGeometry && geom.isMultipart() && mergeLines ) + { + geom = geom.mergeLines(); + } + //reproject the geometry if necessary if ( ct.isValid() && !ct.isShortCircuited() ) { @@ -2950,22 +2975,7 @@ QgsGeometry QgsPalLabeling::prepareGeometry( const QgsGeometry &geometry, QgsRen const QgsMapToPixel &m2p = context.mapToPixel(); if ( !qgsDoubleNear( m2p.mapRotation(), 0 ) ) { - QgsPointXY center = context.extent().center(); - - if ( ct.isValid() && !ct.isShortCircuited() ) - { - try - { - center = ct.transform( center ); - } - catch ( QgsCsException &cse ) - { - Q_UNUSED( cse ); - QgsDebugMsgLevel( QStringLiteral( "Ignoring feature due to transformation exception" ), 4 ); - return QgsGeometry(); - } - } - + QgsPointXY center = context.mapExtent().center(); if ( geom.rotate( m2p.mapRotation(), center ) ) { QgsDebugMsg( QStringLiteral( "Error rotating geometry" ).arg( geom.asWkt() ) ); @@ -2974,15 +2984,37 @@ QgsGeometry QgsPalLabeling::prepareGeometry( const QgsGeometry &geometry, QgsRen } // fix invalid polygons - if ( geom.type() == QgsWkbTypes::PolygonGeometry && !geom.isGeosValid() ) + if ( geom.type() == QgsWkbTypes::PolygonGeometry ) { - QgsGeometry bufferGeom = geom.buffer( 0, 0 ); - if ( bufferGeom.isNull() ) + if ( geom.isMultipart() ) { - QgsDebugMsg( QStringLiteral( "Could not repair geometry: %1" ).arg( bufferGeom.lastError() ) ); - return QgsGeometry(); + // important -- we need to treat ever part in isolation here. We can't test the validity of the whole geometry + // at once, because touching parts would result in an invalid geometry, and buffering this "dissolves" the parts. + // because the actual label engine treats parts as separate entities, we aren't bound by the usual "touching parts are invalid" rule + // see https://github.com/qgis/QGIS/issues/26763 + QVector< QgsGeometry> parts; + parts.reserve( qgsgeometry_cast< const QgsGeometryCollection * >( geom.constGet() )->numGeometries() ); + for ( auto it = geom.const_parts_begin(); it != geom.const_parts_end(); ++it ) + { + QgsGeometry partGeom( ( *it )->clone() ); + if ( !partGeom.isGeosValid() ) + { + partGeom = partGeom.buffer( 0, 0 ); + } + parts.append( partGeom ); + } + geom = QgsGeometry::collectGeometry( parts ); + } + else if ( !geom.isGeosValid() ) + { + QgsGeometry bufferGeom = geom.buffer( 0, 0 ); + if ( bufferGeom.isNull() ) + { + QgsDebugMsg( QStringLiteral( "Could not repair geometry: %1" ).arg( bufferGeom.lastError() ) ); + return QgsGeometry(); + } + geom = bufferGeom; } - geom = bufferGeom; } if ( !clipGeometry.isNull() && @@ -3512,15 +3544,11 @@ void QgsPalLabeling::drawLabelCandidateRect( pal::LabelPosition *lp, QPainter *p } QgsLabelingResults::QgsLabelingResults() + : mLabelSearchTree( qgis::make_unique< QgsLabelSearchTree >() ) { - mLabelSearchTree = new QgsLabelSearchTree(); } -QgsLabelingResults::~QgsLabelingResults() -{ - delete mLabelSearchTree; - mLabelSearchTree = nullptr; -} +QgsLabelingResults::~QgsLabelingResults() = default; QList<QgsLabelPosition> QgsLabelingResults::labelsAtPosition( const QgsPointXY &p ) const { @@ -3557,3 +3585,8 @@ QList<QgsLabelPosition> QgsLabelingResults::labelsWithinRect( const QgsRectangle return positions; } + +void QgsLabelingResults::setMapSettings( const QgsMapSettings &settings ) +{ + mLabelSearchTree->setMapSettings( settings ); +} diff --git a/src/core/qgspallabeling.h b/src/core/qgspallabeling.h index db3b93314e..ddce16f988 100644 --- a/src/core/qgspallabeling.h +++ b/src/core/qgspallabeling.h @@ -80,11 +80,31 @@ class QgsExpressionContext; class CORE_EXPORT QgsLabelPosition { public: - QgsLabelPosition( int id, double r, const QVector< QgsPointXY > &corners, const QgsRectangle &rect, double w, double h, const QString &layer, const QString &labeltext, const QFont &labelfont, bool upside_down, bool diagram = false, bool pinned = false, const QString &providerId = QString() ) + + /** + * Constructor for QgsLabelPosition. + * \param id associated feature ID + * \param r label rotation in degrees clockwise + * \param corners corner points of label bounding box, in map units + * \param rect label bounding box, in map units + * \param w width of label, in map units + * \param h height of label, in map units + * \param layer ID of associated map layer + * \param labeltext text rendered for label + * \param labelfont font used to render label + * \param upside_down TRUE if label is upside down + * \param diagram TRUE if label is a diagram + * \param pinned TRUE if label has pinned placement + * \param providerId ID of associated label provider + * \param labelGeometry polygon geometry of label boundary + */ + QgsLabelPosition( QgsFeatureId id, double r, const QVector< QgsPointXY > &corners, const QgsRectangle &rect, double w, double h, const QString &layer, const QString &labeltext, const QFont &labelfont, bool upside_down, bool diagram = false, bool pinned = false, const QString &providerId = QString(), + const QgsGeometry &labelGeometry = QgsGeometry() ) : featureId( id ) , rotation( r ) , cornerPoints( corners ) , labelRect( rect ) + , labelGeometry( labelGeometry ) , width( w ) , height( h ) , layerID( layer ) @@ -99,19 +119,69 @@ class CORE_EXPORT QgsLabelPosition //! Constructor for QgsLabelPosition QgsLabelPosition() = default; - int featureId = -1; + /** + * ID of feature associated with this label. + */ + QgsFeatureId featureId = FID_NULL; + + /** + * Rotation of label, in degrees clockwise. + */ double rotation = 0; + QVector< QgsPointXY > cornerPoints; QgsRectangle labelRect; + + /** + * A polygon geometry representing the label's bounds in map coordinates. + * \since QGIS 3.4.9 + */ + QgsGeometry labelGeometry; + + /** + * Width of label bounding box, in map units. + */ double width = 0; + + /** + * Heeght of label bounding box, in map units. + */ double height = 0; + + /** + * ID of associated map layer. + */ QString layerID; + + /** + * String shown in label. + */ QString labelText; + + /** + * Font which the label is rendered using. + */ QFont labelFont; + + /** + * True if label is upside down. + */ bool upsideDown = false; + + /** + * True if label is a diagram. + */ bool isDiagram = false; + + /** + * True if label position has been pinned. + */ bool isPinned = false; - //! \since QGIS 2.14 + + /** + * ID of the associated label provider. + * \since QGIS 2.14 + */ QString providerID; }; @@ -348,6 +418,7 @@ class CORE_EXPORT QgsPalLayerSettings RepeatDistanceUnit = 86, Priority = 87, PredefinedPositionOrder = 91, + LinePlacementOptions = 99, //!< Line placement flags // rendering ScaleVisibility = 23, @@ -958,12 +1029,18 @@ class CORE_EXPORT QgsLabelingResults //! Returns infos about labels within a given (map) rectangle QList<QgsLabelPosition> labelsWithinRect( const QgsRectangle &r ) const; + /** + * Sets the map \a settings associated with the labeling run. + * \since QGIS 3.4.8 + */ + void setMapSettings( const QgsMapSettings &settings ); + private: #ifdef SIP_RUN QgsLabelingResults( const QgsLabelingResults & ); #endif - QgsLabelSearchTree *mLabelSearchTree = nullptr; + std::unique_ptr< QgsLabelSearchTree > mLabelSearchTree; friend class QgsPalLabeling; friend class QgsVectorLayerLabelProvider; @@ -993,10 +1070,11 @@ class CORE_EXPORT QgsPalLabeling * \param context render context * \param ct coordinate transform, or invalid transform if no transformation required * \param clipGeometry geometry to clip features to, if applicable + * \param mergeLines TRUE if touching lines from this layer will be merged and treated as single features during labeling * \returns prepared geometry * \since QGIS 2.9 */ - static QgsGeometry prepareGeometry( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry() ) SIP_FACTORY; + static QgsGeometry prepareGeometry( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry(), bool mergeLines = false ) SIP_FACTORY; /** * Checks whether a geometry requires preparation before registration with PAL @@ -1004,10 +1082,11 @@ class CORE_EXPORT QgsPalLabeling * \param context render context * \param ct coordinate transform, or invalid transform if no transformation required * \param clipGeometry geometry to clip features to, if applicable + * \param mergeLines TRUE if touching lines from this layer will be merged and treated as single features during labeling * \returns true if geometry requires preparation * \since QGIS 2.9 */ - static bool geometryRequiresPreparation( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry() ); + static bool geometryRequiresPreparation( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry(), bool mergeLines = false ); /** * Splits a \a text string to a list of separate lines, using a specified wrap character (\a wrapCharacter). diff --git a/src/core/qgspointlocator.cpp b/src/core/qgspointlocator.cpp index d894afd5ed..0aba52bc9c 100644 --- a/src/core/qgspointlocator.cpp +++ b/src/core/qgspointlocator.cpp @@ -667,13 +667,17 @@ bool QgsPointLocator::rebuildIndex( int maxFeaturesToIndex ) } } - SpatialIndex::Region r( rect2region( f.geometry().boundingBox() ) ); - dataList << new RTree::Data( 0, nullptr, r, f.id() ); + const QgsRectangle bbox = f.geometry().boundingBox(); + if ( bbox.isFinite() ) + { + SpatialIndex::Region r( rect2region( bbox ) ); + dataList << new RTree::Data( 0, nullptr, r, f.id() ); - if ( mGeoms.contains( f.id() ) ) - delete mGeoms.take( f.id() ); - mGeoms[f.id()] = new QgsGeometry( f.geometry() ); - ++indexedCount; + if ( mGeoms.contains( f.id() ) ) + delete mGeoms.take( f.id() ); + mGeoms[f.id()] = new QgsGeometry( f.geometry() ); + ++indexedCount; + } if ( maxFeaturesToIndex != -1 && indexedCount > maxFeaturesToIndex ) { @@ -776,8 +780,8 @@ void QgsPointLocator::onFeatureAdded( QgsFeatureId fid ) } } - QgsRectangle bbox = f.geometry().boundingBox(); - if ( !bbox.isNull() ) + const QgsRectangle bbox = f.geometry().boundingBox(); + if ( bbox.isFinite() ) { SpatialIndex::Region r( rect2region( bbox ) ); mRTree->insertData( 0, nullptr, r, f.id() ); diff --git a/src/core/qgsrendercontext.h b/src/core/qgsrendercontext.h index 8faf46f9ca..b90426d9f9 100644 --- a/src/core/qgsrendercontext.h +++ b/src/core/qgsrendercontext.h @@ -250,6 +250,11 @@ class CORE_EXPORT QgsRenderContext */ QgsRectangle mapExtent() const { return mOriginalMapExtent; } + /** + * Returns the context's map to pixel transform, which transforms between map coordinates and device coordinates. + * + * \see setMapToPixel() + */ const QgsMapToPixel &mapToPixel() const {return mMapToPixel;} /** @@ -260,8 +265,20 @@ class CORE_EXPORT QgsRenderContext */ double scaleFactor() const {return mScaleFactor;} + /** + * Returns TRUE if the rendering operation has been stopped and any ongoing + * rendering should be canceled immediately. + * + * \see setRenderingStopped() + */ bool renderingStopped() const {return mRenderingStopped;} + /** + * Returns TRUE if rendering operations should use vector operations instead + * of any faster raster shortcuts. + * + * \see setForceVectorOutput() + */ bool forceVectorOutput() const; /** @@ -274,6 +291,11 @@ class CORE_EXPORT QgsRenderContext */ void setUseAdvancedEffects( bool enabled ); + /** + * Returns TRUE if edit markers should be drawn during the render operation. + * + * \see setDrawEditingInformation() + */ bool drawEditingInformation() const; /** @@ -289,6 +311,11 @@ class CORE_EXPORT QgsRenderContext */ QgsLabelingEngine *labelingEngine() const { return mLabelingEngine; } SIP_SKIP + /** + * Returns the color to use when rendering selected features. + * + * \see setSelectionColor() + */ QColor selectionColor() const { return mSelectionColor; } /** @@ -314,6 +341,11 @@ class CORE_EXPORT QgsRenderContext */ void setCoordinateTransform( const QgsCoordinateTransform &t ); + /** + * Sets the context's map to pixel transform, which transforms between map coordinates and device coordinates. + * + * \see mapToPixel() + */ void setMapToPixel( const QgsMapToPixel &mtp ) {mMapToPixel = mtp;} /** @@ -342,8 +374,19 @@ class CORE_EXPORT QgsRenderContext */ void setMapExtent( const QgsRectangle &extent ) { mOriginalMapExtent = extent; } + /** + * Sets whether edit markers should be drawn during the render operation. + * + * \see drawEditingInformation() + */ void setDrawEditingInformation( bool b ); + /** + * Sets whether the rendering operation has been \a stopped and any ongoing + * rendering should be canceled immediately. + * + * \see renderingStopped() + */ void setRenderingStopped( bool stopped ) {mRenderingStopped = stopped;} /** @@ -376,6 +419,12 @@ class CORE_EXPORT QgsRenderContext */ void setPainter( QPainter *p ) {mPainter = p;} + /** + * Sets whether rendering operations should use vector operations instead + * of any faster raster shortcuts. + * + * \see forceVectorOutput() + */ void setForceVectorOutput( bool force ); /** @@ -383,6 +432,12 @@ class CORE_EXPORT QgsRenderContext * \note not available in Python bindings */ void setLabelingEngine( QgsLabelingEngine *engine2 ) { mLabelingEngine = engine2; } SIP_SKIP + + /** + * Sets the \a color to use when rendering selected features. + * + * \see selectionColor() + */ void setSelectionColor( const QColor &color ) { mSelectionColor = color; } /** diff --git a/src/core/qgssettings.h b/src/core/qgssettings.h index 6657853fbf..f57d20e770 100644 --- a/src/core/qgssettings.h +++ b/src/core/qgssettings.h @@ -248,7 +248,7 @@ class CORE_EXPORT QgsSettings : public QObject if ( metaEnum.isValid() ) { // read as string - QByteArray ba = value( key, metaEnum.valueToKey( defaultValue ) ).toString().toUtf8(); + QByteArray ba = value( key, metaEnum.valueToKey( defaultValue ), section ).toString().toUtf8(); const char *vs = ba.data(); v = static_cast<T>( metaEnum.keyToValue( vs, &ok ) ); if ( ok ) diff --git a/src/core/qgsspatialindex.cpp b/src/core/qgsspatialindex.cpp index 510af48fac..5b3fbf31f9 100644 --- a/src/core/qgsspatialindex.cpp +++ b/src/core/qgsspatialindex.cpp @@ -296,6 +296,10 @@ bool QgsSpatialIndex::featureInfo( const QgsFeature &f, QgsRectangle &rect, QgsF id = f.id(); rect = f.geometry().boundingBox(); + + if ( !rect.isFinite() ) + return false; + return true; } diff --git a/src/core/qgsstringutils.cpp b/src/core/qgsstringutils.cpp index ea96fb2ce5..7c41223159 100644 --- a/src/core/qgsstringutils.cpp +++ b/src/core/qgsstringutils.cpp @@ -409,7 +409,7 @@ QString QgsStringUtils::insertLinks( const QString &string, bool *foundLinks ) // http://alanstorm.com/url_regex_explained // note - there's more robust implementations available, but we need one which works within the limitation of QRegExp static QRegExp urlRegEx( "(\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~\\s]|/))))" ); - static QRegExp protoRegEx( "^(?:f|ht)tps?://" ); + static QRegExp protoRegEx( "^(?:f|ht)tps?://|file://" ); static QRegExp emailRegEx( "([\\w._%+-]+@[\\w.-]+\\.[A-Za-z]+)" ); int offset = 0; diff --git a/src/core/qgsvectorfilewriter.cpp b/src/core/qgsvectorfilewriter.cpp index dd0f48d221..251f53cb2f 100644 --- a/src/core/qgsvectorfilewriter.cpp +++ b/src/core/qgsvectorfilewriter.cpp @@ -425,7 +425,51 @@ void QgsVectorFileWriter::init( QString vectorFileName, { mLayer = OGR_DS_CreateLayer( mDS.get(), layerName.toUtf8().constData(), mOgrRef, wkbType, options ); if ( newLayer && mLayer ) + { *newLayer = OGR_L_GetName( mLayer ); + if ( driverName == QLatin1String( "GPX" ) ) + { + // See logic in GDAL ogr/ogrsf_frmts/gpx/ogrgpxdatasource.cpp ICreateLayer() + switch ( QgsWkbTypes::flatType( geometryType ) ) + { + case QgsWkbTypes::Point: + { + if ( !EQUAL( layerName.toUtf8().constData(), "track_points" ) && + !EQUAL( layerName.toUtf8().constData(), "route_points" ) ) + { + *newLayer = QStringLiteral( "waypoints" ); + } + } + break; + + case QgsWkbTypes::LineString: + { + const char *pszForceGPXTrack + = CSLFetchNameValue( options, "FORCE_GPX_TRACK" ); + if ( pszForceGPXTrack && CPLTestBool( pszForceGPXTrack ) ) + *newLayer = QStringLiteral( "tracks" ); + else + *newLayer = QStringLiteral( "routes" ); + + } + break; + + case QgsWkbTypes::MultiLineString: + { + const char *pszForceGPXRoute + = CSLFetchNameValue( options, "FORCE_GPX_ROUTE" ); + if ( pszForceGPXRoute && CPLTestBool( pszForceGPXRoute ) ) + *newLayer = QStringLiteral( "routes" ); + else + *newLayer = QStringLiteral( "tracks" ); + } + break; + + default: + break; + } + } + } } else if ( driverName == QLatin1String( "DGN" ) ) { diff --git a/src/core/qgsvectorlayerdiagramprovider.cpp b/src/core/qgsvectorlayerdiagramprovider.cpp index 70ecdfe039..6118757624 100644 --- a/src/core/qgsvectorlayerdiagramprovider.cpp +++ b/src/core/qgsvectorlayerdiagramprovider.cpp @@ -43,7 +43,6 @@ void QgsVectorLayerDiagramProvider::init() mName = mLayerId; mPriority = 1 - mSettings.priority() / 10.0; // convert 0..10 --> 1..0 mPlacement = QgsPalLayerSettings::Placement( mSettings.placement() ); - mLinePlacementFlags = mSettings.linePlacementFlags(); } diff --git a/src/core/qgsvectorlayerlabelprovider.cpp b/src/core/qgsvectorlayerlabelprovider.cpp index 075d8984b1..f42a553c92 100644 --- a/src/core/qgsvectorlayerlabelprovider.cpp +++ b/src/core/qgsvectorlayerlabelprovider.cpp @@ -61,7 +61,6 @@ QgsVectorLayerLabelProvider::QgsVectorLayerLabelProvider( QgsVectorLayer *layer, void QgsVectorLayerLabelProvider::init() { mPlacement = mSettings.placement; - mLinePlacementFlags = mSettings.placementFlags; mFlags = Flags(); if ( mSettings.drawLabels ) mFlags |= DrawLabels; diff --git a/src/core/raster/qgsrasterdataprovider.cpp b/src/core/raster/qgsrasterdataprovider.cpp index e87cac478c..bf43d84fe6 100644 --- a/src/core/raster/qgsrasterdataprovider.cpp +++ b/src/core/raster/qgsrasterdataprovider.cpp @@ -46,7 +46,7 @@ QgsRasterBlock *QgsRasterDataProvider::block( int bandNo, QgsRectangle const &b QgsDebugMsgLevel( QStringLiteral( "bandNo = %1 width = %2 height = %3" ).arg( bandNo ).arg( width ).arg( height ), 4 ); QgsDebugMsgLevel( QStringLiteral( "boundingBox = %1" ).arg( boundingBox.toString() ), 4 ); - QgsRasterBlock *block = new QgsRasterBlock( dataType( bandNo ), width, height ); + std::unique_ptr< QgsRasterBlock > block = qgis::make_unique< QgsRasterBlock >( dataType( bandNo ), width, height ); if ( sourceHasNoDataValue( bandNo ) && useSourceNoDataValue( bandNo ) ) { block->setNoDataValue( sourceNoDataValue( bandNo ) ); @@ -55,7 +55,7 @@ QgsRasterBlock *QgsRasterDataProvider::block( int bandNo, QgsRectangle const &b if ( block->isEmpty() ) { QgsDebugMsg( QStringLiteral( "Couldn't create raster block" ) ); - return block; + return block.release(); } // Read necessary extent only @@ -65,7 +65,7 @@ QgsRasterBlock *QgsRasterDataProvider::block( int bandNo, QgsRectangle const &b { QgsDebugMsg( QStringLiteral( "Extent outside provider extent" ) ); block->setIsNoData(); - return block; + return block.release(); } double xRes = boundingBox.width() / width; @@ -112,7 +112,7 @@ QgsRasterBlock *QgsRasterDataProvider::block( int bandNo, QgsRectangle const &b { // Should not happen QgsDebugMsg( QStringLiteral( "Row or column limits out of range" ) ); - return block; + return block.release(); } // If lower source resolution is used, the extent must beS aligned to original @@ -139,13 +139,18 @@ QgsRasterBlock *QgsRasterDataProvider::block( int bandNo, QgsRectangle const &b QgsDebugMsgLevel( QStringLiteral( "Reading smaller block tmpWidth = %1 height = %2" ).arg( tmpWidth ).arg( tmpHeight ), 4 ); QgsDebugMsgLevel( QStringLiteral( "tmpExtent = %1" ).arg( tmpExtent.toString() ), 4 ); - QgsRasterBlock *tmpBlock = new QgsRasterBlock( dataType( bandNo ), tmpWidth, tmpHeight ); + std::unique_ptr< QgsRasterBlock > tmpBlock = qgis::make_unique< QgsRasterBlock >( dataType( bandNo ), tmpWidth, tmpHeight ); if ( sourceHasNoDataValue( bandNo ) && useSourceNoDataValue( bandNo ) ) { tmpBlock->setNoDataValue( sourceNoDataValue( bandNo ) ); } - readBlock( bandNo, tmpExtent, tmpWidth, tmpHeight, tmpBlock->bits(), feedback ); + if ( !readBlock( bandNo, tmpExtent, tmpWidth, tmpHeight, tmpBlock->bits(), feedback ) ) + { + QgsDebugMsg( QStringLiteral( "Error occurred while reading block" ) ); + block->setIsNoData(); + return block.release(); + } int pixelSize = dataTypeSize( bandNo ); @@ -168,8 +173,7 @@ QgsRasterBlock *QgsRasterDataProvider::block( int bandNo, QgsRectangle const &b { QgsDebugMsg( QStringLiteral( "Source row or column limits out of range" ) ); block->setIsNoData(); // so that the problem becomes obvious and fixed - delete tmpBlock; - return block; + return block.release(); } qgssize tmpIndex = static_cast< qgssize >( tmpRow ) * static_cast< qgssize >( tmpWidth ) + tmpCol; @@ -190,19 +194,22 @@ QgsRasterBlock *QgsRasterDataProvider::block( int bandNo, QgsRectangle const &b memcpy( bits, tmpBits, pixelSize ); } } - - delete tmpBlock; } else { - readBlock( bandNo, boundingBox, width, height, block->bits(), feedback ); + if ( !readBlock( bandNo, boundingBox, width, height, block->bits(), feedback ) ) + { + QgsDebugMsg( QStringLiteral( "Error occurred while reading block" ) ); + block->setIsNoData(); + return block.release(); + } } // apply scale and offset block->applyScaleOffset( bandScale( bandNo ), bandOffset( bandNo ) ); // apply user no data values block->applyNoDataValues( userNoDataValues( bandNo ) ); - return block; + return block.release(); } QgsRasterDataProvider::QgsRasterDataProvider() diff --git a/src/core/raster/qgsrasterdataprovider.h b/src/core/raster/qgsrasterdataprovider.h index 630b8a0812..6cb34b983b 100644 --- a/src/core/raster/qgsrasterdataprovider.h +++ b/src/core/raster/qgsrasterdataprovider.h @@ -538,15 +538,15 @@ class CORE_EXPORT QgsRasterDataProvider : public QgsDataProvider, public QgsRast * Read block of data * \note not available in Python bindings */ - virtual void readBlock( int bandNo, int xBlock, int yBlock, void *data ) SIP_SKIP - { Q_UNUSED( bandNo ); Q_UNUSED( xBlock ); Q_UNUSED( yBlock ); Q_UNUSED( data ); } + virtual bool readBlock( int bandNo, int xBlock, int yBlock, void *data ) SIP_SKIP + { Q_UNUSED( bandNo ) Q_UNUSED( xBlock ); Q_UNUSED( yBlock ); Q_UNUSED( data ); return false; } /** * Read block of data using give extent and size * \note not available in Python bindings */ - virtual void readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) SIP_SKIP - { Q_UNUSED( bandNo ); Q_UNUSED( viewExtent ); Q_UNUSED( width ); Q_UNUSED( height ); Q_UNUSED( data ); Q_UNUSED( feedback ); } + virtual bool readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) SIP_SKIP + { Q_UNUSED( bandNo ) Q_UNUSED( viewExtent ); Q_UNUSED( width ); Q_UNUSED( height ); Q_UNUSED( data ); Q_UNUSED( feedback ); return false; } //! Returns true if user no data contains value bool userNoDataValuesContains( int bandNo, double value ) const; diff --git a/src/core/raster/qgsrasterinterface.h b/src/core/raster/qgsrasterinterface.h index 96c184a678..233fbf8cd5 100644 --- a/src/core/raster/qgsrasterinterface.h +++ b/src/core/raster/qgsrasterinterface.h @@ -77,6 +77,23 @@ class CORE_EXPORT QgsRasterBlockFeedback : public QgsFeedback */ void setRenderPartialOutput( bool enable ) { mRenderPartialOutput = enable; } + /** + * Appends an error message to the stored list of errors. Should be called + * whenever an error is encountered while retrieving a raster block. + * + * \see errors() + * \since QGIS 3.8.0 + */ + void appendError( const QString &error ) { mErrors.append( error ); } + + /** + * Returns a list of any errors encountered while retrieving the raster block. + * + * \see appendError() + * \since QGIS 3.8.0 + */ + QStringList errors() const { return mErrors; } + private: /** @@ -87,6 +104,9 @@ class CORE_EXPORT QgsRasterBlockFeedback : public QgsFeedback //! Whether our painter is drawing to a temporary image used just by this layer bool mRenderPartialOutput = false; + + //! List of errors encountered while retrieving block + QStringList mErrors; }; @@ -358,8 +378,8 @@ class CORE_EXPORT QgsRasterInterface maximum = PyFloat_AsDouble( a3 ); } - QgsRasterHistogram h = sipCpp->histogram( a0, a1, minimum, maximum, *a4, a5, a6, a7 ); - sipRes = &h; + QgsRasterHistogram *h = new QgsRasterHistogram( sipCpp->histogram( a0, a1, minimum, maximum, *a4, a5, a6, a7 ) ); + return sipConvertFromType( h, sipType_QgsRasterHistogram, Py_None ); % End #endif diff --git a/src/core/raster/qgsrasterlayerrenderer.cpp b/src/core/raster/qgsrasterlayerrenderer.cpp index 3ad799c251..e356647cc1 100644 --- a/src/core/raster/qgsrasterlayerrenderer.cpp +++ b/src/core/raster/qgsrasterlayerrenderer.cpp @@ -271,6 +271,12 @@ bool QgsRasterLayerRenderer::render() QgsRasterDrawer drawer( &iterator ); drawer.draw( mPainter, mRasterViewPort, mMapToPixel, mFeedback ); + const QStringList errors = mFeedback->errors(); + for ( const QString &error : errors ) + { + mErrors.append( error ); + } + QgsDebugMsgLevel( QStringLiteral( "total raster draw time (ms): %1" ).arg( time.elapsed(), 5 ), 4 ); return true; diff --git a/src/core/symbology/qgsarrowsymbollayer.cpp b/src/core/symbology/qgsarrowsymbollayer.cpp index 8669cf4e03..c4dea0f441 100644 --- a/src/core/symbology/qgsarrowsymbollayer.cpp +++ b/src/core/symbology/qgsarrowsymbollayer.cpp @@ -727,6 +727,9 @@ void QgsArrowSymbolLayer::renderPolyline( const QPolygonF &points, QgsSymbolRend { for ( int pIdx = 0; pIdx < points.size() - 1; pIdx += 2 ) { + if ( context.renderContext().renderingStopped() ) + break; + mExpressionScope->addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_GEOMETRY_POINT_NUM, pIdx + 1, true ) ); _resolveDataDefined( context ); @@ -778,6 +781,9 @@ void QgsArrowSymbolLayer::renderPolyline( const QPolygonF &points, QgsSymbolRend // only straight arrows for ( int pIdx = 0; pIdx < points.size() - 1; pIdx++ ) { + if ( context.renderContext().renderingStopped() ) + break; + mExpressionScope->addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_GEOMETRY_POINT_NUM, pIdx + 1, true ) ); _resolveDataDefined( context ); diff --git a/src/core/symbology/qgsfillsymbollayer.cpp b/src/core/symbology/qgsfillsymbollayer.cpp index aa40282fcd..537b5b2ae7 100644 --- a/src/core/symbology/qgsfillsymbollayer.cpp +++ b/src/core/symbology/qgsfillsymbollayer.cpp @@ -1237,11 +1237,11 @@ void QgsShapeburstFillSymbolLayer::renderPolygon( const QPolygonF &points, QList imgPainter.end(); //apply distance transform to image, uses the current color ramp to calculate final pixel colors - double *dtArray = distanceTransform( fillImage.get() ); + double *dtArray = distanceTransform( fillImage.get(), context.renderContext() ); //copy distance transform values back to QImage, shading by appropriate color ramp dtArrayToQImage( dtArray, fillImage.get(), mColorType == QgsShapeburstFillSymbolLayer::SimpleTwoColor ? twoColorGradientRamp.get() : mGradientRamp.get(), - context.opacity(), useWholeShape, outputPixelMaxDist ); + context.renderContext(), context.opacity(), useWholeShape, outputPixelMaxDist ); //clean up some variables delete [] dtArray; @@ -1314,7 +1314,7 @@ void QgsShapeburstFillSymbolLayer::distanceTransform1d( double *f, int n, int *v } /* distance transform of 2d function using squared distance */ -void QgsShapeburstFillSymbolLayer::distanceTransform2d( double *im, int width, int height ) +void QgsShapeburstFillSymbolLayer::distanceTransform2d( double *im, int width, int height, QgsRenderContext &context ) { int maxDimension = std::max( width, height ); double *f = new double[ maxDimension ]; @@ -1325,6 +1325,9 @@ void QgsShapeburstFillSymbolLayer::distanceTransform2d( double *im, int width, i // transform along columns for ( int x = 0; x < width; x++ ) { + if ( context.renderingStopped() ) + break; + for ( int y = 0; y < height; y++ ) { f[y] = im[ x + y * width ]; @@ -1339,6 +1342,9 @@ void QgsShapeburstFillSymbolLayer::distanceTransform2d( double *im, int width, i // transform along rows for ( int y = 0; y < height; y++ ) { + if ( context.renderingStopped() ) + break; + for ( int x = 0; x < width; x++ ) { f[x] = im[ x + y * width ]; @@ -1357,7 +1363,7 @@ void QgsShapeburstFillSymbolLayer::distanceTransform2d( double *im, int width, i } /* distance transform of a binary QImage */ -double *QgsShapeburstFillSymbolLayer::distanceTransform( QImage *im ) +double *QgsShapeburstFillSymbolLayer::distanceTransform( QImage *im, QgsRenderContext &context ) { int width = im->width(); int height = im->height(); @@ -1369,6 +1375,9 @@ double *QgsShapeburstFillSymbolLayer::distanceTransform( QImage *im ) int idx = 0; for ( int heightIndex = 0; heightIndex < height; ++heightIndex ) { + if ( context.renderingStopped() ) + break; + const QRgb *scanLine = reinterpret_cast< const QRgb * >( im->constScanLine( heightIndex ) ); for ( int widthIndex = 0; widthIndex < width; ++widthIndex ) { @@ -1388,12 +1397,12 @@ double *QgsShapeburstFillSymbolLayer::distanceTransform( QImage *im ) } //calculate squared distance transform - distanceTransform2d( dtArray, width, height ); + distanceTransform2d( dtArray, width, height, context ); return dtArray; } -void QgsShapeburstFillSymbolLayer::dtArrayToQImage( double *array, QImage *im, QgsColorRamp *ramp, double layerAlpha, bool useWholeShape, int maxPixelDistance ) +void QgsShapeburstFillSymbolLayer::dtArrayToQImage( double *array, QImage *im, QgsColorRamp *ramp, QgsRenderContext &context, double layerAlpha, bool useWholeShape, int maxPixelDistance ) { int width = im->width(); int height = im->height(); @@ -1431,6 +1440,9 @@ void QgsShapeburstFillSymbolLayer::dtArrayToQImage( double *array, QImage *im, Q for ( int heightIndex = 0; heightIndex < height; ++heightIndex ) { + if ( context.renderingStopped() ) + break; + QRgb *scanLine = reinterpret_cast< QRgb * >( im->scanLine( heightIndex ) ); for ( int widthIndex = 0; widthIndex < width; ++widthIndex ) { @@ -1722,11 +1734,10 @@ QgsSVGFillSymbolLayer::QgsSVGFillSymbolLayer( const QString &svgFilePath, double : QgsImageFillSymbolLayer() , mPatternWidth( width ) { - setSvgFilePath( svgFilePath ); mStrokeWidth = 0.3; mAngle = angle; mColor = QColor( 255, 255, 255 ); - setDefaultSvgParams(); + setSvgFilePath( svgFilePath ); } QgsSVGFillSymbolLayer::QgsSVGFillSymbolLayer( const QByteArray &svgData, double width, double angle ) diff --git a/src/core/symbology/qgsfillsymbollayer.h b/src/core/symbology/qgsfillsymbollayer.h index fbbe8a59bf..26b4d345f2 100644 --- a/src/core/symbology/qgsfillsymbollayer.h +++ b/src/core/symbology/qgsfillsymbollayer.h @@ -611,12 +611,12 @@ class CORE_EXPORT QgsShapeburstFillSymbolLayer : public QgsFillSymbolLayer /* distance transform of a 1d function using squared distance */ void distanceTransform1d( double *f, int n, int *v, double *z, double *d ); /* distance transform of 2d function using squared distance */ - void distanceTransform2d( double *im, int width, int height ); + void distanceTransform2d( double *im, int width, int height, QgsRenderContext &context ); /* distance transform of a binary QImage */ - double *distanceTransform( QImage *im ); + double *distanceTransform( QImage *im, QgsRenderContext &context ); /* fills a QImage with values from an array of doubles containing squared distance transform values */ - void dtArrayToQImage( double *array, QImage *im, QgsColorRamp *ramp, double layerAlpha = 1, bool useWholeShape = true, int maxPixelDistance = 0 ); + void dtArrayToQImage( double *array, QImage *im, QgsColorRamp *ramp, QgsRenderContext &context, double layerAlpha = 1, bool useWholeShape = true, int maxPixelDistance = 0 ); #ifdef SIP_RUN QgsShapeburstFillSymbolLayer( const QgsShapeburstFillSymbolLayer &other ); diff --git a/src/core/symbology/qgsheatmaprenderer.cpp b/src/core/symbology/qgsheatmaprenderer.cpp index 910cd9c2c6..7f37ff8e7a 100644 --- a/src/core/symbology/qgsheatmaprenderer.cpp +++ b/src/core/symbology/qgsheatmaprenderer.cpp @@ -148,6 +148,9 @@ bool QgsHeatmapRenderer::renderFeature( const QgsFeature &feature, QgsRenderCont int pointY = pixel.y() / mRenderQuality; for ( int x = std::max( pointX - mRadiusPixels, 0 ); x < std::min( pointX + mRadiusPixels, width ); ++x ) { + if ( context.renderingStopped() ) + break; + for ( int y = std::max( pointY - mRadiusPixels, 0 ); y < std::min( pointY + mRadiusPixels, height ); ++y ) { int index = y * width + x; @@ -221,7 +224,7 @@ void QgsHeatmapRenderer::stopRender( QgsRenderContext &context ) void QgsHeatmapRenderer::renderImage( QgsRenderContext &context ) { - if ( !context.painter() || !mGradientRamp ) + if ( !context.painter() || !mGradientRamp || context.renderingStopped() ) { return; } @@ -238,6 +241,9 @@ void QgsHeatmapRenderer::renderImage( QgsRenderContext &context ) QColor pixColor; for ( int heightIndex = 0; heightIndex < image.height(); ++heightIndex ) { + if ( context.renderingStopped() ) + break; + QRgb *scanLine = reinterpret_cast< QRgb * >( image.scanLine( heightIndex ) ); for ( int widthIndex = 0; widthIndex < image.width(); ++widthIndex ) { diff --git a/src/core/symbology/qgsheatmaprenderer.h b/src/core/symbology/qgsheatmaprenderer.h index 85dae35d1e..dde320c913 100644 --- a/src/core/symbology/qgsheatmaprenderer.h +++ b/src/core/symbology/qgsheatmaprenderer.h @@ -45,7 +45,7 @@ class CORE_EXPORT QgsHeatmapRenderer : public QgsFeatureRenderer //reimplemented methods QgsHeatmapRenderer *clone() const override SIP_FACTORY; void startRender( QgsRenderContext &context, const QgsFields &fields ) override; - bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override; + bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override SIP_THROW( QgsCsException ); void stopRender( QgsRenderContext &context ) override; //! \note symbolForFeature2 in Python bindings QgsSymbol *symbolForFeature( const QgsFeature &feature, QgsRenderContext &context ) const override; diff --git a/src/core/symbology/qgsinvertedpolygonrenderer.cpp b/src/core/symbology/qgsinvertedpolygonrenderer.cpp index 50dd73e2c8..c5b4b53f64 100644 --- a/src/core/symbology/qgsinvertedpolygonrenderer.cpp +++ b/src/core/symbology/qgsinvertedpolygonrenderer.cpp @@ -111,7 +111,6 @@ void QgsInvertedPolygonRenderer::startRender( QgsRenderContext &context, const Q // We compute coordinates of the extent which will serve as exterior ring // for the final polygon // It must be computed in the destination CRS if reprojection is enabled. - const QgsMapToPixel &mtp( context.mapToPixel() ); if ( !context.painter() ) { @@ -119,15 +118,16 @@ void QgsInvertedPolygonRenderer::startRender( QgsRenderContext &context, const Q } // convert viewport to dest CRS - QRect e( context.painter()->viewport() ); // add some space to hide borders and tend to infinity - e.adjust( -e.width() * 5, -e.height() * 5, e.width() * 5, e.height() * 5 ); + const double buffer = std::max( context.mapExtent().width(), context.mapExtent().height() ) * 0.1; + const QRectF outer = context.mapExtent().buffered( buffer ).toRectF(); QgsPolylineXY exteriorRing; - exteriorRing << mtp.toMapCoordinates( e.topLeft() ); - exteriorRing << mtp.toMapCoordinates( e.topRight() ); - exteriorRing << mtp.toMapCoordinates( e.bottomRight() ); - exteriorRing << mtp.toMapCoordinates( e.bottomLeft() ); - exteriorRing << mtp.toMapCoordinates( e.topLeft() ); + exteriorRing.reserve( 5 ); + exteriorRing << outer.topLeft(); + exteriorRing << outer.topRight(); + exteriorRing << outer.bottomRight(); + exteriorRing << outer.bottomLeft(); + exteriorRing << outer.topLeft(); // copy the rendering context mContext = context; @@ -142,8 +142,7 @@ void QgsInvertedPolygonRenderer::startRender( QgsRenderContext &context, const Q // disable projection mContext.setCoordinateTransform( QgsCoordinateTransform() ); // recompute extent so that polygon clipping is correct - QRect v( context.painter()->viewport() ); - mContext.setExtent( QgsRectangle( mtp.toMapCoordinates( v.topLeft() ), mtp.toMapCoordinates( v.bottomRight() ) ) ); + mContext.setExtent( context.mapExtent() ); // do we have to recompute the MapToPixel ? } @@ -246,6 +245,11 @@ bool QgsInvertedPolygonRenderer::renderFeature( const QgsFeature &feature, QgsRe void QgsInvertedPolygonRenderer::stopRender( QgsRenderContext &context ) { QgsFeatureRenderer::stopRender( context ); + if ( context.renderingStopped() ) + { + mSubRenderer->stopRender( mContext ); + return; + } if ( !mSubRenderer ) { diff --git a/src/core/symbology/qgsinvertedpolygonrenderer.h b/src/core/symbology/qgsinvertedpolygonrenderer.h index bc699456d8..c6984c81e3 100644 --- a/src/core/symbology/qgsinvertedpolygonrenderer.h +++ b/src/core/symbology/qgsinvertedpolygonrenderer.h @@ -67,7 +67,7 @@ class CORE_EXPORT QgsInvertedPolygonRenderer : public QgsFeatureRenderer * \param drawVertexMarker whether this feature has vertex markers (in edit mode usually) * \returns true if the rendering was OK */ - bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override; + bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override SIP_THROW( QgsCsException ); /** * The actual rendering will take place here. diff --git a/src/core/symbology/qgslinesymbollayer.cpp b/src/core/symbology/qgslinesymbollayer.cpp index 934407caf8..c61ce36651 100644 --- a/src/core/symbology/qgslinesymbollayer.cpp +++ b/src/core/symbology/qgslinesymbollayer.cpp @@ -1019,6 +1019,9 @@ void QgsMarkerLineSymbolLayer::renderPolylineInterval( const QPolygonF &points, int pointNum = 0; for ( int i = 1; i < points.count(); ++i ) { + if ( context.renderContext().renderingStopped() ) + break; + const QPointF &pt = points[i]; if ( lastPt == pt ) // must not be equal! @@ -1044,6 +1047,9 @@ void QgsMarkerLineSymbolLayer::renderPolylineInterval( const QPolygonF &points, // while we're not at the end of line segment, draw! while ( lengthLeft > painterUnitInterval ) { + if ( context.renderContext().renderingStopped() ) + break; + // "c" is 1 for regular point or in interval (0,1] for begin of line segment lastPt += c * diff; lengthLeft -= painterUnitInterval; @@ -1108,6 +1114,9 @@ void QgsMarkerLineSymbolLayer::renderPolylineVertex( const QPolygonF &points, Qg int pointNum = 0; while ( context.renderContext().geometry()->nextVertex( vId, vPoint ) ) { + if ( context.renderContext().renderingStopped() ) + break; + scope->addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_GEOMETRY_POINT_NUM, ++pointNum, true ) ); if ( ( placement == Vertex && vId.type == QgsVertexId::SegmentVertex ) diff --git a/src/core/symbology/qgsnullsymbolrenderer.h b/src/core/symbology/qgsnullsymbolrenderer.h index ee21003efa..cdcfc64443 100644 --- a/src/core/symbology/qgsnullsymbolrenderer.h +++ b/src/core/symbology/qgsnullsymbolrenderer.h @@ -37,7 +37,7 @@ class CORE_EXPORT QgsNullSymbolRenderer : public QgsFeatureRenderer QgsSymbol *symbolForFeature( const QgsFeature &feature, QgsRenderContext &context ) const override; QgsSymbol *originalSymbolForFeature( const QgsFeature &feature, QgsRenderContext &context ) const override; - bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override; + bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override SIP_THROW( QgsCsException ); void stopRender( QgsRenderContext &context ) override; bool willRenderFeature( const QgsFeature &feature, QgsRenderContext &context ) const override; diff --git a/src/core/symbology/qgspointdistancerenderer.cpp b/src/core/symbology/qgspointdistancerenderer.cpp index 66e4800140..c3327d18fb 100644 --- a/src/core/symbology/qgspointdistancerenderer.cpp +++ b/src/core/symbology/qgspointdistancerenderer.cpp @@ -326,9 +326,12 @@ void QgsPointDistanceRenderer::stopRender( QgsRenderContext &context ) //printInfoDisplacementGroups(); //just for debugging - Q_FOREACH ( const ClusteredGroup &group, mClusteredGroups ) + if ( !context.renderingStopped() ) { - drawGroup( group, context ); + Q_FOREACH ( const ClusteredGroup &group, mClusteredGroups ) + { + drawGroup( group, context ); + } } mClusteredGroups.clear(); diff --git a/src/core/symbology/qgspointdistancerenderer.h b/src/core/symbology/qgspointdistancerenderer.h index be2f7403e9..b206d1cf7d 100644 --- a/src/core/symbology/qgspointdistancerenderer.h +++ b/src/core/symbology/qgspointdistancerenderer.h @@ -84,7 +84,7 @@ class CORE_EXPORT QgsPointDistanceRenderer: public QgsFeatureRenderer QgsPointDistanceRenderer( const QString &rendererName, const QString &labelAttributeName = QString() ); void toSld( QDomDocument &doc, QDomElement &element, const QgsStringMap &props = QgsStringMap() ) const override; - bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override; + bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override SIP_THROW( QgsCsException ); QSet<QString> usedAttributes( const QgsRenderContext &context ) const override; bool filterNeedsGeometry() const override; QgsFeatureRenderer::Capabilities capabilities() override; diff --git a/src/core/symbology/qgsrenderer.h b/src/core/symbology/qgsrenderer.h index 7fc9c9f7f6..61589cdaf0 100644 --- a/src/core/symbology/qgsrenderer.h +++ b/src/core/symbology/qgsrenderer.h @@ -228,7 +228,7 @@ class CORE_EXPORT QgsFeatureRenderer * \see startRender() * \see stopRender() */ - virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ); + virtual bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) SIP_THROW( QgsCsException ); //! Returns debug information about this renderer virtual QString dump() const; @@ -468,12 +468,7 @@ class CORE_EXPORT QgsFeatureRenderer * specify if it should be rendered as selected and \a drawVertexMarker * to specify if vertex markers should be rendered. */ - void renderFeatureWithSymbol( const QgsFeature &feature, - QgsSymbol *symbol, - QgsRenderContext &context, - int layer, - bool selected, - bool drawVertexMarker ); + void renderFeatureWithSymbol( const QgsFeature &feature, QgsSymbol *symbol, QgsRenderContext &context, int layer, bool selected, bool drawVertexMarker ) SIP_THROW( QgsCsException ); //! render editing vertex marker at specified point void renderVertexMarker( QPointF pt, QgsRenderContext &context ); diff --git a/src/core/symbology/qgsrulebasedrenderer.cpp b/src/core/symbology/qgsrulebasedrenderer.cpp index e2c455e2bc..0270ae34f3 100644 --- a/src/core/symbology/qgsrulebasedrenderer.cpp +++ b/src/core/symbology/qgsrulebasedrenderer.cpp @@ -929,26 +929,29 @@ void QgsRuleBasedRenderer::stopRender( QgsRenderContext &context ) // // go through all levels - Q_FOREACH ( const RenderLevel &level, mRenderQueue ) + if ( !context.renderingStopped() ) { - //QgsDebugMsg(QString("level %1").arg(level.zIndex)); - // go through all jobs at the level - Q_FOREACH ( const RenderJob *job, level.jobs ) + Q_FOREACH ( const RenderLevel &level, mRenderQueue ) { - context.expressionContext().setFeature( job->ftr.feat ); - //QgsDebugMsg(QString("job fid %1").arg(job->f->id())); - // render feature - but only with symbol layers with specified zIndex - QgsSymbol *s = job->symbol; - int count = s->symbolLayerCount(); - for ( int i = 0; i < count; i++ ) + //QgsDebugMsg(QString("level %1").arg(level.zIndex)); + // go through all jobs at the level + Q_FOREACH ( const RenderJob *job, level.jobs ) { - // TODO: better solution for this - // renderFeatureWithSymbol asks which symbol layer to draw - // but there are multiple transforms going on! - if ( s->symbolLayer( i )->renderingPass() == level.zIndex ) + context.expressionContext().setFeature( job->ftr.feat ); + //QgsDebugMsg(QString("job fid %1").arg(job->f->id())); + // render feature - but only with symbol layers with specified zIndex + QgsSymbol *s = job->symbol; + int count = s->symbolLayerCount(); + for ( int i = 0; i < count; i++ ) { - int flags = job->ftr.flags; - renderFeatureWithSymbol( job->ftr.feat, job->symbol, context, i, flags & FeatIsSelected, flags & FeatDrawMarkers ); + // TODO: better solution for this + // renderFeatureWithSymbol asks which symbol layer to draw + // but there are multiple transforms going on! + if ( s->symbolLayer( i )->renderingPass() == level.zIndex ) + { + int flags = job->ftr.flags; + renderFeatureWithSymbol( job->ftr.feat, job->symbol, context, i, flags & FeatIsSelected, flags & FeatDrawMarkers ); + } } } } diff --git a/src/core/symbology/qgsrulebasedrenderer.h b/src/core/symbology/qgsrulebasedrenderer.h index 882f40ea90..b0b8faab2c 100644 --- a/src/core/symbology/qgsrulebasedrenderer.h +++ b/src/core/symbology/qgsrulebasedrenderer.h @@ -476,7 +476,7 @@ class CORE_EXPORT QgsRuleBasedRenderer : public QgsFeatureRenderer //! Returns symbol for current feature. Should not be used individually: there could be more symbols for a feature QgsSymbol *symbolForFeature( const QgsFeature &feature, QgsRenderContext &context ) const override; - bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override; + bool renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false ) override SIP_THROW( QgsCsException ); void startRender( QgsRenderContext &context, const QgsFields &fields ) override; diff --git a/src/core/symbology/qgssymbol.cpp b/src/core/symbology/qgssymbol.cpp index cf81800dc7..b898f7760e 100644 --- a/src/core/symbology/qgssymbol.cpp +++ b/src/core/symbology/qgssymbol.cpp @@ -733,6 +733,9 @@ class GeometryRestorer void QgsSymbol::renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer, bool selected, bool drawVertexMarker, int currentVertexMarkerType, double currentVertexMarkerSize ) { + if ( context.renderingStopped() ) + return; + const QgsGeometry geom = feature.geometry(); if ( geom.isNull() ) { @@ -886,6 +889,9 @@ void QgsSymbol::renderFeature( const QgsFeature &feature, QgsRenderContext &cont for ( int i = 0; i < mp.numGeometries(); ++i ) { + if ( context.renderingStopped() ) + break; + mSymbolRenderContext->setGeometryPartNum( i + 1 ); if ( needsExpressionContext ) mSymbolRenderContext->expressionContextScope()->addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_GEOMETRY_PART_NUM, i + 1, true ) ); @@ -916,6 +922,9 @@ void QgsSymbol::renderFeature( const QgsFeature &feature, QgsRenderContext &cont const unsigned int num = geomCollection.numGeometries(); for ( unsigned int i = 0; i < num; ++i ) { + if ( context.renderingStopped() ) + break; + mSymbolRenderContext->setGeometryPartNum( i + 1 ); if ( needsExpressionContext ) mSymbolRenderContext->expressionContextScope()->addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_GEOMETRY_PART_NUM, i + 1, true ) ); @@ -967,6 +976,9 @@ void QgsSymbol::renderFeature( const QgsFeature &feature, QgsRenderContext &cont const QList<unsigned int> &listPartIndex = iter->second; for ( int idx = 0; idx < listPartIndex.size(); ++idx ) { + if ( context.renderingStopped() ) + break; + const unsigned i = listPartIndex[idx]; mSymbolRenderContext->setGeometryPartNum( i + 1 ); if ( needsExpressionContext ) @@ -1013,7 +1025,7 @@ void QgsSymbol::renderFeature( const QgsFeature &feature, QgsRenderContext &cont if ( drawVertexMarker ) { - if ( !markers.isEmpty() ) + if ( !markers.isEmpty() && !context.renderingStopped() ) { Q_FOREACH ( QPointF marker, markers ) { @@ -1540,6 +1552,9 @@ void QgsMarkerSymbol::renderPoint( QPointF point, const QgsFeature *f, QgsRender Q_FOREACH ( QgsSymbolLayer *symbolLayer, mLayers ) { + if ( context.renderingStopped() ) + break; + if ( !symbolLayer->enabled() ) continue; @@ -1770,6 +1785,9 @@ void QgsLineSymbol::renderPolyline( const QPolygonF &points, const QgsFeature *f Q_FOREACH ( QgsSymbolLayer *symbolLayer, mLayers ) { + if ( context.renderingStopped() ) + break;; + if ( !symbolLayer->enabled() ) continue; @@ -1851,6 +1869,9 @@ void QgsFillSymbol::renderPolygon( const QPolygonF &points, QList<QPolygonF> *ri Q_FOREACH ( QgsSymbolLayer *symbolLayer, mLayers ) { + if ( context.renderingStopped() ) + break; + if ( !symbolLayer->enabled() ) continue; diff --git a/src/core/symbology/qgssymbol.h b/src/core/symbology/qgssymbol.h index 16f482d04a..1ae5670c71 100644 --- a/src/core/symbology/qgssymbol.h +++ b/src/core/symbology/qgssymbol.h @@ -429,7 +429,7 @@ class CORE_EXPORT QgsSymbol * Render a feature. Before calling this the startRender() method should be called to initialize * the rendering process. After rendering all features stopRender() must be called. */ - void renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false, int currentVertexMarkerType = 0, double currentVertexMarkerSize = 0.0 ); + void renderFeature( const QgsFeature &feature, QgsRenderContext &context, int layer = -1, bool selected = false, bool drawVertexMarker = false, int currentVertexMarkerType = 0, double currentVertexMarkerSize = 0.0 ) SIP_THROW( QgsCsException ); /** * Returns the symbol render context. Only valid between startRender and stopRender calls. diff --git a/src/crashhandler/qgscrashdialog.cpp b/src/crashhandler/qgscrashdialog.cpp index afa51df170..60f3832e4b 100644 --- a/src/crashhandler/qgscrashdialog.cpp +++ b/src/crashhandler/qgscrashdialog.cpp @@ -65,8 +65,8 @@ void QgsCrashDialog::on_mUserFeedbackText_textChanged() void QgsCrashDialog::createBugReport() { QClipboard *clipboard = QApplication::clipboard(); - QString userText = "h2. User Feedback\n\n" + mUserFeedbackText->toPlainText(); - QString details = "h2. Report Details\n\n" + mReportData; + QString userText = "## User Feedback\n\n" + mUserFeedbackText->toPlainText(); + QString details = "## Report Details\n\n" + mReportData; QString finalText = userText + "\n\n" + details; QString markdown = htmlToMarkdown( finalText ); clipboard->setText( markdown ); @@ -87,7 +87,6 @@ QString QgsCrashDialog::htmlToMarkdown( const QString &html ) markdown.replace( QLatin1String( "<br>" ), QLatin1String( "\n" ) ); markdown.replace( QLatin1String( "<b>" ), QLatin1String( "*" ) ); markdown.replace( QLatin1String( "</b>" ), QLatin1String( "*" ) ); - markdown.replace( QLatin1String( "QGIS code revision: " ), QLatin1String( "QGIS code revision: commit:" ) ); return markdown; } diff --git a/src/crashhandler/qgscrashreport.cpp b/src/crashhandler/qgscrashreport.cpp index 0514451202..54526d7737 100644 --- a/src/crashhandler/qgscrashreport.cpp +++ b/src/crashhandler/qgscrashreport.cpp @@ -40,7 +40,6 @@ const QString QgsCrashReport::toMarkdown() markdown.replace( QLatin1String( "<br>" ), QLatin1String( "\n" ) ); markdown.replace( QLatin1String( "<b>" ), QLatin1String( "*" ) ); markdown.replace( QLatin1String( "</b>" ), QLatin1String( "*" ) ); - markdown.replace( QLatin1String( "QGIS code revision: " ), QLatin1String( "QGIS code revision: commit:" ) ); return markdown; } diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 3df59d9a70..e9ef3269ba 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -454,6 +454,7 @@ SET(QGIS_GUI_MOC_HDRS qgsgradientcolorrampdialog.h qgsgradientstopeditor.h qgsgroupwmsdatadialog.h + qgsgui.h qgshistogramwidget.h qgshighlight.h qgsidentifymenu.h @@ -770,7 +771,6 @@ SET(QGIS_GUI_HDRS qgsdetaileditemdata.h qgsexpressionbuilderdialog.h qgsgeometryrubberband.h - qgsgui.h qgsguiutils.h qgshelp.h qgshighlight.h @@ -936,6 +936,7 @@ INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/core/metadata ${CMAKE_SOURCE_DIR}/src/core/processing ${CMAKE_SOURCE_DIR}/src/core/mesh + ${CMAKE_SOURCE_DIR}/src/core/pal ${CMAKE_SOURCE_DIR}/src/core/providers/memory ${CMAKE_SOURCE_DIR}/src/core/raster ${CMAKE_SOURCE_DIR}/src/core/scalebar diff --git a/src/gui/attributetable/qgsdualview.h b/src/gui/attributetable/qgsdualview.h index b4a204e373..14735ff795 100644 --- a/src/gui/attributetable/qgsdualview.h +++ b/src/gui/attributetable/qgsdualview.h @@ -23,7 +23,6 @@ #include "qgsattributeeditorcontext.h" #include "qgsattributetablefiltermodel.h" -#include "qgsdistancearea.h" #include "qgsattributeform.h" #include "qgis_gui.h" @@ -384,7 +383,6 @@ class GUI_EXPORT QgsDualView : public QStackedWidget, private Ui::QgsDualViewBas QPointer< QgsVectorLayer > mLayer = nullptr; QProgressDialog *mProgressDlg = nullptr; QgsIFeatureSelectionManager *mFeatureSelectionManager = nullptr; - QgsDistanceArea mDistanceArea; QString mDisplayExpression; QgsAttributeTableConfig mConfig; QgsScrollArea *mAttributeEditorScrollArea = nullptr; diff --git a/src/gui/editorwidgets/qgsdatetimeedit.cpp b/src/gui/editorwidgets/qgsdatetimeedit.cpp index 37e21cdf80..5f7b4dbcac 100644 --- a/src/gui/editorwidgets/qgsdatetimeedit.cpp +++ b/src/gui/editorwidgets/qgsdatetimeedit.cpp @@ -62,7 +62,11 @@ void QgsDateTimeEdit::clear() { displayNull(); - changed( QDateTime() ); + // Check if it's really changed or crash, see GH #29937 + if ( ! dateTime().isNull() ) + { + changed( QDateTime() ); + } // emit signal of QDateTime::dateTimeChanged with an invalid date // anyway, using parent's signal should be avoided @@ -252,7 +256,8 @@ void QgsDateTimeEdit::setDateTime( const QDateTime &dateTime ) { clear(); } - else + // Check if it's really changed or crash, see GH #29937 + else if ( dateTime != QgsDateTimeEdit::dateTime() ) { QDateTimeEdit::setDateTime( dateTime ); changed( dateTime ); diff --git a/src/gui/editorwidgets/qgsrelationreferencewidget.cpp b/src/gui/editorwidgets/qgsrelationreferencewidget.cpp index 2a8e8ce33c..e08a3a0849 100644 --- a/src/gui/editorwidgets/qgsrelationreferencewidget.cpp +++ b/src/gui/editorwidgets/qgsrelationreferencewidget.cpp @@ -40,7 +40,7 @@ #include "qgsmaptoolidentifyfeature.h" #include "qgsfeatureiterator.h" #include "qgsfeaturelistcombobox.h" - +#include "qgsfeaturefiltermodel.h" QgsRelationReferenceWidget::QgsRelationReferenceWidget( QWidget *parent ) : QWidget( parent ) @@ -744,7 +744,7 @@ void QgsRelationReferenceWidget::featureIdentified( const QgsFeature &feature ) } else { - mComboBox->setCurrentIndex( mComboBox->findData( feature.id(), QgsAttributeTableModel::FeatureIdRole ) ); + mComboBox->setCurrentIndex( mComboBox->findData( feature.attribute( mReferencedFieldIdx ), QgsFeatureFilterModel::Role::IdentifierValueRole ) ); mFeature = feature; } diff --git a/src/gui/editorwidgets/qgsrelationreferencewidget.h b/src/gui/editorwidgets/qgsrelationreferencewidget.h index 831b4d8d31..e729f590af 100644 --- a/src/gui/editorwidgets/qgsrelationreferencewidget.h +++ b/src/gui/editorwidgets/qgsrelationreferencewidget.h @@ -99,7 +99,7 @@ class GUI_EXPORT QgsRelationReferenceWidget : public QWidget bool readOnlySelector() { return mReadOnlySelector; } void setReadOnlySelector( bool readOnly ); - //! determines if the widge offers the possibility to select the related feature on the map (using a dedicated map tool) + //! determines if the widget offers the possibility to select the related feature on the map (using a dedicated map tool) bool allowMapIdentification() { return mAllowMapIdentification; } void setAllowMapIdentification( bool allowMapIdentification ); diff --git a/src/gui/effects/qgspainteffectwidget.cpp b/src/gui/effects/qgspainteffectwidget.cpp index 6c06a95a44..ee30ecdcfa 100644 --- a/src/gui/effects/qgspainteffectwidget.cpp +++ b/src/gui/effects/qgspainteffectwidget.cpp @@ -117,12 +117,16 @@ QgsBlurWidget::QgsBlurWidget( QWidget *parent ) { setupUi( this ); connect( mBlurTypeCombo, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsBlurWidget::mBlurTypeCombo_currentIndexChanged ); - connect( mBlurStrengthSpnBx, static_cast< void ( QSpinBox::* )( int ) >( &QSpinBox::valueChanged ), this, &QgsBlurWidget::mBlurStrengthSpnBx_valueChanged ); + connect( mBlurStrengthSpnBx, static_cast< void ( QDoubleSpinBox::* )( double ) >( &QDoubleSpinBox::valueChanged ), this, &QgsBlurWidget::mBlurStrengthSpnBx_valueChanged ); + connect( mBlurUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsBlurWidget::mBlurUnitWidget_changed ); connect( mDrawModeComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsBlurWidget::mDrawModeComboBox_currentIndexChanged ); connect( mBlendCmbBx, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsBlurWidget::mBlendCmbBx_currentIndexChanged ); - mBlurTypeCombo->addItem( tr( "Stack blur (fast)" ), QgsBlurEffect::StackBlur ); - mBlurTypeCombo->addItem( tr( "Gaussian blur (quality)" ), QgsBlurEffect::GaussianBlur ); + mBlurTypeCombo->addItem( tr( "Stack blur (fast, doesn't support high dpi)" ), QgsBlurEffect::StackBlur ); + mBlurTypeCombo->addItem( tr( "Gaussian blur (quality, supports high dpi)" ), QgsBlurEffect::GaussianBlur ); + + mBlurUnitWidget->setUnits( QgsUnitTypes::RenderUnitList() << QgsUnitTypes::RenderMillimeters << QgsUnitTypes::RenderPixels << QgsUnitTypes::RenderMapUnits + << QgsUnitTypes::RenderPoints << QgsUnitTypes::RenderInches ); initGui(); connect( mOpacityWidget, &QgsOpacityWidget::opacityChanged, this, &QgsBlurWidget::opacityChanged ); @@ -187,7 +191,7 @@ void QgsBlurWidget::mBlurTypeCombo_currentIndexChanged( int index ) emit changed(); } -void QgsBlurWidget::mBlurStrengthSpnBx_valueChanged( int value ) +void QgsBlurWidget::mBlurStrengthSpnBx_valueChanged( double value ) { if ( !mEffect ) return; @@ -196,6 +200,18 @@ void QgsBlurWidget::mBlurStrengthSpnBx_valueChanged( int value ) emit changed(); } +void QgsBlurWidget::mBlurUnitWidget_changed() +{ + if ( !mEffect ) + { + return; + } + + mEffect->setBlurUnit( mBlurUnitWidget->unit() ); + mEffect->setBlurMapUnitScale( mBlurUnitWidget->getMapUnitScale() ); + emit changed(); +} + void QgsBlurWidget::opacityChanged( double value ) { if ( !mEffect ) @@ -244,7 +260,8 @@ QgsShadowEffectWidget::QgsShadowEffectWidget( QWidget *parent ) connect( mShadowColorBtn, &QgsColorButton::colorChanged, this, &QgsShadowEffectWidget::mShadowColorBtn_colorChanged ); connect( mDrawModeComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsShadowEffectWidget::mDrawModeComboBox_currentIndexChanged ); connect( mShadowBlendCmbBx, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsShadowEffectWidget::mShadowBlendCmbBx_currentIndexChanged ); - connect( mShadowRadiuSpnBx, static_cast< void ( QSpinBox::* )( int ) >( &QSpinBox::valueChanged ), this, &QgsShadowEffectWidget::mShadowRadiuSpnBx_valueChanged ); + connect( mShadowRadiuSpnBx, static_cast< void ( QDoubleSpinBox::* )( double ) >( &QDoubleSpinBox::valueChanged ), this, &QgsShadowEffectWidget::mShadowRadiuSpnBx_valueChanged ); + connect( mBlurUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsShadowEffectWidget::mBlurUnitWidget_changed ); mShadowColorBtn->setAllowOpacity( false ); mShadowColorBtn->setColorDialogTitle( tr( "Select Shadow Color" ) ); @@ -253,6 +270,8 @@ QgsShadowEffectWidget::QgsShadowEffectWidget( QWidget *parent ) mOffsetUnitWidget->setUnits( QgsUnitTypes::RenderUnitList() << QgsUnitTypes::RenderMillimeters << QgsUnitTypes::RenderPixels << QgsUnitTypes::RenderMapUnits << QgsUnitTypes::RenderPoints << QgsUnitTypes::RenderInches ); + mBlurUnitWidget->setUnits( QgsUnitTypes::RenderUnitList() << QgsUnitTypes::RenderMillimeters << QgsUnitTypes::RenderPixels << QgsUnitTypes::RenderMapUnits + << QgsUnitTypes::RenderPoints << QgsUnitTypes::RenderInches ); initGui(); @@ -283,6 +302,8 @@ void QgsShadowEffectWidget::initGui() mOffsetUnitWidget->setUnit( mEffect->offsetUnit() ); mOffsetUnitWidget->setMapUnitScale( mEffect->offsetMapUnitScale() ); mShadowRadiuSpnBx->setValue( mEffect->blurLevel() ); + mBlurUnitWidget->setUnit( mEffect->blurUnit() ); + mBlurUnitWidget->setMapUnitScale( mEffect->blurMapUnitScale() ); mOpacityWidget->setOpacity( mEffect->opacity() ); mShadowColorBtn->setColor( mEffect->color() ); mShadowBlendCmbBx->setBlendMode( mEffect->blendMode() ); @@ -298,6 +319,7 @@ void QgsShadowEffectWidget::blockSignals( const bool block ) mShadowOffsetSpnBx->blockSignals( block ); mOffsetUnitWidget->blockSignals( block ); mShadowRadiuSpnBx->blockSignals( block ); + mBlurUnitWidget->blockSignals( block ); mOpacityWidget->blockSignals( block ); mShadowColorBtn->blockSignals( block ); mShadowBlendCmbBx->blockSignals( block ); @@ -361,7 +383,7 @@ void QgsShadowEffectWidget::mShadowColorBtn_colorChanged( const QColor &color ) emit changed(); } -void QgsShadowEffectWidget::mShadowRadiuSpnBx_valueChanged( int value ) +void QgsShadowEffectWidget::mShadowRadiuSpnBx_valueChanged( double value ) { if ( !mEffect ) return; @@ -370,6 +392,18 @@ void QgsShadowEffectWidget::mShadowRadiuSpnBx_valueChanged( int value ) emit changed(); } +void QgsShadowEffectWidget::mBlurUnitWidget_changed() +{ + if ( !mEffect ) + { + return; + } + + mEffect->setBlurUnit( mBlurUnitWidget->unit() ); + mEffect->setBlurMapUnitScale( mBlurUnitWidget->getMapUnitScale() ); + emit changed(); +} + void QgsShadowEffectWidget::mDrawModeComboBox_currentIndexChanged( int index ) { Q_UNUSED( index ); @@ -408,7 +442,8 @@ QgsGlowWidget::QgsGlowWidget( QWidget *parent ) connect( mColorBtn, &QgsColorButton::colorChanged, this, &QgsGlowWidget::mColorBtn_colorChanged ); connect( mBlendCmbBx, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsGlowWidget::mBlendCmbBx_currentIndexChanged ); connect( mDrawModeComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsGlowWidget::mDrawModeComboBox_currentIndexChanged ); - connect( mBlurRadiusSpnBx, static_cast< void ( QSpinBox::* )( int ) >( &QSpinBox::valueChanged ), this, &QgsGlowWidget::mBlurRadiusSpnBx_valueChanged ); + connect( mBlurRadiusSpnBx, static_cast< void ( QDoubleSpinBox::* )( double ) >( &QDoubleSpinBox::valueChanged ), this, &QgsGlowWidget::mBlurRadiusSpnBx_valueChanged ); + connect( mBlurUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsGlowWidget::mBlurUnitWidget_changed ); mColorBtn->setAllowOpacity( false ); mColorBtn->setColorDialogTitle( tr( "Select Glow Color" ) ); @@ -416,6 +451,8 @@ QgsGlowWidget::QgsGlowWidget( QWidget *parent ) mSpreadUnitWidget->setUnits( QgsUnitTypes::RenderUnitList() << QgsUnitTypes::RenderMillimeters << QgsUnitTypes::RenderPixels << QgsUnitTypes::RenderMapUnits << QgsUnitTypes::RenderPoints << QgsUnitTypes::RenderInches ); + mBlurUnitWidget->setUnits( QgsUnitTypes::RenderUnitList() << QgsUnitTypes::RenderMillimeters << QgsUnitTypes::RenderPixels << QgsUnitTypes::RenderMapUnits + << QgsUnitTypes::RenderPoints << QgsUnitTypes::RenderInches ); btnColorRamp->setShowGradientOnly( true ); @@ -538,7 +575,7 @@ void QgsGlowWidget::mColorBtn_colorChanged( const QColor &color ) emit changed(); } -void QgsGlowWidget::mBlurRadiusSpnBx_valueChanged( int value ) +void QgsGlowWidget::mBlurRadiusSpnBx_valueChanged( double value ) { if ( !mEffect ) return; @@ -547,6 +584,18 @@ void QgsGlowWidget::mBlurRadiusSpnBx_valueChanged( int value ) emit changed(); } +void QgsGlowWidget::mBlurUnitWidget_changed() +{ + if ( !mEffect ) + { + return; + } + + mEffect->setBlurUnit( mBlurUnitWidget->unit() ); + mEffect->setBlurMapUnitScale( mBlurUnitWidget->getMapUnitScale() ); + emit changed(); +} + void QgsGlowWidget::mBlendCmbBx_currentIndexChanged( int index ) { Q_UNUSED( index ); diff --git a/src/gui/effects/qgspainteffectwidget.h b/src/gui/effects/qgspainteffectwidget.h index dfb293d08e..0f785d366d 100644 --- a/src/gui/effects/qgspainteffectwidget.h +++ b/src/gui/effects/qgspainteffectwidget.h @@ -120,7 +120,8 @@ class GUI_EXPORT QgsBlurWidget : public QgsPaintEffectWidget, private Ui::Widget private slots: void mBlurTypeCombo_currentIndexChanged( int index ); - void mBlurStrengthSpnBx_valueChanged( int value ); + void mBlurStrengthSpnBx_valueChanged( double value ); + void mBlurUnitWidget_changed(); void opacityChanged( double value ); void mDrawModeComboBox_currentIndexChanged( int index ); void mBlendCmbBx_currentIndexChanged( int index ); @@ -161,7 +162,8 @@ class GUI_EXPORT QgsShadowEffectWidget : public QgsPaintEffectWidget, private Ui void mShadowColorBtn_colorChanged( const QColor &color ); void mDrawModeComboBox_currentIndexChanged( int index ); void mShadowBlendCmbBx_currentIndexChanged( int index ); - void mShadowRadiuSpnBx_valueChanged( int value ); + void mShadowRadiuSpnBx_valueChanged( double value ); + void mBlurUnitWidget_changed(); }; @@ -196,7 +198,8 @@ class GUI_EXPORT QgsGlowWidget : public QgsPaintEffectWidget, private Ui::Widget void mColorBtn_colorChanged( const QColor &color ); void mBlendCmbBx_currentIndexChanged( int index ); void mDrawModeComboBox_currentIndexChanged( int index ); - void mBlurRadiusSpnBx_valueChanged( int value ); + void mBlurRadiusSpnBx_valueChanged( double value ); + void mBlurUnitWidget_changed(); void applyColorRamp(); }; diff --git a/src/gui/layertree/qgslayertreemapcanvasbridge.cpp b/src/gui/layertree/qgslayertreemapcanvasbridge.cpp index b614edd6d4..9d6921a190 100644 --- a/src/gui/layertree/qgslayertreemapcanvasbridge.cpp +++ b/src/gui/layertree/qgslayertreemapcanvasbridge.cpp @@ -22,6 +22,8 @@ #include "qgsmapcanvas.h" #include "qgsmapoverviewcanvas.h" #include "qgsproject.h" +#include "qgssettings.h" +#include "qgsgui.h" QgsLayerTreeMapCanvasBridge::QgsLayerTreeMapCanvasBridge( QgsLayerTree *root, QgsMapCanvas *canvas, QObject *parent ) : QObject( parent ) @@ -98,7 +100,16 @@ void QgsLayerTreeMapCanvasBridge::setCanvasLayers() if ( mFirstCRS.isValid() && firstLayers ) { - QgsProject::instance()->setCrs( mFirstCRS ); + const QgsGui::ProjectCrsBehavior projectCrsBehavior = QgsSettings().enumValue( QStringLiteral( "/projections/newProjectCrsBehavior" ), QgsGui::UseCrsOfFirstLayerAdded, QgsSettings::App ); + switch ( projectCrsBehavior ) + { + case QgsGui::UseCrsOfFirstLayerAdded: + QgsProject::instance()->setCrs( mFirstCRS ); + break; + + case QgsGui::UsePresetCrs: + break; + } } mLastLayerCount = currentSpatialLayerCount; diff --git a/src/gui/layout/qgslayoutview.cpp b/src/gui/layout/qgslayoutview.cpp index 32e3a641c2..5d64a3d6aa 100644 --- a/src/gui/layout/qgslayoutview.cpp +++ b/src/gui/layout/qgslayoutview.cpp @@ -339,7 +339,7 @@ void QgsLayoutView::copyItems( const QList<QgsLayoutItem *> &items, QgsLayoutVie else if ( QgsLayoutFrame *frame = qobject_cast<QgsLayoutFrame *>( item ) ) { // copy multiframe too - if ( !copiedMultiFrames.contains( frame->multiFrame() ) ) + if ( frame->multiFrame() && !copiedMultiFrames.contains( frame->multiFrame() ) ) { frame->multiFrame()->writeXml( documentElement, doc, context ); copiedMultiFrames.insert( frame->multiFrame() ); diff --git a/src/gui/qgsadvanceddigitizingcanvasitem.cpp b/src/gui/qgsadvanceddigitizingcanvasitem.cpp index a6afb727a1..1af2d5556c 100644 --- a/src/gui/qgsadvanceddigitizingcanvasitem.cpp +++ b/src/gui/qgsadvanceddigitizingcanvasitem.cpp @@ -28,7 +28,6 @@ QgsAdvancedDigitizingCanvasItem::QgsAdvancedDigitizingCanvasItem( QgsMapCanvas * , mSnapPen( QPen( QColor( 127, 0, 0, 150 ), 1 ) ) , mSnapLinePen( QPen( QColor( 127, 0, 0, 150 ), 1, Qt::DashLine ) ) , mCursorPen( QPen( QColor( 127, 127, 127, 255 ), 1 ) ) - , mSnapIndicator( qgis::make_unique< QgsSnapIndicator>( canvas ) ) , mAdvancedDigitizingDockWidget( cadDockWidget ) { } @@ -238,15 +237,4 @@ void QgsAdvancedDigitizingCanvasItem::paint( QPainter *painter ) painter->drawLine( curPointPix + QPointF( -5, +5 ), curPointPix + QPointF( +5, -5 ) ); } - - - QgsPointLocator::Match match = mAdvancedDigitizingDockWidget->mapPointMatch(); - if ( match.isValid() ) - { - mSnapIndicator->setMatch( match ); - mSnapIndicator->setVisible( true ); - } - else - mSnapIndicator->setVisible( false ); - } diff --git a/src/gui/qgsadvanceddigitizingcanvasitem.h b/src/gui/qgsadvanceddigitizingcanvasitem.h index 5aa15869d7..4ebfa10a26 100644 --- a/src/gui/qgsadvanceddigitizingcanvasitem.h +++ b/src/gui/qgsadvanceddigitizingcanvasitem.h @@ -20,7 +20,7 @@ #include "qgsmapcanvasitem.h" #include "qgis_gui.h" -#include "qgssnapindicator.h" + class QgsAdvancedDigitizingDockWidget; @@ -35,17 +35,13 @@ class GUI_EXPORT QgsAdvancedDigitizingCanvasItem : public QgsMapCanvasItem void paint( QPainter *painter ) override; - protected: + private: QPen mLockedPen; QPen mConstruction1Pen; QPen mConstruction2Pen; QPen mSnapPen; QPen mSnapLinePen; QPen mCursorPen; - //! Snapping indicators - std::unique_ptr<QgsSnapIndicator> mSnapIndicator; - - private: QgsAdvancedDigitizingDockWidget *mAdvancedDigitizingDockWidget = nullptr; }; diff --git a/src/gui/qgsadvanceddigitizingdockwidget.cpp b/src/gui/qgsadvanceddigitizingdockwidget.cpp index 36775a113d..5dfa229f6a 100644 --- a/src/gui/qgsadvanceddigitizingdockwidget.cpp +++ b/src/gui/qgsadvanceddigitizingdockwidget.cpp @@ -38,6 +38,7 @@ QgsAdvancedDigitizingDockWidget::QgsAdvancedDigitizingDockWidget( QgsMapCanvas *canvas, QWidget *parent ) : QgsDockWidget( parent ) , mMapCanvas( canvas ) + , mSnapIndicator( qgis::make_unique< QgsSnapIndicator>( canvas ) ) , mCommonAngleConstraint( QgsSettings().value( QStringLiteral( "/Cad/CommonAngle" ), 90 ).toDouble() ) { setupUi( this ); @@ -554,6 +555,17 @@ bool QgsAdvancedDigitizingDockWidget::applyConstraints( QgsMapMouseEvent *e ) e->setMapPoint( point ); mSnapMatch = context.snappingUtils->snapToMap( point ); + + if ( mSnapMatch.isValid() ) + { + mSnapIndicator->setMatch( mSnapMatch ); + mSnapIndicator->setVisible( true ); + } + else + { + mSnapIndicator->setVisible( false ); + } + /* * Constraints are applied in 2D, they are always called when using the tool * but they do not take into account if when you snap on a vertex it has @@ -1020,6 +1032,7 @@ void QgsAdvancedDigitizingDockWidget::addPoint( const QgsPointXY &point ) } updateCapacity(); + updateCadPaintItem(); } void QgsAdvancedDigitizingDockWidget::removePreviousPoint() @@ -1030,6 +1043,7 @@ void QgsAdvancedDigitizingDockWidget::removePreviousPoint() int i = pointsCount() > 1 ? 1 : 0; mCadPointList.removeAt( i ); updateCapacity(); + updateCadPaintItem(); } void QgsAdvancedDigitizingDockWidget::clearPoints() @@ -1038,6 +1052,7 @@ void QgsAdvancedDigitizingDockWidget::clearPoints() mSnappedSegment.clear(); updateCapacity(); + updateCadPaintItem(); } void QgsAdvancedDigitizingDockWidget::updateCurrentPoint( const QgsPointXY &point ) @@ -1051,6 +1066,7 @@ void QgsAdvancedDigitizingDockWidget::updateCurrentPoint( const QgsPointXY &poin { mCadPointList[0] = point; } + updateCadPaintItem(); } diff --git a/src/gui/qgsadvanceddigitizingdockwidget.h b/src/gui/qgsadvanceddigitizingdockwidget.h index f4cf873989..c7f1c4348d 100644 --- a/src/gui/qgsadvanceddigitizingdockwidget.h +++ b/src/gui/qgsadvanceddigitizingdockwidget.h @@ -27,6 +27,7 @@ #include "qgsmessagebaritem.h" #include "qgspointxy.h" #include "qgspointlocator.h" +#include "qgssnapindicator.h" class QgsAdvancedDigitizingCanvasItem; @@ -278,6 +279,12 @@ class GUI_EXPORT QgsAdvancedDigitizingDockWidget : public QgsDockWidget, private */ void addPoint( const QgsPointXY &point ); + /** + * Remove previous point in the CAD point list + * \since QGIS 3.8 + */ + void removePreviousPoint(); + /** * Configures list of current CAD points * @@ -426,8 +433,7 @@ class GUI_EXPORT QgsAdvancedDigitizingDockWidget : public QgsDockWidget, private //! update the current point in the CAD point list void updateCurrentPoint( const QgsPointXY &point ); - //! remove previous point in the CAD point list - void removePreviousPoint(); + /** * filters key press @@ -463,6 +469,8 @@ class GUI_EXPORT QgsAdvancedDigitizingDockWidget : public QgsDockWidget, private QgsMapCanvas *mMapCanvas = nullptr; QgsAdvancedDigitizingCanvasItem *mCadPaintItem = nullptr; + //! Snapping indicator + std::unique_ptr<QgsSnapIndicator> mSnapIndicator; CadCapacities mCapacities = nullptr; diff --git a/src/gui/qgsattributedialog.h b/src/gui/qgsattributedialog.h index f6cb2f2b46..e880232b38 100644 --- a/src/gui/qgsattributedialog.h +++ b/src/gui/qgsattributedialog.h @@ -28,7 +28,6 @@ #include <QGridLayout> #include "qgis_gui.h" -class QgsDistanceArea; class QgsHighlight; /** diff --git a/src/gui/qgsexpressionbuilderwidget.cpp b/src/gui/qgsexpressionbuilderwidget.cpp index 330db74c4e..d17c5be6f2 100644 --- a/src/gui/qgsexpressionbuilderwidget.cpp +++ b/src/gui/qgsexpressionbuilderwidget.cpp @@ -626,7 +626,8 @@ void QgsExpressionBuilderWidget::updateFunctionTree() QString casestring = QStringLiteral( "CASE WHEN condition THEN result END" ); registerItem( QStringLiteral( "Conditionals" ), QStringLiteral( "CASE" ), casestring ); - registerItem( QStringLiteral( "Fields and Values" ), QStringLiteral( "NULL" ), QStringLiteral( "NULL" ) ); + // use -1 as sort order here -- NULL should always show before the field list + registerItem( QStringLiteral( "Fields and Values" ), QStringLiteral( "NULL" ), QStringLiteral( "NULL" ), QString(), QgsExpressionItem::ExpressionNode, false, -1 ); // Load the functions from the QgsExpression class int count = QgsExpression::functionCount(); diff --git a/src/gui/qgsexternalresourcewidget.cpp b/src/gui/qgsexternalresourcewidget.cpp index 3d27173f8a..9793f99557 100644 --- a/src/gui/qgsexternalresourcewidget.cpp +++ b/src/gui/qgsexternalresourcewidget.cpp @@ -230,7 +230,7 @@ void QgsExternalResourceWidget::loadDocument( const QString &path ) #ifdef WITH_QTWEBKIT if ( mDocumentViewerContent == Web ) { - mWebView->setUrl( QUrl::fromEncoded( resolvedPath.toUtf8() ) ); + mWebView->load( QUrl::fromEncoded( resolvedPath.toUtf8() ) ); mWebView->page()->settings()->setAttribute( QWebSettings::LocalStorageEnabled, true ); } #endif diff --git a/src/gui/qgsfilewidget.cpp b/src/gui/qgsfilewidget.cpp index e10dc8a2a5..189f2c05e6 100644 --- a/src/gui/qgsfilewidget.cpp +++ b/src/gui/qgsfilewidget.cpp @@ -53,11 +53,13 @@ QgsFileWidget::QgsFileWidget( QWidget *parent ) // otherwise, use the traditional QLineEdit subclass mLineEdit = new QgsFileDropEdit( this ); + mLineEdit->setToolTip( tr( "Full path to the file(s), including name and extension" ) ); connect( mLineEdit, &QLineEdit::textChanged, this, &QgsFileWidget::textEdited ); mLayout->addWidget( mLineEdit ); mFileWidgetButton = new QToolButton( this ); mFileWidgetButton->setText( QChar( 0x2026 ) ); + mFileWidgetButton->setToolTip( tr( "Browse" ) ); connect( mFileWidgetButton, &QAbstractButton::clicked, this, &QgsFileWidget::openFileDialog ); mLayout->addWidget( mFileWidgetButton ); diff --git a/src/gui/qgsgui.h b/src/gui/qgsgui.h index 779339f66d..7630d413a9 100644 --- a/src/gui/qgsgui.h +++ b/src/gui/qgsgui.h @@ -41,10 +41,22 @@ class QgsWindowManagerInterface; * related to GUI classes. * \since QGIS 3.0 */ -class GUI_EXPORT QgsGui +class GUI_EXPORT QgsGui : public QObject { + Q_OBJECT + public: + /** + * Defines the behavior to use when setting the CRS for a newly created project. + */ + enum ProjectCrsBehavior + { + UseCrsOfFirstLayerAdded = 1, //!< Set the project CRS to the CRS of the first layer added to a new project + UsePresetCrs = 2, //!< Always set new projects to use a preset default CRS + }; + Q_ENUM( ProjectCrsBehavior ) + //! QgsGui cannot be copied QgsGui( const QgsGui &other ) = delete; diff --git a/src/gui/qgsmaptip.cpp b/src/gui/qgsmaptip.cpp index 46ac5f2bb5..4e652c1c98 100644 --- a/src/gui/qgsmaptip.cpp +++ b/src/gui/qgsmaptip.cpp @@ -106,7 +106,7 @@ void QgsMapTip::showMapTip( QgsMapLayer *pLayer, backgroundColor = mWidget->palette().base().color().name(); strokeColor = mWidget->palette().shadow().color().name(); - mWidget->setStyleSheet( QString( + mWidget->setStyleSheet( QStringLiteral( ".QWidget{" "border: 1px solid %1;" "background-color: %2;}" ).arg( @@ -126,17 +126,16 @@ void QgsMapTip::showMapTip( QgsMapLayer *pLayer, return; } - bodyStyle = QString( + bodyStyle = QStringLiteral( "background-color: %1;" "margin: 0;" - "white-space: nowrap;" "font: %2pt \"%3\";" ).arg( backgroundColor ).arg( mFontSize ).arg( mFontFamily ); - containerStyle = QString( + containerStyle = QStringLiteral( "display: inline-block;" "margin: 0px" ); - tipHtml = QString( + tipHtml = QStringLiteral( "<html>" "<body style='%1'>" "<div id='QgsWebViewContainer' style='%2'>%3</div>" diff --git a/src/gui/qgsmaptool.cpp b/src/gui/qgsmaptool.cpp index 52e707cc3b..39e9097a47 100644 --- a/src/gui/qgsmaptool.cpp +++ b/src/gui/qgsmaptool.cpp @@ -34,7 +34,8 @@ QgsMapTool::QgsMapTool( QgsMapCanvas *canvas ) QgsMapTool::~QgsMapTool() { - mCanvas->unsetMapTool( this ); + if ( mCanvas ) + mCanvas->unsetMapTool( this ); } diff --git a/src/gui/qgsmaptooladvanceddigitizing.h b/src/gui/qgsmaptooladvanceddigitizing.h index a0a659bf77..660fc255b8 100644 --- a/src/gui/qgsmaptooladvanceddigitizing.h +++ b/src/gui/qgsmaptooladvanceddigitizing.h @@ -107,6 +107,9 @@ class GUI_EXPORT QgsMapToolAdvancedDigitizing : public QgsMapToolEdit */ void setAutoSnapEnabled( bool enabled ) { mAutoSnapEnabled = enabled; } + + QgsAdvancedDigitizingDockWidget *mCadDockWidget = nullptr; + public: /** @@ -172,7 +175,6 @@ class GUI_EXPORT QgsMapToolAdvancedDigitizing : public QgsMapToolEdit void onCurrentLayerChanged(); private: - QgsAdvancedDigitizingDockWidget *mCadDockWidget = nullptr; //! Whether to allow use of advanced digitizing dock at this point bool mAdvancedDigitizingAllowed = true; diff --git a/src/gui/qgsmaptoolcapture.cpp b/src/gui/qgsmaptoolcapture.cpp index b31db02738..3a311a10d7 100644 --- a/src/gui/qgsmaptoolcapture.cpp +++ b/src/gui/qgsmaptoolcapture.cpp @@ -30,6 +30,7 @@ #include "qgsvectorlayer.h" #include "qgsvertexmarker.h" #include "qgssettings.h" +#include "qgsadvanceddigitizingdockwidget.h" #include <QAction> #include <QCursor> @@ -584,6 +585,8 @@ void QgsMapToolCapture::undo() mCaptureCurve.deleteVertex( vertexToRemove ); mSnappingMatches.removeAt( vertexToRemove.vertex ); + mCadDockWidget->removePreviousPoint(); + validateGeometry(); } } diff --git a/src/gui/qgsmaptoolidentify.h b/src/gui/qgsmaptoolidentify.h index 7029e79a26..23eaf0203e 100644 --- a/src/gui/qgsmaptoolidentify.h +++ b/src/gui/qgsmaptoolidentify.h @@ -32,7 +32,6 @@ class QgsMapLayer; class QgsMapCanvas; class QgsHighlight; class QgsIdentifyMenu; -class QgsDistanceArea; /** * \ingroup gui diff --git a/src/gui/qgsnewhttpconnection.cpp b/src/gui/qgsnewhttpconnection.cpp index 54ece6ace6..6a76a3e6b2 100644 --- a/src/gui/qgsnewhttpconnection.cpp +++ b/src/gui/qgsnewhttpconnection.cpp @@ -161,9 +161,10 @@ QgsNewHttpConnection::QgsNewHttpConnection( QWidget *parent, ConnectionTypes typ void QgsNewHttpConnection::wfsVersionCurrentIndexChanged( int index ) { - cbxWfsFeaturePaging->setEnabled( index == 0 || index == 3 ); - lblPageSize->setEnabled( index == 0 || index == 3 ); - txtPageSize->setEnabled( index == 0 || index == 3 ); + // For now 2019-06-06, leave paging checkable for some WFS version 1.1 servers with support + cbxWfsFeaturePaging->setEnabled( index == 0 || index >= 2 ); + lblPageSize->setEnabled( cbxWfsFeaturePaging->isChecked() && ( index == 0 || index >= 2 ) ); + txtPageSize->setEnabled( cbxWfsFeaturePaging->isChecked() && ( index == 0 || index >= 2 ) ); cbxWfsIgnoreAxisOrientation->setEnabled( index != 1 ); } @@ -235,6 +236,11 @@ QPushButton *QgsNewHttpConnection::testConnectButton() return mTestConnectionButton; } +QgsAuthSettingsWidget *QgsNewHttpConnection::authSettingsWidget() +{ + return mAuthSettings; +} + QPushButton *QgsNewHttpConnection::wfsVersionDetectButton() { return mWfsVersionDetectButton; @@ -313,13 +319,17 @@ void QgsNewHttpConnection::updateServiceSpecificSettings() txtReferer->setText( settings.value( wmsKey + "/referer" ).toString() ); txtMaxNumFeatures->setText( settings.value( wfsKey + "/maxnumfeatures" ).toString() ); - bool pagingEnabled = settings.value( wfsKey + "/pagingenabled", true ).toBool(); + // Only default to paging enabled if WFS 2.0.0 or higher + bool pagingEnabled = settings.value( wfsKey + "/pagingenabled", ( versionIdx == 0 || versionIdx >= 3 ) ).toBool(); txtPageSize->setText( settings.value( wfsKey + "/pagesize" ).toString() ); cbxWfsFeaturePaging->setChecked( pagingEnabled ); - txtPageSize->setEnabled( pagingEnabled ); - lblPageSize->setEnabled( pagingEnabled ); - cbxWfsFeaturePaging->setEnabled( pagingEnabled ); + // Enable/disable these items per WFS versions + // For now 2019-06-06, leave paging checkable for some WFS version 1.1 servers with support + txtPageSize->setEnabled( pagingEnabled && ( versionIdx == 0 || versionIdx >= 2 ) ); + lblPageSize->setEnabled( pagingEnabled && ( versionIdx == 0 || versionIdx >= 2 ) ); + cbxWfsFeaturePaging->setEnabled( versionIdx == 0 || versionIdx >= 2 ); + cbxWfsIgnoreAxisOrientation->setEnabled( versionIdx != 1 ); } QUrl QgsNewHttpConnection::urlTrimmed() const diff --git a/src/gui/qgsnewhttpconnection.h b/src/gui/qgsnewhttpconnection.h index fc079a3dd8..4def6af481 100644 --- a/src/gui/qgsnewhttpconnection.h +++ b/src/gui/qgsnewhttpconnection.h @@ -115,6 +115,12 @@ class GUI_EXPORT QgsNewHttpConnection : public QDialog, private Ui::QgsNewHttpCo */ QPushButton *testConnectButton(); + /** + * Returns the current authentication settings widget. + * \since QGIS 3.8 + */ + QgsAuthSettingsWidget *authSettingsWidget() SIP_SKIP; + /** * Returns the "WFS version detect" button. * \since QGIS 3.2 diff --git a/src/gui/qgsprojectionselectionwidget.cpp b/src/gui/qgsprojectionselectionwidget.cpp index bba3e7e1ac..b9d6223a85 100644 --- a/src/gui/qgsprojectionselectionwidget.cpp +++ b/src/gui/qgsprojectionselectionwidget.cpp @@ -39,8 +39,7 @@ QgsProjectionSelectionWidget::QgsProjectionSelectionWidget( QWidget *parent ) addProjectCrsOption(); QgsSettings settings; - QString defCrsString = settings.value( QStringLiteral( "Projections/projectDefaultCrs" ), GEO_EPSG_CRS_AUTHID ).toString(); - mDefaultCrs = QgsCoordinateReferenceSystem::fromOgcWmsCrs( defCrsString ); + mDefaultCrs = QgsCoordinateReferenceSystem( settings.value( QStringLiteral( "/projections/defaultProjectCrs" ), GEO_EPSG_CRS_AUTHID, QgsSettings::App ).toString() ); if ( mDefaultCrs.authid() != mProjectCrs.authid() ) { //only show default CRS option if it's different to the project CRS, avoids @@ -172,9 +171,11 @@ void QgsProjectionSelectionWidget::selectCrs() //find out crs id of current proj4 string QgsProjectionSelectionDialog dlg( this ); dlg.setMessage( mMessage ); - if ( mCrs.isValid() ) + dlg.setCrs( mCrs ); + + if ( optionVisible( QgsProjectionSelectionWidget::CrsOption::CrsNotSet ) ) { - dlg.setCrs( mCrs ); + dlg.setShowNoProjection( true ); } if ( dlg.exec() ) diff --git a/src/gui/qgsrasterlayersaveasdialog.cpp b/src/gui/qgsrasterlayersaveasdialog.cpp index 77c76a0b38..ca46590d7a 100644 --- a/src/gui/qgsrasterlayersaveasdialog.cpp +++ b/src/gui/qgsrasterlayersaveasdialog.cpp @@ -910,19 +910,28 @@ bool QgsRasterLayerSaveAsDialog::validate() const bool QgsRasterLayerSaveAsDialog::outputLayerExists() const { - QString uri; + QString vectorUri; + QString rasterUri; if ( outputFormat() == QStringLiteral( "GPKG" ) ) { - uri = QStringLiteral( "GPKG:%1:%2" ).arg( outputFileName(), outputLayerName() ); + rasterUri = QStringLiteral( "GPKG:%1:%2" ).arg( outputFileName(), outputLayerName() ); + vectorUri = QStringLiteral( "%1|layername=%2" ).arg( outputFileName(), outputLayerName() ); } else { - uri = outputFileName(); + rasterUri = outputFileName(); } - std::unique_ptr< QgsRasterLayer > rastLayer( new QgsRasterLayer( uri, "", QStringLiteral( "gdal" ) ) ); - std::unique_ptr< QgsVectorLayer > vectLayer( new QgsVectorLayer( uri, "", QStringLiteral( "ogr" ) ) ); - return ( rastLayer->isValid() || vectLayer->isValid() ); + QgsRasterLayer rasterLayer( rasterUri, QString( ), QStringLiteral( "gdal" ) ); + if ( !vectorUri.isEmpty() ) + { + QgsVectorLayer vectorLayer( vectorUri, QString( ), QStringLiteral( "ogr" ) ); + return rasterLayer.isValid() || vectorLayer.isValid(); + } + else + { + return rasterLayer.isValid(); + } } void QgsRasterLayerSaveAsDialog::accept() diff --git a/src/gui/qgsrasterlayersaveasdialog.h b/src/gui/qgsrasterlayersaveasdialog.h index ac83c0033b..4876f1136e 100644 --- a/src/gui/qgsrasterlayersaveasdialog.h +++ b/src/gui/qgsrasterlayersaveasdialog.h @@ -148,6 +148,8 @@ class GUI_EXPORT QgsRasterLayerSaveAsDialog: public QDialog, private Ui::QgsRast bool outputLayerExists() const; void insertAvailableOutputFormats(); + + friend class TestQgsRasterLayerSaveAsDialog; }; diff --git a/src/gui/qgsscalerangewidget.h b/src/gui/qgsscalerangewidget.h index d65af6d022..0509104bbe 100644 --- a/src/gui/qgsscalerangewidget.h +++ b/src/gui/qgsscalerangewidget.h @@ -77,6 +77,11 @@ class GUI_EXPORT QgsScaleRangeWidget : public QWidget * \see minimumScale() * \see setMaximumScale() * \see setScaleRange() + * + * \warning Calling setMinimumScale() places a restriction on the acceptable maximum scale for the + * widget, and will alter any previously set maximum scale to pass this constraint. Always + * call setMinimumScale() before setMaximumScale() when restoring a scale range in the widget, or + * use the convenience method setScaleRange() instead. */ void setMinimumScale( double scale ); @@ -86,6 +91,11 @@ class GUI_EXPORT QgsScaleRangeWidget : public QWidget * \see maximumScale() * \see setMinimumScale() * \see setScaleRange() + * + * \warning Calling setMinimumScale() places a restriction on the acceptable maximum scale for the + * widget, and will alter any previously set maximum scale to pass this constraint. Always + * call setMinimumScale() before setMaximumScale() when restoring a scale range in the widget, or + * use the convenience method setScaleRange() instead. */ void setMaximumScale( double scale ); diff --git a/src/gui/qgssnapindicator.cpp b/src/gui/qgssnapindicator.cpp index 448f2cf16f..03b6dc5e79 100644 --- a/src/gui/qgssnapindicator.cpp +++ b/src/gui/qgssnapindicator.cpp @@ -27,9 +27,23 @@ QgsSnapIndicator::QgsSnapIndicator( QgsMapCanvas *canvas ) : mCanvas( canvas ) { + mCanvasDestroyedConnection = QObject::connect( canvas, &QgsMapCanvas::destroyed, [ = ]() + { + mCanvas = nullptr; + mSnappingMarker = nullptr; + } ); } -QgsSnapIndicator::~QgsSnapIndicator() = default; +QgsSnapIndicator::~QgsSnapIndicator() +{ + if ( mSnappingMarker && mCanvas ) + { + mCanvas->scene()->removeItem( mSnappingMarker ); + delete mSnappingMarker; + } + + QObject::disconnect( mCanvasDestroyedConnection ); +}; void QgsSnapIndicator::setMatch( const QgsPointLocator::Match &match ) { @@ -37,14 +51,19 @@ void QgsSnapIndicator::setMatch( const QgsPointLocator::Match &match ) if ( !mMatch.isValid() ) { - mSnappingMarker.reset(); + if ( mSnappingMarker ) + { + mCanvas->scene()->removeItem( mSnappingMarker ); + delete mSnappingMarker; // need to delete since QGraphicsSene::removeItem transfers back ownership + } + mSnappingMarker = nullptr; QToolTip::hideText(); } else { if ( !mSnappingMarker ) { - mSnappingMarker.reset( new QgsVertexMarker( mCanvas ) ); + mSnappingMarker = new QgsVertexMarker( mCanvas ); // ownership of the marker is transferred to QGraphicsScene mSnappingMarker->setIconSize( QgsGuiUtils::scaleIconSize( 10 ) ); mSnappingMarker->setPenWidth( QgsGuiUtils::scaleIconSize( 3 ) ); } diff --git a/src/gui/qgssnapindicator.h b/src/gui/qgssnapindicator.h index 218e4b565e..5251244d72 100644 --- a/src/gui/qgssnapindicator.h +++ b/src/gui/qgssnapindicator.h @@ -56,7 +56,8 @@ class GUI_EXPORT QgsSnapIndicator QgsMapCanvas *mCanvas; QgsPointLocator::Match mMatch; - std::unique_ptr<QgsVertexMarker> mSnappingMarker; + QgsVertexMarker *mSnappingMarker = nullptr; + QMetaObject::Connection mCanvasDestroyedConnection; }; #endif // QGSSNAPINDICATOR_H diff --git a/src/gui/qgsstatusbar.cpp b/src/gui/qgsstatusbar.cpp index 642a35d3fa..b0da2b2d29 100644 --- a/src/gui/qgsstatusbar.cpp +++ b/src/gui/qgsstatusbar.cpp @@ -21,6 +21,7 @@ #include <QPalette> #include <QTimer> #include <QEvent> +#include <QStatusBar> QgsStatusBar::QgsStatusBar( QWidget *parent ) : QWidget( parent ) @@ -91,6 +92,17 @@ void QgsStatusBar::clearMessage() mLineEdit->setText( QString() ); } +void QgsStatusBar::setParentStatusBar( QStatusBar *statusBar ) +{ + if ( mParentStatusBar ) + mParentStatusBar->disconnect( mShowMessageConnection ); + + mParentStatusBar = statusBar; + + if ( mParentStatusBar ) + mShowMessageConnection = connect( mParentStatusBar, &QStatusBar::messageChanged, this, [this]( const QString & message ) { showMessage( message ); } ); +} + void QgsStatusBar::changeEvent( QEvent *event ) { QWidget::changeEvent( event ); diff --git a/src/gui/qgsstatusbar.h b/src/gui/qgsstatusbar.h index 81b840dbec..9e39501f43 100644 --- a/src/gui/qgsstatusbar.h +++ b/src/gui/qgsstatusbar.h @@ -24,6 +24,7 @@ class QHBoxLayout; class QLineEdit; +class QStatusBar; /** * \class QgsStatusBar @@ -100,6 +101,15 @@ class GUI_EXPORT QgsStatusBar : public QWidget */ void clearMessage(); + /** + * Sets the parent status bar. + * Messages that are shown on the parent status bar will be intercepted + * and shown on this status bar too. + * + * \since QGIS 3.8 + */ + void setParentStatusBar( QStatusBar *statusBar ); + protected: @@ -110,6 +120,8 @@ class GUI_EXPORT QgsStatusBar : public QWidget QHBoxLayout *mLayout = nullptr; QLineEdit *mLineEdit = nullptr; QTimer *mTempMessageTimer = nullptr; + QStatusBar *mParentStatusBar = nullptr; + QMetaObject::Connection mShowMessageConnection; }; diff --git a/src/gui/qgstextformatwidget.cpp b/src/gui/qgstextformatwidget.cpp index af1870423c..f58fa1e572 100644 --- a/src/gui/qgstextformatwidget.cpp +++ b/src/gui/qgstextformatwidget.cpp @@ -149,6 +149,7 @@ void QgsTextFormatWidget::initWidget() mFontLetterSpacingSpinBox->setClearValue( 0.0 ); mFontWordSpacingSpinBox->setClearValue( 0.0 ); mZIndexSpinBox->setClearValue( 0.0 ); + mLineDistanceSpnBx->setClearValue( 0.0 ); mObstacleTypeComboBox->addItem( tr( "Over the feature's interior" ), QgsPalLayerSettings::PolygonInterior ); mObstacleTypeComboBox->addItem( tr( "Over the feature's boundary" ), QgsPalLayerSettings::PolygonBoundary ); @@ -511,7 +512,8 @@ void QgsTextFormatWidget::initWidget() << radPolygonPerimeterCurved << radPredefinedOrder << mFieldExpressionWidget - << mCheckBoxSubstituteText; + << mCheckBoxSubstituteText + << mLinePlacementFlagsDDBtn; connectValueChanged( widgets, SLOT( updatePreview() ) ); connect( mQuadrantBtnGrp, static_cast<void ( QButtonGroup::* )( int )>( &QButtonGroup::buttonClicked ), this, &QgsTextFormatWidget::updatePreview ); diff --git a/src/gui/symbology/qgsinvertedpolygonrendererwidget.cpp b/src/gui/symbology/qgsinvertedpolygonrendererwidget.cpp index 04a45ee22b..4854157831 100644 --- a/src/gui/symbology/qgsinvertedpolygonrendererwidget.cpp +++ b/src/gui/symbology/qgsinvertedpolygonrendererwidget.cpp @@ -119,6 +119,13 @@ void QgsInvertedPolygonRendererWidget::setContext( const QgsSymbolWidgetContext mEmbeddedRendererWidget->setContext( context ); } +void QgsInvertedPolygonRendererWidget::setDockMode( bool dockMode ) +{ + QgsRendererWidget::setDockMode( dockMode ); + if ( mEmbeddedRendererWidget ) + mEmbeddedRendererWidget->setDockMode( dockMode ); +} + void QgsInvertedPolygonRendererWidget::mRendererComboBox_currentIndexChanged( int index ) { QString rendererId = mRendererComboBox->itemData( index ).toString(); @@ -128,6 +135,8 @@ void QgsInvertedPolygonRendererWidget::mRendererComboBox_currentIndexChanged( in mEmbeddedRendererWidget.reset( m->createRendererWidget( mLayer, mStyle, const_cast<QgsFeatureRenderer *>( mRenderer->embeddedRenderer() )->clone() ) ); connect( mEmbeddedRendererWidget.get(), &QgsRendererWidget::widgetChanged, this, &QgsInvertedPolygonRendererWidget::widgetChanged ); mEmbeddedRendererWidget->setContext( mContext ); + mEmbeddedRendererWidget->setDockMode( this->dockMode() ); + connect( mEmbeddedRendererWidget.get(), &QgsPanelWidget::showPanel, this, &QgsPanelWidget::openPanel ); if ( layout()->count() > 2 ) { diff --git a/src/gui/symbology/qgsinvertedpolygonrendererwidget.h b/src/gui/symbology/qgsinvertedpolygonrendererwidget.h index cd126bef91..90dd5d3c53 100644 --- a/src/gui/symbology/qgsinvertedpolygonrendererwidget.h +++ b/src/gui/symbology/qgsinvertedpolygonrendererwidget.h @@ -55,6 +55,8 @@ class GUI_EXPORT QgsInvertedPolygonRendererWidget : public QgsRendererWidget, pr void setContext( const QgsSymbolWidgetContext &context ) override; + void setDockMode( bool dockMode ) override; + protected: //! The mask renderer std::unique_ptr<QgsInvertedPolygonRenderer> mRenderer; diff --git a/src/gui/symbology/qgsrulebasedrendererwidget.cpp b/src/gui/symbology/qgsrulebasedrendererwidget.cpp index 42a89b5c20..79af8657ba 100644 --- a/src/gui/symbology/qgsrulebasedrendererwidget.cpp +++ b/src/gui/symbology/qgsrulebasedrendererwidget.cpp @@ -647,8 +647,8 @@ QgsRendererRulePropsWidget::QgsRendererRulePropsWidget( QgsRuleBasedRenderer::Ru if ( mRule->dependsOnScale() ) { groupScale->setChecked( true ); - mScaleRangeWidget->setMaximumScale( std::max( rule->maximumScale(), 0.0 ) ); - mScaleRangeWidget->setMinimumScale( std::max( rule->minimumScale(), 0.0 ) ); + mScaleRangeWidget->setScaleRange( std::max( rule->minimumScale(), 0.0 ), + std::max( rule->maximumScale(), 0.0 ) ); } mScaleRangeWidget->setMapCanvas( mContext.mapCanvas() ); diff --git a/src/plugins/evis/databaseconnection/evisdatabaseconnectiongui.cpp b/src/plugins/evis/databaseconnection/evisdatabaseconnectiongui.cpp index 13c71129a6..3f5ca6766b 100644 --- a/src/plugins/evis/databaseconnection/evisdatabaseconnectiongui.cpp +++ b/src/plugins/evis/databaseconnection/evisdatabaseconnectiongui.cpp @@ -545,5 +545,5 @@ void eVisDatabaseConnectionGui::pbtnRunQuery_clicked() void eVisDatabaseConnectionGui::showHelp() { - QgsHelp::openHelp( QStringLiteral( "plugins/plugins_evis.html#database-connection" ) ); + QgsHelp::openHelp( QStringLiteral( "plugins/core_plugins/plugins_evis.html#database-connection" ) ); } diff --git a/src/plugins/geometry_checker/qgsgeometrycheckerdialog.cpp b/src/plugins/geometry_checker/qgsgeometrycheckerdialog.cpp index b4baee3453..4c493d85c4 100644 --- a/src/plugins/geometry_checker/qgsgeometrycheckerdialog.cpp +++ b/src/plugins/geometry_checker/qgsgeometrycheckerdialog.cpp @@ -112,5 +112,5 @@ void QgsGeometryCheckerDialog::closeEvent( QCloseEvent *ev ) void QgsGeometryCheckerDialog::showHelp() { - QgsHelp::openHelp( QStringLiteral( "plugins/plugins_geometry_checker.html" ) ); + QgsHelp::openHelp( QStringLiteral( "plugins/core_plugins/plugins_geometry_checker.html" ) ); } diff --git a/src/plugins/georeferencer/qgsgeorefplugingui.cpp b/src/plugins/georeferencer/qgsgeorefplugingui.cpp index 2392ff3fa6..28fb59f1b9 100644 --- a/src/plugins/georeferencer/qgsgeorefplugingui.cpp +++ b/src/plugins/georeferencer/qgsgeorefplugingui.cpp @@ -690,7 +690,7 @@ void QgsGeorefPluginGui::localHistogramStretch() // Info slots void QgsGeorefPluginGui::showHelp() { - QgsHelp::openHelp( QStringLiteral( "plugins/plugins_georeferencer.html#defining-the-transformation-settings" ) ); + QgsHelp::openHelp( QStringLiteral( "plugins/core_plugins/plugins_georeferencer.html#defining-the-transformation-settings" ) ); } // Comfort slots diff --git a/src/plugins/grass/qgis_grass_test.py b/src/plugins/grass/qgis_grass_test.py index faaebe500c..4b2022251d 100755 --- a/src/plugins/grass/qgis_grass_test.py +++ b/src/plugins/grass/qgis_grass_test.py @@ -38,7 +38,7 @@ __author__ = 'Radim Blazek' __date__ = 'December 2012' __copyright__ = '(C) 2012, Radim Blazek' -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import sys diff --git a/src/plugins/grass/scripts/db.connect-login.pg.py b/src/plugins/grass/scripts/db.connect-login.pg.py index 35335be772..f4e3f2ad81 100644 --- a/src/plugins/grass/scripts/db.connect-login.pg.py +++ b/src/plugins/grass/scripts/db.connect-login.pg.py @@ -22,7 +22,7 @@ __author__ = 'Radim Blazek' __date__ = 'July 2009' __copyright__ = '(C) 2009, Radim Blazek' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' #%Module diff --git a/src/plugins/grass/scripts/qgis.v.kernel.rast.py b/src/plugins/grass/scripts/qgis.v.kernel.rast.py index a2dddad9af..6a0190e359 100644 --- a/src/plugins/grass/scripts/qgis.v.kernel.rast.py +++ b/src/plugins/grass/scripts/qgis.v.kernel.rast.py @@ -22,7 +22,7 @@ __author__ = 'Radim Blazek' __date__ = 'February 2010' __copyright__ = '(C) 2010, Radim Blazek' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' ############################################################################ diff --git a/src/plugins/grass/scripts/qgis.v.upgrade.py b/src/plugins/grass/scripts/qgis.v.upgrade.py index f641dba75c..5ed9e28d1b 100644 --- a/src/plugins/grass/scripts/qgis.v.upgrade.py +++ b/src/plugins/grass/scripts/qgis.v.upgrade.py @@ -22,7 +22,7 @@ __author__ = 'Radim Blazek' __date__ = 'October 2015' __copyright__ = '(C) 2015 by Radim Blazek' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' ############################################################################ diff --git a/src/plugins/grass/scripts/r.external.all.py b/src/plugins/grass/scripts/r.external.all.py index d32d200031..527faf7279 100644 --- a/src/plugins/grass/scripts/r.external.all.py +++ b/src/plugins/grass/scripts/r.external.all.py @@ -22,7 +22,7 @@ __author__ = 'Lorenzo Masini' __date__ = 'July 2009' __copyright__ = '(C) 2009, Lorenzo Masini' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' ############################################################################ diff --git a/src/plugins/grass/scripts/v.out.ogr.pg.py b/src/plugins/grass/scripts/v.out.ogr.pg.py index a76ac07a1e..f56baa7df5 100644 --- a/src/plugins/grass/scripts/v.out.ogr.pg.py +++ b/src/plugins/grass/scripts/v.out.ogr.pg.py @@ -22,7 +22,7 @@ __author__ = 'Radim Blazek' __date__ = 'July 2009' __copyright__ = '(C) 2009, Radim Blazek' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' ############################################################################ diff --git a/src/plugins/offline_editing/offline_editing_plugin_gui.cpp b/src/plugins/offline_editing/offline_editing_plugin_gui.cpp index 31e6db4122..471861a252 100644 --- a/src/plugins/offline_editing/offline_editing_plugin_gui.cpp +++ b/src/plugins/offline_editing/offline_editing_plugin_gui.cpp @@ -238,7 +238,7 @@ void QgsOfflineEditingPluginGui::buttonBox_rejected() void QgsOfflineEditingPluginGui::showHelp() { - QgsHelp::openHelp( QStringLiteral( "plugins/plugins_offline_editing.html" ) ); + QgsHelp::openHelp( QStringLiteral( "plugins/core_plugins/plugins_offline_editing.html" ) ); } void QgsOfflineEditingPluginGui::restoreState() diff --git a/src/plugins/topology/rulesDialog.cpp b/src/plugins/topology/rulesDialog.cpp index 98cf775da1..f62369930c 100644 --- a/src/plugins/topology/rulesDialog.cpp +++ b/src/plugins/topology/rulesDialog.cpp @@ -336,5 +336,5 @@ void rulesDialog::clearRules() void rulesDialog::showHelp() { - QgsHelp::openHelp( QStringLiteral( "plugins/plugins_topology_checker.html" ) ); + QgsHelp::openHelp( QStringLiteral( "plugins/core_plugins/plugins_topology_checker.html" ) ); } diff --git a/src/providers/arcgisrest/CMakeLists.txt b/src/providers/arcgisrest/CMakeLists.txt index 248326a4aa..a250254c41 100644 --- a/src/providers/arcgisrest/CMakeLists.txt +++ b/src/providers/arcgisrest/CMakeLists.txt @@ -6,6 +6,7 @@ INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/core/raster ${CMAKE_SOURCE_DIR}/src/core/metadata ${CMAKE_SOURCE_DIR}/src/core/symbology + ${CMAKE_SOURCE_DIR}/src/core/pal ${CMAKE_SOURCE_DIR}/src/gui ${CMAKE_SOURCE_DIR}/src/gui/auth ${CMAKE_BINARY_DIR}/src/ui @@ -14,6 +15,7 @@ INCLUDE_DIRECTORIES( ) INCLUDE_DIRECTORIES(SYSTEM + ${GEOS_INCLUDE_DIR} ${QCA_INCLUDE_DIR} ${QTKEYCHAIN_INCLUDE_DIR} ) diff --git a/src/providers/arcgisrest/qgsafsshareddata.cpp b/src/providers/arcgisrest/qgsafsshareddata.cpp index d2f9c0ebb5..abf78f0b14 100644 --- a/src/providers/arcgisrest/qgsafsshareddata.cpp +++ b/src/providers/arcgisrest/qgsafsshareddata.cpp @@ -35,17 +35,6 @@ bool QgsAfsSharedData::getFeature( QgsFeatureId id, QgsFeature &f, const QgsRect return filterRect.isNull() || ( f.hasGeometry() && f.geometry().intersects( filterRect ) ); } - // When fetching from server, fetch all attributes and geometry by default so that we can cache them - QStringList fetchAttribNames; - QList<int> fetchAttribIdx; - fetchAttribIdx.reserve( mFields.size() ); - fetchAttribNames.reserve( mFields.size() ); - for ( int idx = 0, n = mFields.size(); idx < n; ++idx ) - { - fetchAttribNames.append( mFields.at( idx ).name() ); - fetchAttribIdx.append( idx ); - } - // Fetch 100 features at the time int startId = ( id / 100 ) * 100; int stopId = std::min( startId + 100, mObjectIds.length() ); @@ -72,7 +61,7 @@ bool QgsAfsSharedData::getFeature( QgsFeatureId id, QgsFeature &f, const QgsRect const QString authcfg = mDataSource.authConfigId(); const QVariantMap queryData = QgsArcGisRestUtils::getObjects( mDataSource.param( QStringLiteral( "url" ) ), authcfg, objectIds, mDataSource.param( QStringLiteral( "crs" ) ), true, - fetchAttribNames, QgsWkbTypes::hasM( mGeometryType ), QgsWkbTypes::hasZ( mGeometryType ), + QStringList(), QgsWkbTypes::hasM( mGeometryType ), QgsWkbTypes::hasZ( mGeometryType ), filterRect, errorTitle, errorMessage, feedback ); if ( queryData.isEmpty() ) @@ -97,36 +86,33 @@ bool QgsAfsSharedData::getFeature( QgsFeatureId id, QgsFeature &f, const QgsRect int featureId = startId + i; // Set attributes - if ( !fetchAttribIdx.isEmpty() ) + const QVariantMap attributesData = featureData[QStringLiteral( "attributes" )].toMap(); + feature.setFields( mFields ); + QgsAttributes attributes( mFields.size() ); + for ( int idx = 0; idx < mFields.size(); ++idx ) { - const QVariantMap attributesData = featureData[QStringLiteral( "attributes" )].toMap(); - feature.setFields( mFields ); - QgsAttributes attributes( mFields.size() ); - for ( int idx : qgis::as_const( fetchAttribIdx ) ) + QVariant attribute = attributesData[mFields.at( idx ).name()]; + if ( attribute.isNull() ) + { + // ensure that null values are mapped correctly for PyQGIS + attribute = QVariant( QVariant::Int ); + } + + // date/datetime fields must be converted + if ( mFields.at( idx ).type() == QVariant::DateTime || mFields.at( idx ).type() == QVariant::Date ) + attribute = QgsArcGisRestUtils::parseDateTime( attribute ); + + if ( !mFields.at( idx ).convertCompatible( attribute ) ) + { + QgsDebugMsg( QStringLiteral( "Invalid value %1 for field %2 of type %3" ).arg( attributesData[mFields.at( idx ).name()].toString(), mFields.at( idx ).name(), mFields.at( idx ).typeName() ) ); + } + attributes[idx] = attribute; + if ( mFields.at( idx ).name() == mObjectIdFieldName ) { - QVariant attribute = attributesData[mFields.at( idx ).name()]; - if ( attribute.isNull() ) - { - // ensure that null values are mapped correctly for PyQGIS - attribute = QVariant( QVariant::Int ); - } - - // date/datetime fields must be converted - if ( mFields.at( idx ).type() == QVariant::DateTime || mFields.at( idx ).type() == QVariant::Date ) - attribute = QgsArcGisRestUtils::parseDateTime( attribute ); - - if ( !mFields.at( idx ).convertCompatible( attribute ) ) - { - QgsDebugMsg( QStringLiteral( "Invalid value %1 for field %2 of type %3" ).arg( attributesData[mFields.at( idx ).name()].toString(), mFields.at( idx ).name(), mFields.at( idx ).typeName() ) ); - } - attributes[idx] = attribute; - if ( mFields.at( idx ).name() == mObjectIdFieldName ) - { - featureId = startId + objectIds.indexOf( attributesData[mFields.at( idx ).name()].toInt() ); - } + featureId = startId + objectIds.indexOf( attributesData[mFields.at( idx ).name()].toInt() ); } - feature.setAttributes( attributes ); } + feature.setAttributes( attributes ); // Set FID feature.setId( featureId ); diff --git a/src/providers/arcgisrest/qgsamsprovider.cpp b/src/providers/arcgisrest/qgsamsprovider.cpp index bd6186fd28..752497bd00 100644 --- a/src/providers/arcgisrest/qgsamsprovider.cpp +++ b/src/providers/arcgisrest/qgsamsprovider.cpp @@ -454,7 +454,7 @@ QgsRasterIdentifyResult QgsAmsProvider::identify( const QgsPointXY &point, QgsRa return QgsRasterIdentifyResult( format, entries ); } -void QgsAmsProvider::readBlock( int /*bandNo*/, const QgsRectangle &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback ) +bool QgsAmsProvider::readBlock( int /*bandNo*/, const QgsRectangle &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback ) { Q_UNUSED( feedback ); // TODO: make use of the feedback object @@ -462,10 +462,14 @@ void QgsAmsProvider::readBlock( int /*bandNo*/, const QgsRectangle &viewExtent, draw( viewExtent, width, height ); if ( mCachedImage.width() != width || mCachedImage.height() != height ) { + if ( feedback ) + feedback->appendError( tr( "Unexpected image size for block" ) ); + QgsDebugMsg( QStringLiteral( "Unexpected image size for block" ) ); - return; + return false; } std::memcpy( data, mCachedImage.constBits(), mCachedImage.bytesPerLine() * mCachedImage.height() ); + return true; } #ifdef HAVE_GUI diff --git a/src/providers/arcgisrest/qgsamsprovider.h b/src/providers/arcgisrest/qgsamsprovider.h index 9459466161..c7c4f772bc 100644 --- a/src/providers/arcgisrest/qgsamsprovider.h +++ b/src/providers/arcgisrest/qgsamsprovider.h @@ -86,7 +86,7 @@ class QgsAmsProvider : public QgsRasterDataProvider QgsRasterIdentifyResult identify( const QgsPointXY &point, QgsRaster::IdentifyFormat format, const QgsRectangle &extent = QgsRectangle(), int width = 0, int height = 0, int dpi = 96 ) override; protected: - void readBlock( int bandNo, const QgsRectangle &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; + bool readBlock( int bandNo, const QgsRectangle &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; void draw( const QgsRectangle &viewExtent, int pixelWidth, int pixelHeight ); diff --git a/src/providers/arcgisrest/qgsarcgisrestutils.cpp b/src/providers/arcgisrest/qgsarcgisrestutils.cpp index 1296ee390b..d0470b42e8 100644 --- a/src/providers/arcgisrest/qgsarcgisrestutils.cpp +++ b/src/providers/arcgisrest/qgsarcgisrestutils.cpp @@ -433,17 +433,16 @@ QVariantMap QgsArcGisRestUtils::getObjects( const QString &layerurl, const QStri QString wkid = crs.indexOf( QLatin1String( ":" ) ) >= 0 ? crs.split( ':' )[1] : QString(); queryUrl.addQueryItem( QStringLiteral( "inSR" ), wkid ); queryUrl.addQueryItem( QStringLiteral( "outSR" ), wkid ); - QString outFields = fetchAttributes.join( QStringLiteral( "," ) ); - if ( fetchGeometry ) - { - queryUrl.addQueryItem( QStringLiteral( "returnGeometry" ), QStringLiteral( "true" ) ); - queryUrl.addQueryItem( QStringLiteral( "outFields" ), outFields ); - } + + queryUrl.addQueryItem( QStringLiteral( "returnGeometry" ), fetchGeometry ? QStringLiteral( "true" ) : QStringLiteral( "false" ) ); + + QString outFields; + if ( fetchAttributes.isEmpty() ) + outFields = QStringLiteral( "*" ); else - { - queryUrl.addQueryItem( QStringLiteral( "returnGeometry" ), QStringLiteral( "false" ) ); - queryUrl.addQueryItem( QStringLiteral( "outFields" ), outFields ); - } + outFields = fetchAttributes.join( ',' ); + queryUrl.addQueryItem( QStringLiteral( "outFields" ), outFields ); + queryUrl.addQueryItem( QStringLiteral( "returnM" ), fetchM ? QStringLiteral( "true" ) : QStringLiteral( "false" ) ); queryUrl.addQueryItem( QStringLiteral( "returnZ" ), fetchZ ? QStringLiteral( "true" ) : QStringLiteral( "false" ) ); if ( !filterRect.isNull() ) diff --git a/src/providers/gdal/qgsgdalprovider.cpp b/src/providers/gdal/qgsgdalprovider.cpp index 0259964a3e..0368d042ca 100644 --- a/src/providers/gdal/qgsgdalprovider.cpp +++ b/src/providers/gdal/qgsgdalprovider.cpp @@ -644,9 +644,9 @@ QString QgsGdalProvider::htmlMetadata() QgsRasterBlock *QgsGdalProvider::block( int bandNo, const QgsRectangle &extent, int width, int height, QgsRasterBlockFeedback *feedback ) { - QgsRasterBlock *block = new QgsRasterBlock( dataType( bandNo ), width, height ); + std::unique_ptr< QgsRasterBlock > block = qgis::make_unique< QgsRasterBlock >( dataType( bandNo ), width, height ); if ( !initIfNeeded() ) - return block; + return block.release(); if ( sourceHasNoDataValue( bandNo ) && useSourceNoDataValue( bandNo ) ) { block->setNoDataValue( sourceNoDataValue( bandNo ) ); @@ -654,14 +654,14 @@ QgsRasterBlock *QgsGdalProvider::block( int bandNo, const QgsRectangle &extent, if ( block->isEmpty() ) { - return block; + return block.release(); } if ( !mExtent.intersects( extent ) ) { // the requested extent is completely outside of the raster's extent - nothing to do block->setIsNoData(); - return block; + return block.release(); } if ( !mExtent.contains( extent ) ) @@ -669,18 +669,23 @@ QgsRasterBlock *QgsGdalProvider::block( int bandNo, const QgsRectangle &extent, QRect subRect = QgsRasterBlock::subRect( extent, width, height, mExtent ); block->setIsNoDataExcept( subRect ); } - readBlock( bandNo, extent, width, height, block->bits(), feedback ); + if ( !readBlock( bandNo, extent, width, height, block->bits(), feedback ) ) + { + QgsDebugMsg( QStringLiteral( "Error occurred while reading block" ) ); + block->setIsNoData(); + return block.release(); + } // apply scale and offset block->applyScaleOffset( bandScale( bandNo ), bandOffset( bandNo ) ); block->applyNoDataValues( userNoDataValues( bandNo ) ); - return block; + return block.release(); } -void QgsGdalProvider::readBlock( int bandNo, int xBlock, int yBlock, void *data ) +bool QgsGdalProvider::readBlock( int bandNo, int xBlock, int yBlock, void *data ) { QMutexLocker locker( mpMutex ); if ( !initIfNeeded() ) - return; + return false; // TODO!!!: Check data alignment!!! May it happen that nearest value which // is not nearest is assigned to an output cell??? @@ -694,14 +699,21 @@ void QgsGdalProvider::readBlock( int bandNo, int xBlock, int yBlock, void *data // We have to read with correct data type consistent with other readBlock functions int xOff = xBlock * mXBlockSize; int yOff = yBlock * mYBlockSize; - gdalRasterIO( myGdalBand, GF_Read, xOff, yOff, mXBlockSize, mYBlockSize, data, mXBlockSize, mYBlockSize, ( GDALDataType ) mGdalDataType.at( bandNo - 1 ), 0, 0 ); + CPLErr err = gdalRasterIO( myGdalBand, GF_Read, xOff, yOff, mXBlockSize, mYBlockSize, data, mXBlockSize, mYBlockSize, ( GDALDataType ) mGdalDataType.at( bandNo - 1 ), 0, 0 ); + if ( err != CPLE_None ) + { + QgsLogger::warning( "RasterIO error: " + QString::fromUtf8( CPLGetLastErrorMsg() ) ); + return false; + } + + return true; } -void QgsGdalProvider::readBlock( int bandNo, QgsRectangle const &extent, int pixelWidth, int pixelHeight, void *data, QgsRasterBlockFeedback *feedback ) +bool QgsGdalProvider::readBlock( int bandNo, QgsRectangle const &extent, int pixelWidth, int pixelHeight, void *data, QgsRasterBlockFeedback *feedback ) { QMutexLocker locker( mpMutex ); if ( !initIfNeeded() ) - return; + return false; QgsDebugMsgLevel( "pixelWidth = " + QString::number( pixelWidth ), 5 ); QgsDebugMsgLevel( "pixelHeight = " + QString::number( pixelHeight ), 5 ); @@ -734,7 +746,7 @@ void QgsGdalProvider::readBlock( int bandNo, QgsRectangle const &extent, int pi if ( rasterExtent.isEmpty() ) { QgsDebugMsg( QStringLiteral( "draw request outside view extent." ) ); - return; + return false; } QgsDebugMsgLevel( "extent: " + mExtent.toString(), 5 ); QgsDebugMsgLevel( "rasterExtent: " + rasterExtent.toString(), 5 ); @@ -871,14 +883,14 @@ void QgsGdalProvider::readBlock( int bandNo, QgsRectangle const &extent, int pi if ( _buffer_size != static_cast<qint64>( bufferSize ) ) { QgsDebugMsg( QStringLiteral( "Integer overflow calculating buffer size on a 32 bit system." ) ); - return; + return false; } #endif char *tmpBlock = static_cast<char *>( qgsMalloc( bufferSize ) ); if ( ! tmpBlock ) { QgsDebugMsgLevel( QStringLiteral( "Couldn't allocate temporary buffer of %1 bytes" ).arg( dataSize * tmpWidth * tmpHeight ), 5 ); - return; + return false; } GDALRasterBandH gdalBand = getBand( bandNo ); GDALDataType type = static_cast<GDALDataType>( mGdalDataType.at( bandNo - 1 ) ); @@ -892,9 +904,13 @@ void QgsGdalProvider::readBlock( int bandNo, QgsRectangle const &extent, int pi if ( err != CPLE_None ) { - QgsLogger::warning( "RasterIO error: " + QString::fromUtf8( CPLGetLastErrorMsg() ) ); + const QString lastError = QString::fromUtf8( CPLGetLastErrorMsg() ) ; + if ( feedback ) + feedback->appendError( lastError ); + + QgsLogger::warning( "RasterIO error: " + lastError ); qgsFree( tmpBlock ); - return; + return false; } double tmpXRes = srcWidth * srcXRes / tmpWidth; @@ -932,6 +948,7 @@ void QgsGdalProvider::readBlock( int bandNo, QgsRectangle const &extent, int pi } qgsFree( tmpBlock ); + return true; } /** diff --git a/src/providers/gdal/qgsgdalprovider.h b/src/providers/gdal/qgsgdalprovider.h index 1e36248d49..9167552f74 100644 --- a/src/providers/gdal/qgsgdalprovider.h +++ b/src/providers/gdal/qgsgdalprovider.h @@ -120,8 +120,8 @@ class QgsGdalProvider : public QgsRasterDataProvider, QgsGdalProviderBase // Reimplemented from QgsRasterDataProvider to bypass second resampling (more efficient for local file based sources) QgsRasterBlock *block( int bandNo, const QgsRectangle &extent, int width, int height, QgsRasterBlockFeedback *feedback = nullptr ) override; - void readBlock( int bandNo, int xBlock, int yBlock, void *data ) override; - void readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; + bool readBlock( int bandNo, int xBlock, int yBlock, void *data ) override; + bool readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; double bandScale( int bandNo ) const override; double bandOffset( int bandNo ) const override; QList<QgsColorRampShader::ColorRampItem> colorTable( int bandNo )const override; diff --git a/src/providers/grass/qgsgrassrasterprovider.cpp b/src/providers/grass/qgsgrassrasterprovider.cpp index 0d7fb47490..299d299af0 100644 --- a/src/providers/grass/qgsgrassrasterprovider.cpp +++ b/src/providers/grass/qgsgrassrasterprovider.cpp @@ -174,7 +174,7 @@ QgsRasterInterface *QgsGrassRasterProvider::clone() const return provider; } -void QgsGrassRasterProvider::readBlock( int bandNo, int xBlock, int yBlock, void *block ) +bool QgsGrassRasterProvider::readBlock( int bandNo, int xBlock, int yBlock, void *block ) { Q_UNUSED( xBlock ); clearLastError(); @@ -214,6 +214,7 @@ void QgsGrassRasterProvider::readBlock( int bandNo, int xBlock, int yBlock, void QgsDebugMsg( error ); appendError( error ); // We don't set mValid to false, because the raster can be recreated and work next time + return false; } QgsDebugMsg( QString( "%1 bytes read from modules stdout" ).arg( data.size() ) ); // byteCount() in Qt >= 4.6 @@ -228,9 +229,11 @@ void QgsGrassRasterProvider::readBlock( int bandNo, int xBlock, int yBlock, void size = size < data.size() ? size : data.size(); } memcpy( block, data.data(), size ); + + return true; } -void QgsGrassRasterProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int pixelWidth, int pixelHeight, void *block, QgsRasterBlockFeedback *feedback ) +bool QgsGrassRasterProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int pixelWidth, int pixelHeight, void *block, QgsRasterBlockFeedback *feedback ) { Q_UNUSED( feedback ); QgsDebugMsg( "pixelWidth = " + QString::number( pixelWidth ) ); @@ -239,7 +242,7 @@ void QgsGrassRasterProvider::readBlock( int bandNo, QgsRectangle const &viewExt clearLastError(); if ( pixelWidth <= 0 || pixelHeight <= 0 ) - return; + return false; QStringList arguments; arguments.append( "map=" + mMapName + "@" + mMapset ); @@ -264,7 +267,7 @@ void QgsGrassRasterProvider::readBlock( int bandNo, QgsRectangle const &viewExt appendError( error ); // We don't set mValid to false, because the raster can be recreated and work next time - return; + return false; } QgsDebugMsg( QString( "%1 bytes read from modules stdout" ).arg( data.size() ) ); // byteCount() in Qt >= 4.6 @@ -278,6 +281,8 @@ void QgsGrassRasterProvider::readBlock( int bandNo, QgsRectangle const &viewExt size = size < data.size() ? size : data.size(); } memcpy( block, data.data(), size ); + + return true; } QgsRasterBandStats QgsGrassRasterProvider::bandStatistics( int bandNo, int stats, const QgsRectangle &boundingBox, int sampleSize, QgsRasterBlockFeedback * ) diff --git a/src/providers/grass/qgsgrassrasterprovider.h b/src/providers/grass/qgsgrassrasterprovider.h index 09ddf312e9..6f6a25939c 100644 --- a/src/providers/grass/qgsgrassrasterprovider.h +++ b/src/providers/grass/qgsgrassrasterprovider.h @@ -189,8 +189,8 @@ class GRASS_LIB_EXPORT QgsGrassRasterProvider : public QgsRasterDataProvider int xSize() const override; int ySize() const override; - void readBlock( int bandNo, int xBlock, int yBlock, void *data ) override; - void readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; + bool readBlock( int bandNo, int xBlock, int yBlock, void *data ) override; + bool readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; QgsRasterBandStats bandStatistics( int bandNo, int stats = QgsRasterBandStats::All, diff --git a/src/providers/ogr/qgsogrdataitems.cpp b/src/providers/ogr/qgsogrdataitems.cpp index 75112d9580..74ad4226e4 100644 --- a/src/providers/ogr/qgsogrdataitems.cpp +++ b/src/providers/ogr/qgsogrdataitems.cpp @@ -374,7 +374,9 @@ static QgsOgrLayerItem *dataItemForLayer( QgsDataItem *parentItem, QString name, OGRFeatureDefnH hDef = OGR_L_GetLayerDefn( hLayer ); QgsLayerItem::LayerType layerType = QgsLayerItem::Vector; - OGRwkbGeometryType ogrType = QgsOgrProvider::getOgrGeomType( hLayer ); + GDALDriverH hDriver = GDALGetDatasetDriver( hDataSource ); + QString driverName = QString::fromUtf8( GDALGetDriverShortName( hDriver ) ); + OGRwkbGeometryType ogrType = QgsOgrProvider::getOgrGeomType( driverName, hLayer ); QgsWkbTypes::Type wkbType = QgsOgrProviderUtils::qgisTypeFromOgrType( ogrType ); switch ( QgsWkbTypes::geometryType( wkbType ) ) { diff --git a/src/providers/ogr/qgsogrprovider.cpp b/src/providers/ogr/qgsogrprovider.cpp index 33fc43ff68..987bd4415c 100644 --- a/src/providers/ogr/qgsogrprovider.cpp +++ b/src/providers/ogr/qgsogrprovider.cpp @@ -905,7 +905,7 @@ void QgsOgrProvider::setEncoding( const QString &e ) } // This is reused by dataItem -OGRwkbGeometryType QgsOgrProvider::getOgrGeomType( OGRLayerH ogrLayer ) +OGRwkbGeometryType QgsOgrProvider::getOgrGeomType( const QString &driverName, OGRLayerH ogrLayer ) { OGRFeatureDefnH fdef = OGR_L_GetLayerDefn( ogrLayer ); OGRwkbGeometryType geomType = wkbUnknown; @@ -936,6 +936,15 @@ OGRwkbGeometryType QgsOgrProvider::getOgrGeomType( OGRLayerH ogrLayer ) if ( geometry ) { geomType = OGR_G_GetGeometryType( geometry ); + + // Shapefile MultiPatch can be reported as GeometryCollectionZ of TINZ + if ( wkbFlatten( geomType ) == wkbGeometryCollection && + driverName == QLatin1String( "ESRI Shapefile" ) && + OGR_G_GetGeometryCount( geometry ) >= 1 && + wkbFlatten( OGR_G_GetGeometryType( OGR_G_GetGeometryRef( geometry, 0 ) ) ) == wkbTIN ) + { + geomType = wkbMultiPolygon25D; + } } if ( geomType != wkbNone ) break; @@ -964,7 +973,7 @@ void QgsOgrProvider::loadFields() QMutex *mutex = nullptr; OGRLayerH ogrLayer = mOgrLayer->getHandleAndMutex( mutex ); QMutexLocker locker( mutex ); - mOGRGeomType = getOgrGeomType( ogrLayer ); + mOGRGeomType = getOgrGeomType( mGDALDriverName, ogrLayer ); } QgsOgrFeatureDefn &fdef = mOgrLayer->GetLayerDefn(); @@ -1306,18 +1315,18 @@ size_t QgsOgrProvider::layerCount() const */ QgsWkbTypes::Type QgsOgrProvider::wkbType() const { - QgsWkbTypes::Type wkb = static_cast<QgsWkbTypes::Type>( mOGRGeomType ); + QgsWkbTypes::Type wkb = QgsOgrUtils::ogrGeometryTypeToQgsWkbType( mOGRGeomType ); if ( mGDALDriverName == QLatin1String( "ESRI Shapefile" ) && ( wkb == QgsWkbTypes::LineString || wkb == QgsWkbTypes::Polygon ) ) { wkb = QgsWkbTypes::multiType( wkb ); } - if ( wkb % 1000 == 15 ) // is PolyhedralSurface, PolyhedralSurfaceZ, PolyhedralSurfaceM or PolyhedralSurfaceZM => map to MultiPolygon + if ( mOGRGeomType % 1000 == wkbPolyhedralSurface ) // is PolyhedralSurface, PolyhedralSurfaceZ, PolyhedralSurfaceM or PolyhedralSurfaceZM => map to MultiPolygon { - wkb = static_cast<QgsWkbTypes::Type>( wkb - 9 ); + wkb = static_cast<QgsWkbTypes::Type>( mOGRGeomType - ( wkbPolyhedralSurface - wkbMultiPolygon ) ); } - else if ( wkb % 1000 == 16 ) // is TIN, TINZ, TINM or TINZM => map to MultiPolygon + else if ( mOGRGeomType % 1000 == wkbTIN ) // is TIN, TINZ, TINM or TINZM => map to MultiPolygon { - wkb = static_cast<QgsWkbTypes::Type>( wkb - 10 ); + wkb = static_cast<QgsWkbTypes::Type>( mOGRGeomType - ( wkbTIN - wkbMultiPolygon ) ); } return wkb; } diff --git a/src/providers/ogr/qgsogrprovider.h b/src/providers/ogr/qgsogrprovider.h index 5d6a7fd7c8..9e7e281101 100644 --- a/src/providers/ogr/qgsogrprovider.h +++ b/src/providers/ogr/qgsogrprovider.h @@ -151,7 +151,7 @@ class QgsOgrProvider : public QgsVectorDataProvider bool doesStrictFeatureTypeCheck() const override; //! Returns OGR geometry type - static OGRwkbGeometryType getOgrGeomType( OGRLayerH ogrLayer ); + static OGRwkbGeometryType getOgrGeomType( const QString &driverName, OGRLayerH ogrLayer ); //! Gets single flatten geometry type static OGRwkbGeometryType ogrWkbSingleFlatten( OGRwkbGeometryType type ); diff --git a/src/providers/postgres/qgspostgresconn.cpp b/src/providers/postgres/qgspostgresconn.cpp index d123548481..a3b8b301b9 100644 --- a/src/providers/postgres/qgspostgresconn.cpp +++ b/src/providers/postgres/qgspostgresconn.cpp @@ -107,7 +107,7 @@ QString QgsPostgresResult::PQfname( int col ) return QString::fromUtf8( ::PQfname( mRes, col ) ); } -int QgsPostgresResult::PQftable( int col ) +Oid QgsPostgresResult::PQftable( int col ) { Q_ASSERT( mRes ); return ::PQftable( mRes, col ); @@ -119,7 +119,7 @@ int QgsPostgresResult::PQftablecol( int col ) return ::PQftablecol( mRes, col ); } -int QgsPostgresResult::PQftype( int col ) +Oid QgsPostgresResult::PQftype( int col ) { Q_ASSERT( mRes ); return ::PQftype( mRes, col ); diff --git a/src/providers/postgres/qgspostgresconn.h b/src/providers/postgres/qgspostgresconn.h index 35779cf318..d58bee2670 100644 --- a/src/providers/postgres/qgspostgresconn.h +++ b/src/providers/postgres/qgspostgresconn.h @@ -167,8 +167,8 @@ class QgsPostgresResult int PQnfields(); QString PQfname( int col ); - int PQftable( int col ); - int PQftype( int col ); + Oid PQftable( int col ); + Oid PQftype( int col ); int PQfmod( int col ); int PQftablecol( int col ); Oid PQoidValue(); diff --git a/src/providers/postgres/qgspostgresdataitems.cpp b/src/providers/postgres/qgspostgresdataitems.cpp index 8c6279c91d..d3ac1a7cfc 100644 --- a/src/providers/postgres/qgspostgresdataitems.cpp +++ b/src/providers/postgres/qgspostgresdataitems.cpp @@ -340,7 +340,9 @@ QList<QAction *> QgsPGLayerItem::actions( QWidget *parent ) void QgsPGLayerItem::deleteLayer() { - if ( QMessageBox::question( nullptr, QObject::tr( "Delete Table" ), + QString typeName = mLayerProperty.isView ? tr( "View" ) : tr( "Table" ); + + if ( QMessageBox::question( nullptr, tr( "Delete %1" ).arg( typeName ), QObject::tr( "Are you sure you want to delete %1.%2?" ).arg( mLayerProperty.schemaName, mLayerProperty.tableName ), QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) != QMessageBox::Yes ) return; @@ -349,11 +351,11 @@ void QgsPGLayerItem::deleteLayer() bool res = ::deleteLayer( mUri, errCause ); if ( !res ) { - QMessageBox::warning( nullptr, tr( "Delete Table" ), errCause ); + QMessageBox::warning( nullptr, tr( "Delete %1" ).arg( typeName ), errCause ); } else { - QMessageBox::information( nullptr, tr( "Delete Table" ), tr( "Table deleted successfully." ) ); + QMessageBox::information( nullptr, tr( "Delete %1" ).arg( typeName ), tr( "%1 deleted successfully." ).arg( typeName ) ); if ( mParent ) mParent->refresh(); } diff --git a/src/providers/postgres/qgspostgresprovider.cpp b/src/providers/postgres/qgspostgresprovider.cpp index caa6c56a6b..0671db5dc4 100644 --- a/src/providers/postgres/qgspostgresprovider.cpp +++ b/src/providers/postgres/qgspostgresprovider.cpp @@ -752,7 +752,7 @@ bool QgsPostgresProvider::loadFields() sql = QStringLiteral( "SELECT oid,typname,typtype,typelem,typlen FROM pg_type" ); QgsPostgresResult typeResult( connectionRO()->PQexec( sql ) ); - QMap<int, PGTypeInfo> typeMap; + QMap<Oid, PGTypeInfo> typeMap; for ( int i = 0; i < typeResult.PQntuples(); ++i ) { PGTypeInfo typeInfo = @@ -762,20 +762,20 @@ bool QgsPostgresProvider::loadFields() /* typeElem = */ typeResult.PQgetvalue( i, 3 ), /* typeLen = */ typeResult.PQgetvalue( i, 4 ).toInt() }; - typeMap.insert( typeResult.PQgetvalue( i, 0 ).toInt(), typeInfo ); + typeMap.insert( typeResult.PQgetvalue( i, 0 ).toUInt(), typeInfo ); } - QMap<int, QMap<int, QString> > fmtFieldTypeMap, descrMap, defValMap; - QMap<int, QMap<int, int> > attTypeIdMap; - QMap<int, QMap<int, bool> > notNullMap, uniqueMap; + QMap<Oid, QMap<int, QString> > fmtFieldTypeMap, descrMap, defValMap; + QMap<Oid, QMap<int, Oid> > attTypeIdMap; + QMap<Oid, QMap<int, bool> > notNullMap, uniqueMap; if ( result.PQnfields() > 0 ) { // Collect table oids - QSet<int> tableoids; + QSet<Oid> tableoids; for ( int i = 0; i < result.PQnfields(); i++ ) { - int tableoid = result.PQftable( i ); + Oid tableoid = result.PQftable( i ); if ( tableoid > 0 ) { tableoids.insert( tableoid ); @@ -785,7 +785,8 @@ bool QgsPostgresProvider::loadFields() if ( !tableoids.isEmpty() ) { QStringList tableoidsList; - Q_FOREACH ( int tableoid, tableoids ) + const auto constTableoids = tableoids; + for ( Oid tableoid : constTableoids ) { tableoidsList.append( QString::number( tableoid ) ); } @@ -804,12 +805,12 @@ bool QgsPostgresProvider::loadFields() QgsPostgresResult fmtFieldTypeResult( connectionRO()->PQexec( sql ) ); for ( int i = 0; i < fmtFieldTypeResult.PQntuples(); ++i ) { - int attrelid = fmtFieldTypeResult.PQgetvalue( i, 0 ).toInt(); - int attnum = fmtFieldTypeResult.PQgetvalue( i, 1 ).toInt(); + Oid attrelid = fmtFieldTypeResult.PQgetvalue( i, 0 ).toUInt(); + int attnum = fmtFieldTypeResult.PQgetvalue( i, 1 ).toInt(); // Int2 QString formatType = fmtFieldTypeResult.PQgetvalue( i, 2 ); QString descr = fmtFieldTypeResult.PQgetvalue( i, 3 ); QString defVal = fmtFieldTypeResult.PQgetvalue( i, 4 ); - int attType = fmtFieldTypeResult.PQgetvalue( i, 5 ).toInt(); + Oid attType = fmtFieldTypeResult.PQgetvalue( i, 5 ).toUInt(); bool attNotNull = fmtFieldTypeResult.PQgetvalue( i, 6 ).toInt(); bool uniqueConstraint = fmtFieldTypeResult.PQgetvalue( i, 7 ).toInt(); fmtFieldTypeMap[attrelid][attnum] = formatType; @@ -830,12 +831,12 @@ bool QgsPostgresProvider::loadFields() if ( fieldName == mGeometryColumn ) continue; - int fldtyp = result.PQftype( i ); + Oid fldtyp = result.PQftype( i ); int fldMod = result.PQfmod( i ); int fieldPrec = -1; - int tableoid = result.PQftable( i ); + Oid tableoid = result.PQftable( i ); int attnum = result.PQftablecol( i ); - int atttypid = attTypeIdMap[tableoid][attnum]; + Oid atttypid = attTypeIdMap[tableoid][attnum]; const PGTypeInfo &typeInfo = typeMap.value( fldtyp ); QString fieldTypeName = typeInfo.typeName; @@ -3169,7 +3170,7 @@ bool QgsPostgresProvider::setSubsetString( const QString &theSQL, bool updateFea */ long QgsPostgresProvider::featureCount() const { - int featuresCounted = mShared->featuresCounted(); + long featuresCounted = mShared->featuresCounted(); if ( featuresCounted >= 0 ) return featuresCounted; @@ -4642,6 +4643,28 @@ QGISEXTERN bool deleteLayer( const QString &uri, QString &errCause ) return false; } + // handle deletion of views + QString sqlViewCheck = QStringLiteral( "SELECT relkind FROM pg_class WHERE oid=regclass(%1)::oid" ) + .arg( QgsPostgresConn::quotedValue( schemaTableName ) ); + QgsPostgresResult resViewCheck( conn->PQexec( sqlViewCheck ) ); + QString type = resViewCheck.PQgetvalue( 0, 0 ); + if ( type == QLatin1String( "v" ) || type == QLatin1String( "m" ) ) + { + QString sql = QString( "DROP VIEW %1" ).arg( schemaTableName ); + QgsPostgresResult result( conn->PQexec( sql ) ); + if ( result.PQresultStatus() != PGRES_COMMAND_OK ) + { + errCause = QObject::tr( "Unable to delete view %1: \n%2" ) + .arg( schemaTableName, + result.PQresultErrorMessage() ); + conn->unref(); + return false; + } + conn->unref(); + return true; + } + + // check the geometry column count QString sql = QString( "SELECT count(*) " "FROM geometry_columns, pg_class, pg_namespace " diff --git a/src/providers/wcs/qgswcsprovider.cpp b/src/providers/wcs/qgswcsprovider.cpp index f88b104d25..6bdaad905a 100644 --- a/src/providers/wcs/qgswcsprovider.cpp +++ b/src/providers/wcs/qgswcsprovider.cpp @@ -476,7 +476,7 @@ void QgsWcsProvider::setQueryItem( QUrl &url, const QString &item, const QString url.addQueryItem( item, value ); } -void QgsWcsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int pixelWidth, int pixelHeight, void *block, QgsRasterBlockFeedback *feedback ) +bool QgsWcsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int pixelWidth, int pixelHeight, void *block, QgsRasterBlockFeedback *feedback ) { // TODO: set block to null values, move that to function and call only if fails memset( block, 0, pixelWidth * pixelHeight * QgsRasterBlock::typeSize( dataType( bandNo ) ) ); @@ -486,7 +486,7 @@ void QgsWcsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int // (higher level checks) but it is better to do check here as well if ( !viewExtent.intersects( mCoverageExtent ) ) { - return; + return false; } // Can we reuse the previously cached coverage? @@ -532,7 +532,7 @@ void QgsWcsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int // If it happens, it would be possible to rescale the portion we get // to only part of the data block, but it is better to left it // blank, so that the problem may be discovered in its origin. - return; + return false; } } @@ -554,7 +554,7 @@ void QgsWcsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int if ( ! tmpData ) { QgsDebugMsg( QStringLiteral( "Couldn't allocate memory of %1 bytes" ).arg( size ) ); - return; + return false; } if ( GDALRasterIO( gdalBand, GF_Read, 0, 0, width, height, tmpData, width, height, ( GDALDataType ) mGdalDataType.at( bandNo - 1 ), 0, 0 ) != CE_None ) { @@ -592,6 +592,7 @@ void QgsWcsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int QgsMessageLog::logMessage( tr( "Received coverage has wrong size %1 x %2 (expected %3 x %4)" ).arg( width ).arg( height ).arg( pixelWidth ).arg( pixelHeight ), tr( "WCS" ) ); } } + return true; } void QgsWcsProvider::getCache( int bandNo, QgsRectangle const &viewExtent, int pixelWidth, int pixelHeight, QString crs, QgsRasterBlockFeedback *feedback ) const @@ -795,12 +796,13 @@ void QgsWcsProvider::getCache( int bandNo, QgsRectangle const &viewExtent, int // For stats only, maybe change QgsRasterDataProvider::bandStatistics() to // use standard readBlock with extent -void QgsWcsProvider::readBlock( int bandNo, int xBlock, int yBlock, void *block ) +bool QgsWcsProvider::readBlock( int bandNo, int xBlock, int yBlock, void *block ) { QgsDebugMsg( QStringLiteral( "xBlock = %1 yBlock = %2" ).arg( xBlock ).arg( yBlock ) ); - if ( !mHasSize ) return; + if ( !mHasSize ) + return false; double xRes = mCoverageExtent.width() / mWidth; double yRes = mCoverageExtent.height() / mHeight; @@ -815,7 +817,7 @@ void QgsWcsProvider::readBlock( int bandNo, int xBlock, int yBlock, void *block QgsRectangle extent( xMin, yMin, xMax, yMax ); - readBlock( bandNo, extent, mXBlockSize, mYBlockSize, block, nullptr ); + return readBlock( bandNo, extent, mXBlockSize, mYBlockSize, block, nullptr ); } diff --git a/src/providers/wcs/qgswcsprovider.h b/src/providers/wcs/qgswcsprovider.h index 2e76a9e1ed..13fbe71194 100644 --- a/src/providers/wcs/qgswcsprovider.h +++ b/src/providers/wcs/qgswcsprovider.h @@ -144,9 +144,9 @@ class QgsWcsProvider : public QgsRasterDataProvider, QgsGdalProviderBase // TODO: Document this better. - void readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; + bool readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; - void readBlock( int bandNo, int xBlock, int yBlock, void *block ) override; + bool readBlock( int bandNo, int xBlock, int yBlock, void *block ) override; //! Download cache void getCache( int bandNo, QgsRectangle const &viewExtent, int width, int height, QString crs = QString(), QgsRasterBlockFeedback *feedback = nullptr ) const; diff --git a/src/providers/wfs/qgswfscapabilities.cpp b/src/providers/wfs/qgswfscapabilities.cpp index 2bc9131d36..9f337e0c27 100644 --- a/src/providers/wfs/qgswfscapabilities.cpp +++ b/src/providers/wfs/qgswfscapabilities.cpp @@ -87,6 +87,32 @@ QString QgsWfsCapabilities::Capabilities::addPrefixIfNeeded( const QString &name return mapUnprefixedTypenameToPrefixedTypename[name]; } +QString QgsWfsCapabilities::Capabilities::getNamespaceForTypename( const QString &name ) const +{ + Q_FOREACH ( const QgsWfsCapabilities::FeatureType &f, featureTypes ) + { + if ( f.name == name ) + { + return f.nameSpace; + } + } + return ""; +} + +QString QgsWfsCapabilities::Capabilities::getNamespaceParameterValue( const QString &WFSVersion, const QString &typeName ) const +{ + QString namespaces = getNamespaceForTypename( typeName ); + bool tryNameSpacing = ( !namespaces.isEmpty() && typeName.contains( ':' ) ); + if ( tryNameSpacing ) + { + QString prefixOfTypename = typeName.section( ':', 0, 0 ); + return "xmlns(" + prefixOfTypename + + ( WFSVersion.startsWith( QLatin1String( "2.0" ) ) ? "," : "=" ) + + namespaces + ")"; + } + return QString(); +} + class CPLXMLTreeUniquePointer { public: @@ -404,6 +430,14 @@ void QgsWfsCapabilities::capabilitiesReplyFinished() if ( psFeatureTypeIter ) { featureType.nameSpace = CPLGetXMLValue( psFeatureTypeIter, ( "xmlns:" + prefixOfTypename ).toUtf8().constData(), "" ); + if ( featureType.nameSpace.isEmpty() ) + { + //Try to look for namespace in Name tag (Seen in GO Publisher) + //<wfs:FeatureType> + // <wfs:Name xmlns:dagi="http://data.gov.dk/schemas/dagi/2/gml3sfp">dagi:Menighedsraadsafstemningsomraade</wfs:Name> + // <wfs:Title>Menighedsraadsafstemningsomraade</wfs:Title> + featureType.nameSpace = CPLGetXMLValue( psFeatureTypeIter, ( "wfs:Name.xmlns:" + prefixOfTypename ).toUtf8().constData(), "" ); + } } } } @@ -810,3 +844,4 @@ QString QgsWfsCapabilities::errorMessageWithReason( const QString &reason ) { return tr( "Download of capabilities failed: %1" ).arg( reason ); } + diff --git a/src/providers/wfs/qgswfscapabilities.h b/src/providers/wfs/qgswfscapabilities.h index 058781fe48..d2b3f0a4db 100644 --- a/src/providers/wfs/qgswfscapabilities.h +++ b/src/providers/wfs/qgswfscapabilities.h @@ -107,6 +107,8 @@ class QgsWfsCapabilities : public QgsWfsRequest void clear(); QString addPrefixIfNeeded( const QString &name ) const; + QString getNamespaceForTypename( const QString &name ) const; + QString getNamespaceParameterValue( const QString &WFSVersion, const QString &typeName ) const; }; //! Returns parsed capabilities - requestCapabilities() must be called before diff --git a/src/providers/wfs/qgswfsdescribefeaturetype.cpp b/src/providers/wfs/qgswfsdescribefeaturetype.cpp index d62e1fded8..3d9ca26ca9 100644 --- a/src/providers/wfs/qgswfsdescribefeaturetype.cpp +++ b/src/providers/wfs/qgswfsdescribefeaturetype.cpp @@ -14,6 +14,7 @@ ***************************************************************************/ #include "qgswfsdescribefeaturetype.h" +#include "qgsmessagelog.h" QgsWFSDescribeFeatureType::QgsWFSDescribeFeatureType( QgsWFSDataSourceURI &uri ) : QgsWfsRequest( uri ) @@ -21,12 +22,27 @@ QgsWFSDescribeFeatureType::QgsWFSDescribeFeatureType( QgsWFSDataSourceURI &uri ) } bool QgsWFSDescribeFeatureType::requestFeatureType( const QString &WFSVersion, - const QString &typeName, bool bUsePlural ) + const QString &typeName, const QgsWfsCapabilities::Capabilities &caps ) { QUrl url( mUri.requestUrl( QStringLiteral( "DescribeFeatureType" ) ) ); url.addQueryItem( QStringLiteral( "VERSION" ), WFSVersion ); - url.addQueryItem( bUsePlural ? - QStringLiteral( "TYPENAMES" ) : QStringLiteral( "TYPENAME" ), typeName ); + + QString namespaceValue( caps.getNamespaceParameterValue( WFSVersion, typeName ) ); + + if ( WFSVersion.startsWith( QLatin1String( "2.0" ) ) ) + { + url.addQueryItem( QStringLiteral( "TYPENAMES" ), typeName ); + if ( !namespaceValue.isEmpty() ) + { + url.addQueryItem( QStringLiteral( "NAMESPACES" ), namespaceValue ); + } + } + + url.addQueryItem( QStringLiteral( "TYPENAME" ), typeName ); + if ( !namespaceValue.isEmpty() ) + { + url.addQueryItem( QStringLiteral( "NAMESPACE" ), namespaceValue ); + } return sendGET( url, true, false ); } diff --git a/src/providers/wfs/qgswfsdescribefeaturetype.h b/src/providers/wfs/qgswfsdescribefeaturetype.h index 9c2c75ac17..33892e5c46 100644 --- a/src/providers/wfs/qgswfsdescribefeaturetype.h +++ b/src/providers/wfs/qgswfsdescribefeaturetype.h @@ -16,6 +16,7 @@ #define QGSWFSDESCRIBEFEATURETYPE_H #include "qgswfsrequest.h" +#include "qgswfscapabilities.h" //! Manages the DescribeFeatureType request class QgsWFSDescribeFeatureType : public QgsWfsRequest @@ -25,7 +26,9 @@ class QgsWFSDescribeFeatureType : public QgsWfsRequest explicit QgsWFSDescribeFeatureType( QgsWFSDataSourceURI &uri ); //! Issue the request - bool requestFeatureType( const QString &WFSVersion, const QString &typeName, bool bUsePlural ); + bool requestFeatureType( const QString &WFSVersion, + const QString &typeName, + const QgsWfsCapabilities::Capabilities &caps ); protected: QString errorMessageWithReason( const QString &reason ) override; diff --git a/src/providers/wfs/qgswfsfeatureiterator.cpp b/src/providers/wfs/qgswfsfeatureiterator.cpp index 35e039c8d6..9217a39bc1 100644 --- a/src/providers/wfs/qgswfsfeatureiterator.cpp +++ b/src/providers/wfs/qgswfsfeatureiterator.cpp @@ -165,6 +165,12 @@ void QgsWFSFeatureDownloader::createProgressDialog() { Q_ASSERT( qApp->thread() == QThread::currentThread() ); + // Make sure that the creation is done in an atomic way, so that the + // starting thread (running QgsWFSFeatureDownloader::run()) can be sure that + // this function has either run completely, or not at all (mStop == true), + // when it wants to destroy mProgressDialog + QMutexLocker locker( &mMutexCreateProgressDialog ); + if ( mStop ) return; Q_ASSERT( !mProgressDialog ); @@ -222,22 +228,7 @@ QUrl QgsWFSFeatureDownloader::buildURL( qint64 startIndex, int maxFeatures, bool if ( mShared->mLayerPropertiesList.isEmpty() ) { typenames = mShared->mURI.typeName(); - - // Add NAMESPACES parameter for server that declare a namespace in the FeatureType of GetCapabilities response - // See https://issues.qgis.org/issues/14685 - Q_FOREACH ( const QgsWfsCapabilities::FeatureType &f, mShared->mCaps.featureTypes ) - { - if ( f.name == typenames ) - { - if ( !f.nameSpace.isEmpty() && f.name.contains( ':' ) ) - { - QString prefixOfTypename = f.name.section( ':', 0, 0 ); - namespaces = "xmlns(" + prefixOfTypename + "," + f.nameSpace + ")"; - } - break; - } - } - + namespaces = mShared->mCaps.getNamespaceParameterValue( mShared->mWFSVersion, typenames ); } else { @@ -250,8 +241,8 @@ QUrl QgsWFSFeatureDownloader::buildURL( qint64 startIndex, int maxFeatures, bool } if ( mShared->mWFSVersion.startsWith( QLatin1String( "2.0" ) ) ) getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAMES" ), typenames ); - else - getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAME" ), typenames ); + getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAME" ), typenames ); + if ( forHits ) { getFeatureUrl.addQueryItem( QStringLiteral( "RESULTTYPE" ), QStringLiteral( "hits" ) ); @@ -407,8 +398,9 @@ QUrl QgsWFSFeatureDownloader::buildURL( qint64 startIndex, int maxFeatures, bool if ( !namespaces.isEmpty() ) { - getFeatureUrl.addQueryItem( QStringLiteral( "NAMESPACES" ), - namespaces ); + if ( mShared->mWFSVersion.startsWith( QLatin1String( "2.0" ) ) ) + getFeatureUrl.addQueryItem( QStringLiteral( "NAMESPACES" ), namespaces ); + getFeatureUrl.addQueryItem( QStringLiteral( "NAMESPACE" ), namespaces ); } QgsDebugMsgLevel( QStringLiteral( "WFS GetFeature URL: %1" ).arg( getFeatureUrl.toDisplayString( ) ), 2 ); @@ -847,7 +839,10 @@ void QgsWFSFeatureDownloader::run( bool serializeFeatures, int maxFeatures ) } } - mStop = true; + { + QMutexLocker locker( &mMutexCreateProgressDialog ); + mStop = true; + } if ( serializeFeatures ) mShared->endOfDownload( success, mTotalDownloadedFeatureCount, truncatedResponse, interrupted, mErrorMessage ); @@ -870,6 +865,7 @@ void QgsWFSFeatureDownloader::run( bool serializeFeatures, int maxFeatures ) mTimer->deleteLater(); mTimer = nullptr; } + // explicitly abort here so that mReply is destroyed within the right thread // otherwise will deadlock because deleteLayer() will not have a valid thread to post abort(); @@ -1032,7 +1028,7 @@ QgsFeatureRequest QgsWFSFeatureIterator::buildRequestCache( int genCounter ) QgsAttributeList cacheSubSet; Q_FOREACH ( int i, mRequest.subsetOfAttributes() ) { - int idx = dataProviderFields.indexFromName( mShared->mFields.at( i ).name() ); + int idx = dataProviderFields.indexFromName( mShared->mMapGMLFieldNameToSQLiteColumnName[mShared->mFields.at( i ).name()] ); if ( idx >= 0 ) cacheSubSet.append( idx ); idx = mShared->mFields.indexFromName( mShared->mFields.at( i ).name() ); @@ -1045,7 +1041,7 @@ QgsFeatureRequest QgsWFSFeatureIterator::buildRequestCache( int genCounter ) { Q_FOREACH ( const QString &field, mRequest.filterExpression()->referencedColumns() ) { - int idx = dataProviderFields.indexFromName( field ); + int idx = dataProviderFields.indexFromName( mShared->mMapGMLFieldNameToSQLiteColumnName[field] ); if ( idx >= 0 && !cacheSubSet.contains( idx ) ) cacheSubSet.append( idx ); idx = mShared->mFields.indexFromName( field ); @@ -1255,7 +1251,7 @@ bool QgsWFSFeatureIterator::fetchFeature( QgsFeature &f ) continue; } - copyFeature( cachedFeature, f ); + copyFeature( cachedFeature, f, true ); geometryToDestinationCrs( f, mTransform ); // Retrieve the user-visible id from the Spatialite cache database Id @@ -1267,6 +1263,7 @@ bool QgsWFSFeatureIterator::fetchFeature( QgsFeature &f ) if ( stmt.step() == SQLITE_ROW ) { f.setId( stmt.columnAsInt64( 0 ) ); + Q_ASSERT( stmt.step() != SQLITE_ROW ); } } @@ -1349,7 +1346,7 @@ bool QgsWFSFeatureIterator::fetchFeature( QgsFeature &f ) continue; } - copyFeature( feat, f ); + copyFeature( feat, f, false ); return true; } @@ -1436,7 +1433,7 @@ bool QgsWFSFeatureIterator::close() } -void QgsWFSFeatureIterator::copyFeature( const QgsFeature &srcFeature, QgsFeature &dstFeature ) +void QgsWFSFeatureIterator::copyFeature( const QgsFeature &srcFeature, QgsFeature &dstFeature, bool srcIsCache ) { //copy the geometry QgsGeometry geometry = srcFeature.geometry(); @@ -1457,7 +1454,7 @@ void QgsWFSFeatureIterator::copyFeature( const QgsFeature &srcFeature, QgsFeatur auto setAttr = [ & ]( const int i ) { - int idx = srcFeature.fields().indexFromName( fields.at( i ).name() ); + int idx = srcFeature.fields().indexFromName( srcIsCache ? mShared->mMapGMLFieldNameToSQLiteColumnName[fields.at( i ).name()] : fields.at( i ).name() ); if ( idx >= 0 ) { const QVariant &v = srcFeature.attributes().value( idx ); diff --git a/src/providers/wfs/qgswfsfeatureiterator.h b/src/providers/wfs/qgswfsfeatureiterator.h index 61979b672c..deab6aa6f3 100644 --- a/src/providers/wfs/qgswfsfeatureiterator.h +++ b/src/providers/wfs/qgswfsfeatureiterator.h @@ -158,6 +158,7 @@ class QgsWFSFeatureDownloader: public QgsWfsRequest QTimer *mTimer = nullptr; QgsWFSFeatureHitsAsyncRequest mFeatureHitsAsyncRequest; qint64 mTotalDownloadedFeatureCount; + QMutex mMutexCreateProgressDialog; }; //! Downloader thread @@ -227,7 +228,7 @@ class QgsWFSFeatureIterator : public QObject, bool fetchFeature( QgsFeature &f ) override; //! Copies feature attributes / geometry from srcFeature to dstFeature - void copyFeature( const QgsFeature &srcFeature, QgsFeature &dstFeature ); + void copyFeature( const QgsFeature &srcFeature, QgsFeature &dstFeature, bool srcIsCache ); std::shared_ptr<QgsWFSSharedData> mShared; //!< Mutable data shared between provider and feature sources diff --git a/src/providers/wfs/qgswfsnewconnection.cpp b/src/providers/wfs/qgswfsnewconnection.cpp index a7adf6a6e8..67c1c5e628 100644 --- a/src/providers/wfs/qgswfsnewconnection.cpp +++ b/src/providers/wfs/qgswfsnewconnection.cpp @@ -35,7 +35,15 @@ QgsWFSNewConnection::~QgsWFSNewConnection() void QgsWFSNewConnection::versionDetectButton() { delete mCapabilities; - mCapabilities = new QgsWfsCapabilities( urlTrimmed().toString() ); + + // Honor any defined authentication settings + QgsDataSourceUri uri = QgsDataSourceUri(); + uri.setParam( QStringLiteral( "url" ), urlTrimmed().toString() ); + uri.setUsername( authSettingsWidget()->username() ); + uri.setPassword( authSettingsWidget()->password() ); + uri.setAuthConfigId( authSettingsWidget()->configId() ); + + mCapabilities = new QgsWfsCapabilities( uri.uri( false ) ); connect( mCapabilities, &QgsWfsCapabilities::gotCapabilities, this, &QgsWFSNewConnection::capabilitiesReplyFinished ); const bool synchronous = false; const bool forceRefresh = true; diff --git a/src/providers/wfs/qgswfsprovider.cpp b/src/providers/wfs/qgswfsprovider.cpp index e9fb71846a..2ebe8798a2 100644 --- a/src/providers/wfs/qgswfsprovider.cpp +++ b/src/providers/wfs/qgswfsprovider.cpp @@ -420,32 +420,17 @@ bool QgsWFSProvider::processSQL( const QString &sqlString, QString &errorMsg, QS } QgsWFSDescribeFeatureType describeFeatureType( mShared->mURI ); - bool bUsePlural = false; - QByteArray response; - for ( int i = 0; i < 2; i++ ) + if ( !describeFeatureType.requestFeatureType( mShared->mWFSVersion, + concatenatedTypenames, mShared->mCaps ) ) { - if ( !describeFeatureType.requestFeatureType( mShared->mWFSVersion, - concatenatedTypenames, bUsePlural ) ) - { - errorMsg = tr( "DescribeFeatureType failed for url %1: %2" ). - arg( dataSourceUri(), describeFeatureType.errorMessage() ); - return false; - } - - response = describeFeatureType.response(); - // "http://geoportal.samregion.ru/wfs12?SERVICE=WFS&REQUEST=DescribeFeatureType&TYPENAME=EC_1_132&VERSION=2.0.0" - // returns a <ExceptionText><![CDATA[Missing typeNames parameter]]></ExceptionText> - if ( i == 0 && response.indexOf( "<![CDATA[Missing typeNames parameter]]>" ) >= 0 ) - { - QgsDebugMsg( QStringLiteral( "Server does not accept TYPENAME parameter for DescribeFeatureType. Re-trying with TYPENAMES" ) ); - bUsePlural = true; - } - else - { - break; - } + errorMsg = tr( "DescribeFeatureType failed for url %1: %2" ). + arg( dataSourceUri(), describeFeatureType.errorMessage() ); + return false; } + QByteArray response = describeFeatureType.response(); + + QDomDocument describeFeatureDocument; errorMsg.clear(); if ( !describeFeatureDocument.setContent( response, true, &errorMsg ) ) @@ -1277,43 +1262,17 @@ bool QgsWFSProvider::describeFeatureType( QString &geometryAttribute, QgsFields fields.clear(); QgsWFSDescribeFeatureType describeFeatureType( mShared->mURI ); - bool bUsePlural = false; - QByteArray response; - for ( int i = 0; i < 2; i++ ) - { - if ( !describeFeatureType.requestFeatureType( mShared->mWFSVersion, - mShared->mURI.typeName(), bUsePlural ) ) - { - QgsMessageLog::logMessage( tr( "DescribeFeatureType network request failed for url %1: %2" ). - arg( dataSourceUri(), describeFeatureType.errorMessage() ), tr( "WFS" ) ); - return false; - } - response = describeFeatureType.response(); - // "http://geoportal.samregion.ru/wfs12?SERVICE=WFS&REQUEST=DescribeFeatureType&TYPENAME=EC_1_132&VERSION=2.0.0" - // returns a <ExceptionText><![CDATA[Missing typeNames parameter]]></ExceptionText> - if ( i == 0 && response.indexOf( "<![CDATA[Missing typeNames parameter]]>" ) >= 0 ) - { - QgsDebugMsg( QStringLiteral( "Server does not accept TYPENAME parameter for DescribeFeatureType. Re-trying with TYPENAMES" ) ); - bUsePlural = true; - } - // "http://services.cuzk.cz/wfs/inspire-cp-wfs.asp?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=cp:CadastralParcel" returns - // <!--Generated by Marushka, version 4.2.5.0, GEOVAP, spol. s r.o., 31.05.2018.--> - // <ExceptionReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0.0" xml:lang="en-US" xmlns="http://www.opengis.net/ows/1.1"> - // <Exception exceptionCode="OperationProcessingFailed" /> - // </ExceptionReport> - else if ( i == 0 && response.indexOf( "<!--Generated by Marushka" ) >= 0 && - response.indexOf( "OperationProcessingFailed" ) >= 0 ) - { - QgsDebugMsg( QStringLiteral( "Server does not accept TYPENAME parameter for DescribeFeatureType. Re-trying with TYPENAMES" ) ); - bUsePlural = true; - } - else - { - break; - } + if ( !describeFeatureType.requestFeatureType( mShared->mWFSVersion, + mShared->mURI.typeName(), mShared->mCaps ) ) + { + QgsMessageLog::logMessage( tr( "DescribeFeatureType network request failed for url %1: %2" ). + arg( dataSourceUri(), describeFeatureType.errorMessage() ), tr( "WFS" ) ); + return false; } + QByteArray response = describeFeatureType.response(); + QDomDocument describeFeatureDocument; QString errorMsg; if ( !describeFeatureDocument.setContent( response, true, &errorMsg ) ) diff --git a/src/providers/wfs/qgswfsrequest.cpp b/src/providers/wfs/qgswfsrequest.cpp index 0856c7c0b6..e83ffcccb9 100644 --- a/src/providers/wfs/qgswfsrequest.cpp +++ b/src/providers/wfs/qgswfsrequest.cpp @@ -27,8 +27,6 @@ #include <QFuture> #include <QtConcurrent> -const qint64 READ_BUFFER_SIZE_HINT = 1024 * 1024; - QgsWfsRequest::QgsWfsRequest( const QgsWFSDataSourceURI &uri ) : mUri( uri ) , mErrorCode( QgsWfsRequest::NoError ) @@ -141,7 +139,6 @@ bool QgsWfsRequest::sendGET( const QUrl &url, bool synchronous, bool forceRefres success = true; mReply = QgsNetworkAccessManager::instance()->get( request ); - mReply->setReadBufferSize( READ_BUFFER_SIZE_HINT ); if ( !mUri.auth().setAuthorizationReply( mReply ) ) { mErrorCode = QgsWfsRequest::NetworkError; @@ -262,7 +259,6 @@ bool QgsWfsRequest::sendPOST( const QUrl &url, const QString &contentTypeHeader, request.setHeader( QNetworkRequest::ContentTypeHeader, contentTypeHeader ); mReply = QgsNetworkAccessManager::instance()->post( request, data ); - mReply->setReadBufferSize( READ_BUFFER_SIZE_HINT ); if ( !mUri.auth().setAuthorizationReply( mReply ) ) { mErrorCode = QgsWfsRequest::NetworkError; @@ -353,7 +349,6 @@ void QgsWfsRequest::replyFinished() QgsDebugMsgLevel( QStringLiteral( "redirected: %1 forceRefresh=%2" ).arg( redirect.toString() ).arg( mForceRefresh ), 4 ); mReply = QgsNetworkAccessManager::instance()->get( request ); - mReply->setReadBufferSize( READ_BUFFER_SIZE_HINT ); if ( !mUri.auth().setAuthorizationReply( mReply ) ) { mResponse.clear(); diff --git a/src/providers/wfs/qgswfsshareddata.cpp b/src/providers/wfs/qgswfsshareddata.cpp index 2d0dae8919..0cd5afca53 100644 --- a/src/providers/wfs/qgswfsshareddata.cpp +++ b/src/providers/wfs/qgswfsshareddata.cpp @@ -33,6 +33,8 @@ #include <cpl_conv.h> #include <ogr_api.h> +#include <set> + #include <sqlite3.h> QgsWFSSharedData::QgsWFSSharedData( const QString &uri ) @@ -230,6 +232,7 @@ bool QgsWFSSharedData::createCache() Q_ASSERT( !QFile::exists( mCacheDbname ) ); QgsFields cacheFields; + std::set<QString> setSQLiteColumnNameUpperCase; for ( const QgsField &field : qgis::as_const( mFields ) ) { QVariant::Type type = field.type(); @@ -240,7 +243,19 @@ bool QgsWFSSharedData::createCache() // it to a String type = QVariant::LongLong; } - cacheFields.append( QgsField( field.name(), type, field.typeName() ) ); + + // Make sure we don't have several field names that only differ by their case + QString sqliteFieldName( field.name() ); + int counter = 2; + while ( setSQLiteColumnNameUpperCase.find( sqliteFieldName.toUpper() ) != setSQLiteColumnNameUpperCase.end() ) + { + sqliteFieldName = field.name() + QStringLiteral( "%1" ).arg( counter ); + counter++; + } + setSQLiteColumnNameUpperCase.insert( sqliteFieldName.toUpper() ); + mMapGMLFieldNameToSQLiteColumnName[field.name()] = sqliteFieldName; + + cacheFields.append( QgsField( sqliteFieldName, type, field.typeName() ) ); } // Add some field for our internal use cacheFields.append( QgsField( QgsWFSConstants::FIELD_GEN_COUNTER, QVariant::Int, QStringLiteral( "int" ) ) ); @@ -384,6 +399,7 @@ bool QgsWFSSharedData::createCache() { mCacheTablename = QStringLiteral( "features" ); sql = QStringLiteral( "CREATE TABLE %1 (%2 INTEGER PRIMARY KEY" ).arg( mCacheTablename, fidName ); + for ( const QgsField &field : qgis::as_const( cacheFields ) ) { QString type( QStringLiteral( "VARCHAR" ) ); @@ -393,6 +409,7 @@ bool QgsWFSSharedData::createCache() type = QStringLiteral( "BIGINT" ); else if ( field.type() == QVariant::Double ) type = QStringLiteral( "REAL" ); + sql += QStringLiteral( ", %1 %2" ).arg( quotedIdentifier( field.name() ), type ); } sql += QLatin1String( ")" ); @@ -867,7 +884,7 @@ bool QgsWFSSharedData::changeAttributeValues( const QgsChangedAttributesMap &att QgsAttributeMap newAttrMap; for ( QgsAttributeMap::const_iterator siter = attrs.begin(); siter != attrs.end(); ++siter ) { - int idx = dataProviderFields.indexFromName( mFields.at( siter.key() ).name() ); + int idx = dataProviderFields.indexFromName( mMapGMLFieldNameToSQLiteColumnName[mFields.at( siter.key() ).name()] ); Q_ASSERT( idx >= 0 ); if ( siter.value().type() == QVariant::DateTime && !siter.value().isNull() ) newAttrMap[idx] = QVariant( siter.value().toDateTime().toMSecsSinceEpoch() ); @@ -985,7 +1002,7 @@ void QgsWFSSharedData::serializeFeatures( QVector<QgsWFSFeatureGmlIdPair> &featu //and the attributes for ( int i = 0; i < mFields.size(); i++ ) { - int idx = dataProviderFields.indexFromName( mFields.at( i ).name() ); + int idx = dataProviderFields.indexFromName( mMapGMLFieldNameToSQLiteColumnName[mFields.at( i ).name()] ); if ( idx >= 0 ) { const QVariant &v = gmlFeature.attributes().value( i ); @@ -1037,6 +1054,8 @@ void QgsWFSSharedData::serializeFeatures( QVector<QgsWFSFeatureGmlIdPair> &featu } else { + QString errorMsg; + auto sql = QgsSqlite3Mprintf( "SELECT qgisId, dbId FROM id_cache WHERE gmlid = '%q'", gmlId.toUtf8().constData() ); auto stmt = mCacheIdDb.prepare( sql, resultCode ); @@ -1047,11 +1066,16 @@ void QgsWFSSharedData::serializeFeatures( QVector<QgsWFSFeatureGmlIdPair> &featu QgsFeatureId oldDbId = stmt.columnAsInt64( 1 ); if ( dbId != oldDbId ) { + sql = QgsSqlite3Mprintf( "UPDATE id_cache SET dbId = NULL WHERE dbId = %lld", + dbId ); + if ( mCacheIdDb.exec( sql, errorMsg ) != SQLITE_OK ) + { + QgsMessageLog::logMessage( tr( "Problem when updating WFS id cache: %1 -> %2" ).arg( sql ).arg( errorMsg ), tr( "WFS" ) ); + } + sql = QgsSqlite3Mprintf( "UPDATE id_cache SET dbId = %lld WHERE gmlid = '%q'", dbId, gmlId.toUtf8().constData() ); - //QgsDebugMsg( QStringLiteral( "%1" ).arg( sql ) ); - QString errorMsg; if ( mCacheIdDb.exec( sql, errorMsg ) != SQLITE_OK ) { QgsMessageLog::logMessage( tr( "Problem when updating WFS id cache: %1 -> %2" ).arg( sql ).arg( errorMsg ), tr( "WFS" ) ); @@ -1060,14 +1084,19 @@ void QgsWFSSharedData::serializeFeatures( QVector<QgsWFSFeatureGmlIdPair> &featu } else { + sql = QgsSqlite3Mprintf( "UPDATE id_cache SET dbId = NULL WHERE dbId = %lld", + dbId ); + if ( mCacheIdDb.exec( sql, errorMsg ) != SQLITE_OK ) + { + QgsMessageLog::logMessage( tr( "Problem when updating WFS id cache: %1 -> %2" ).arg( sql ).arg( errorMsg ), tr( "WFS" ) ); + } + qgisId = mNextCachedIdQgisId; mNextCachedIdQgisId ++; sql = QgsSqlite3Mprintf( "INSERT INTO id_cache (gmlid, dbId, qgisId) VALUES ('%q', %lld, %lld)", gmlId.toUtf8().constData(), dbId, qgisId ); - //QgsDebugMsg( QStringLiteral( "%1" ).arg( sql ) ); - QString errorMsg; if ( mCacheIdDb.exec( sql, errorMsg ) != SQLITE_OK ) { QgsMessageLog::logMessage( tr( "Problem when updating WFS id cache: %1 -> %2" ).arg( sql ).arg( errorMsg ), tr( "WFS" ) ); @@ -1271,8 +1300,7 @@ int QgsWFSSharedData::getFeatureCount( bool issueRequestIfNeeded ) { mGetFeatureHitsIssued = true; QgsWFSFeatureHitsRequest request( mURI ); - int featureCount = request.getFeatureCount( mWFSVersion, mWFSFilter ); - + int featureCount = request.getFeatureCount( mWFSVersion, mWFSFilter, mCaps ); { QMutexLocker locker( &mMutex ); // Check the return value. Might be -1 in case of error, or might be @@ -1343,14 +1371,26 @@ QgsWFSFeatureHitsRequest::QgsWFSFeatureHitsRequest( QgsWFSDataSourceURI &uri ) } int QgsWFSFeatureHitsRequest::getFeatureCount( const QString &WFSVersion, - const QString &filter ) + const QString &filter, const QgsWfsCapabilities::Capabilities &caps ) { + QString typeName = mUri.typeName(); + QUrl getFeatureUrl( mUri.requestUrl( QStringLiteral( "GetFeature" ) ) ); getFeatureUrl.addQueryItem( QStringLiteral( "VERSION" ), WFSVersion ); if ( WFSVersion.startsWith( QLatin1String( "2.0" ) ) ) - getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAMES" ), mUri.typeName() ); - else - getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAME" ), mUri.typeName() ); + { + getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAMES" ), typeName ); + } + getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAME" ), typeName ); + + QString namespaceValue( caps.getNamespaceParameterValue( WFSVersion, typeName ) ); + if ( !namespaceValue.isEmpty() ) + { + if ( WFSVersion.startsWith( QLatin1String( "2.0" ) ) ) + getFeatureUrl.addQueryItem( QStringLiteral( "NAMESPACES" ), namespaceValue ); + getFeatureUrl.addQueryItem( QStringLiteral( "NAMESPACE" ), namespaceValue ); + } + if ( !filter.isEmpty() ) { getFeatureUrl.addQueryItem( QStringLiteral( "FILTER" ), filter ); @@ -1409,8 +1449,16 @@ QgsRectangle QgsWFSSingleFeatureRequest::getExtent() getFeatureUrl.addQueryItem( QStringLiteral( "VERSION" ), mShared->mWFSVersion ); if ( mShared->mWFSVersion .startsWith( QLatin1String( "2.0" ) ) ) getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAMES" ), mUri.typeName() ); - else - getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAME" ), mUri.typeName() ); + getFeatureUrl.addQueryItem( QStringLiteral( "TYPENAME" ), mUri.typeName() ); + + QString namespaceValue( mShared->mCaps.getNamespaceParameterValue( mShared->mWFSVersion, mUri.typeName() ) ); + if ( !namespaceValue.isEmpty() ) + { + if ( mShared->mWFSVersion.startsWith( QLatin1String( "2.0" ) ) ) + getFeatureUrl.addQueryItem( QStringLiteral( "NAMESPACES" ), namespaceValue ); + getFeatureUrl.addQueryItem( QStringLiteral( "NAMESPACE" ), namespaceValue ); + } + if ( mShared->mWFSVersion .startsWith( QLatin1String( "2.0" ) ) ) getFeatureUrl.addQueryItem( QStringLiteral( "COUNT" ), QString::number( 1 ) ); else diff --git a/src/providers/wfs/qgswfsshareddata.h b/src/providers/wfs/qgswfsshareddata.h index 024dd50e80..78e3c641d1 100644 --- a/src/providers/wfs/qgswfsshareddata.h +++ b/src/providers/wfs/qgswfsshareddata.h @@ -22,6 +22,8 @@ #include "qgsogcutils.h" #include "qgssqliteutils.h" +#include <map> + /** * This class holds data, and logic, shared between QgsWFSProvider, QgsWFSFeatureIterator * and QgsWFSFeatureDownloader. It manages the on-disk cache, as a SpatiaLite @@ -240,6 +242,10 @@ class QgsWFSSharedData : public QObject //! Tablename of the on-disk cache QString mCacheTablename; + //! Map each GML field name to the column name in the spatialite DB cache + // This is useful when there are GML fields with same name, but different case + std::map<QString, QString> mMapGMLFieldNameToSQLiteColumnName; + //! Spatial index of requested cached regions QgsSpatialIndex mCachedRegions; @@ -289,7 +295,7 @@ class QgsWFSFeatureHitsRequest: public QgsWfsRequest explicit QgsWFSFeatureHitsRequest( QgsWFSDataSourceURI &uri ); //! Returns the feature count, or -1 in case of error - int getFeatureCount( const QString &WFSVersion, const QString &filter ); + int getFeatureCount( const QString &WFSVersion, const QString &filter, const QgsWfsCapabilities::Capabilities &caps ); protected: QString errorMessageWithReason( const QString &reason ) override; diff --git a/src/providers/wms/qgswmsprovider.cpp b/src/providers/wms/qgswmsprovider.cpp index 6a3c7a5ab4..2ee709d35c 100644 --- a/src/providers/wms/qgswmsprovider.cpp +++ b/src/providers/wms/qgswmsprovider.cpp @@ -563,7 +563,7 @@ void QgsWmsProvider::fetchOtherResTiles( QgsTileMode tileMode, const QgsRectangl ( viewExtent.yMaximum() - r.rect.bottom() ) / cr, r.rect.width() / cr, r.rect.height() / cr ); - otherResTiles << TileImage( dst, localImage ); + otherResTiles << TileImage( dst, localImage, false ); // see if there are any missing rects that are completely covered by this tile Q_FOREACH ( const QRectF &missingRect, missingRects ) @@ -773,12 +773,13 @@ QImage *QgsWmsProvider::draw( QgsRectangle const &viewExtent, int pixelWidth, in if ( QgsTileCache::tile( r.url, localImage ) ) { double cr = viewExtent.width() / image->width(); - QRectF dst( ( r.rect.left() - viewExtent.xMinimum() ) / cr, ( viewExtent.yMaximum() - r.rect.bottom() ) / cr, r.rect.width() / cr, r.rect.height() / cr ); - tileImages << TileImage( dst, localImage ); + // if image size is "close enough" to destination size, don't smooth it out. Instead try for pixel-perfect placement! + bool disableSmoothing = ( qgsDoubleNear( dst.width(), tm->tileWidth, 2 ) && qgsDoubleNear( dst.height(), tm->tileHeight, 2 ) ); + tileImages << TileImage( dst, localImage, !disableSmoothing ); } else { @@ -836,7 +837,7 @@ QImage *QgsWmsProvider::draw( QgsRectangle const &viewExtent, int pixelWidth, in // draw composite in this resolution Q_FOREACH ( const TileImage &ti, tileImages ) { - if ( mSettings.mSmoothPixmapTransform ) + if ( ti.smooth && mSettings.mSmoothPixmapTransform ) p.setRenderHint( QPainter::SmoothPixmapTransform, true ); p.drawImage( ti.rect, ti.img ); @@ -883,15 +884,15 @@ QImage *QgsWmsProvider::draw( QgsRectangle const &viewExtent, int pixelWidth, in return image; } -void QgsWmsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int pixelWidth, int pixelHeight, void *block, QgsRasterBlockFeedback *feedback ) +bool QgsWmsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int pixelWidth, int pixelHeight, void *block, QgsRasterBlockFeedback *feedback ) { Q_UNUSED( bandNo ); // TODO: optimize to avoid writing to QImage - QImage *image = draw( viewExtent, pixelWidth, pixelHeight, feedback ); + std::unique_ptr< QImage > image( draw( viewExtent, pixelWidth, pixelHeight, feedback ) ); if ( !image ) // should not happen { QgsMessageLog::logMessage( tr( "image is NULL" ), tr( "WMS" ) ); - return; + return false; } QgsDebugMsg( QStringLiteral( "image height = %1 bytesPerLine = %2" ).arg( image->height() ) . arg( image->bytesPerLine() ) ); @@ -900,8 +901,7 @@ void QgsWmsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int if ( myExpectedSize != myImageSize ) // should not happen { QgsMessageLog::logMessage( tr( "unexpected image size" ), tr( "WMS" ) ); - delete image; - return; + return false; } uchar *ptr = image->bits(); @@ -909,9 +909,12 @@ void QgsWmsProvider::readBlock( int bandNo, QgsRectangle const &viewExtent, int { // If image is too large, ptr can be NULL memcpy( block, ptr, myExpectedSize ); + return true; + } + else + { + return false; } - - delete image; } QUrl QgsWmsProvider::createRequestUrlWMS( const QgsRectangle &viewExtent, int pixelWidth, int pixelHeight ) @@ -3941,7 +3944,9 @@ void QgsWmsTiledImageDownloadHandler::tileReplyFinished() if ( !myLocalImage.isNull() ) { QPainter p( mImage ); - if ( mSmoothPixmapTransform ) + // if image size is "close enough" to destination size, don't smooth it out. Instead try for pixel-perfect placement! + const bool disableSmoothing = ( qgsDoubleNear( dst.width(), myLocalImage.width(), 2 ) && qgsDoubleNear( dst.height(), myLocalImage.height(), 2 ) ); + if ( !disableSmoothing && mSmoothPixmapTransform ) p.setRenderHint( QPainter::SmoothPixmapTransform, true ); p.drawImage( dst, myLocalImage ); #if 0 diff --git a/src/providers/wms/qgswmsprovider.h b/src/providers/wms/qgswmsprovider.h index e306d637c9..9572153b14 100644 --- a/src/providers/wms/qgswmsprovider.h +++ b/src/providers/wms/qgswmsprovider.h @@ -146,7 +146,7 @@ class QgsWmsProvider : public QgsRasterDataProvider */ void setConnectionName( QString const &connName ); - void readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; + bool readBlock( int bandNo, QgsRectangle const &viewExtent, int width, int height, void *data, QgsRasterBlockFeedback *feedback = nullptr ) override; //void readBlock( int bandNo, QgsRectangle const & viewExtent, int width, int height, QgsCoordinateReferenceSystem srcCRS, QgsCoordinateReferenceSystem destCRS, void *data ); QgsRectangle extent() const override; @@ -335,9 +335,10 @@ class QgsWmsProvider : public QgsRasterDataProvider //! Helper structure to store a cached tile image with its rectangle typedef struct TileImage { - TileImage( const QRectF &r, const QImage &i ): rect( r ), img( i ) {} + TileImage( const QRectF &r, const QImage &i, bool smooth ): rect( r ), img( i ), smooth( smooth ) {} QRectF rect; //!< Destination rectangle for a tile (in screen coordinates) QImage img; //!< Cached tile to be drawn + bool smooth; //!< Whether to use antialiasing/smooth transforms when rendering tile } TileImage; //! Gets tiles from a different resolution to cover the missing areas void fetchOtherResTiles( QgsTileMode tileMode, const QgsRectangle &viewExtent, int imageWidth, QList<QRectF> &missing, double tres, int resOffset, QList<TileImage> &otherResTiles ); diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt index 88c8292d87..f3dfc2f8ef 100644 --- a/src/server/CMakeLists.txt +++ b/src/server/CMakeLists.txt @@ -40,6 +40,7 @@ SET(QGIS_SERVER_SRCS qgsserviceregistry.cpp qgsfeaturefilterprovidergroup.cpp qgsfeaturefilter.cpp + qgsstorebadlayerinfo.cpp ) SET (QGIS_SERVER_HDRS diff --git a/src/server/qgsconfigcache.cpp b/src/server/qgsconfigcache.cpp index f430327a03..0f39fd2be1 100644 --- a/src/server/qgsconfigcache.cpp +++ b/src/server/qgsconfigcache.cpp @@ -17,7 +17,8 @@ #include "qgsconfigcache.h" #include "qgsmessagelog.h" -#include "qgsaccesscontrol.h" +#include "qgsserverexception.h" +#include "qgsstorebadlayerinfo.h" #include <QFile> @@ -41,8 +42,16 @@ const QgsProject *QgsConfigCache::project( const QString &path ) if ( ! mProjectCache[ path ] ) { std::unique_ptr<QgsProject> prj( new QgsProject() ); + QgsStoreBadLayerInfo *badLayerHandler = new QgsStoreBadLayerInfo(); + prj->setBadLayerHandler( badLayerHandler ); if ( prj->read( path ) ) { + if ( !badLayerHandler->badLayers().isEmpty() ) + { + QString errorMsg = QStringLiteral( "Layer(s) %1 not valid" ).arg( badLayerHandler->badLayers().join( ',' ) ); + QgsMessageLog::logMessage( errorMsg, QStringLiteral( "Server" ), Qgis::Critical ); + throw QgsServerException( QStringLiteral( "Layer(s) not valid" ) ); + } mProjectCache.insert( path, prj.release() ); mFileSystemWatcher.addPath( path ); } diff --git a/src/server/qgsstorebadlayerinfo.cpp b/src/server/qgsstorebadlayerinfo.cpp new file mode 100644 index 0000000000..567b5dc423 --- /dev/null +++ b/src/server/qgsstorebadlayerinfo.cpp @@ -0,0 +1,36 @@ +/*************************************************************************** + qgsstorebadlayerinfo.cpp + ------------------------ + begin : Jan 2019 + copyright : (C) 2019 by Marco Hugentobler + email : marco dot hugentobler at sourcepole dot ch + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "qgsstorebadlayerinfo.h" +#include <QDomElement> + +void QgsStoreBadLayerInfo::handleBadLayers( const QList<QDomNode> &layers ) +{ + mBadLayerIds.clear(); + QList<QDomNode>::const_iterator it = layers.constBegin(); + for ( ; it != layers.constEnd(); ++it ) + { + if ( !it->isNull() ) + { + QDomElement idElem = it->firstChildElement( "id" ); + if ( !idElem.isNull() ) + { + mBadLayerIds.append( idElem.text() ); + } + } + } +} diff --git a/src/server/qgsstorebadlayerinfo.h b/src/server/qgsstorebadlayerinfo.h new file mode 100644 index 0000000000..9511149d12 --- /dev/null +++ b/src/server/qgsstorebadlayerinfo.h @@ -0,0 +1,47 @@ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef QGSSTOREBADLAYERINFO_H +#define QGSSTOREBADLAYERINFO_H + +#include "qgsprojectbadlayerhandler.h" +#include "qgis_server.h" +#include <QStringList> + +/** + * \ingroup server + * Stores layer ids of bad layers + * \since QGIS 3.4.8 + */ +class SERVER_EXPORT QgsStoreBadLayerInfo: public QgsProjectBadLayerHandler +{ + public: + + /** + * Default constructor + */ + QgsStoreBadLayerInfo() = default; + + /** + * \brief handleBadLayers + * \param layers layer nodes + */ + void handleBadLayers( const QList<QDomNode> &layers ); + + /** + * \brief badLayers + * \returns ids of bad layers + */ + QStringList badLayers() const { return mBadLayerIds; } + + private: + QStringList mBadLayerIds; +}; + +#endif // QGSSTOREBADLAYERINFO_H diff --git a/src/server/services/wfs/qgswfsdescribefeaturetype.cpp b/src/server/services/wfs/qgswfsdescribefeaturetype.cpp index e970fee869..9ade6a919b 100644 --- a/src/server/services/wfs/qgswfsdescribefeaturetype.cpp +++ b/src/server/services/wfs/qgswfsdescribefeaturetype.cpp @@ -296,7 +296,7 @@ namespace QgsWfs } else if ( attributeType == QVariant::Double ) { - if ( field.length() != 0 && field.precision() == 0 ) + if ( field.length() > 0 && field.precision() == 0 ) attElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "integer" ) ); else attElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "decimal" ) ); diff --git a/src/server/services/wms/qgswmsgetcapabilities.cpp b/src/server/services/wms/qgswmsgetcapabilities.cpp index 9386fa8ea4..5b2d76baa1 100644 --- a/src/server/services/wms/qgswmsgetcapabilities.cpp +++ b/src/server/services/wms/qgswmsgetcapabilities.cpp @@ -129,7 +129,7 @@ namespace QgsWms if ( !capabilitiesDocument ) //capabilities xml not in cache. Create a new one { - QgsMessageLog::logMessage( QStringLiteral( "WMS capabilities document not found in cache" ) ); + QgsMessageLog::logMessage( QStringLiteral( "WMS capabilities document not found in cache" ), QStringLiteral( "Server" ) ); doc = getCapabilities( serverIface, project, version, request, projectSettings ); @@ -149,12 +149,12 @@ namespace QgsWms } else { - QgsMessageLog::logMessage( QStringLiteral( "Set WMS capabilities document in cache" ) ); + QgsMessageLog::logMessage( QStringLiteral( "Set WMS capabilities document in cache" ), QStringLiteral( "Server" ) ); } } else { - QgsMessageLog::logMessage( QStringLiteral( "Found WMS capabilities document in cache" ) ); + QgsMessageLog::logMessage( QStringLiteral( "Found WMS capabilities document in cache" ), QStringLiteral( "Server" ) ); } response.setHeader( QStringLiteral( "Content-Type" ), QStringLiteral( "text/xml; charset=utf-8" ) ); @@ -1049,6 +1049,20 @@ namespace QgsWms // or the CRS extent otherwise extent = vl->crs().bounds(); } + // If CRS is different transform it to layer's CRS + else if ( vl->crs() != project->crs() ) + { + try + { + QgsCoordinateTransform ct( project->crs(), vl->crs(), project->transformContext() ); + extent = ct.transform( extent ); + } + catch ( QgsCsException &cse ) + { + QgsMessageLog::logMessage( QStringLiteral( "Error transforming extent for layer %1: %2" ).arg( vl->name() ).arg( cse.what() ), QStringLiteral( "Server" ), Qgis::MessageLevel::Warning ); + continue; + } + } } } @@ -1335,8 +1349,9 @@ namespace QgsWms { wgs84BoundingRect = exGeoTransform.transformBoundingBox( layerExtent ); } - catch ( const QgsCsException & ) + catch ( const QgsCsException &cse ) { + QgsMessageLog::logMessage( QStringLiteral( "Error transforming extent: %1" ).arg( cse.what() ), QStringLiteral( "Server" ), Qgis::MessageLevel::Warning ); wgs84BoundingRect = QgsRectangle(); } } @@ -1430,7 +1445,7 @@ namespace QgsWms } catch ( QgsCsException &cse ) { - Q_UNUSED( cse ); + QgsMessageLog::logMessage( QStringLiteral( "Error transforming extent: %1" ).arg( cse.what() ), QStringLiteral( "Server" ), Qgis::MessageLevel::Warning ); return; } } @@ -1543,8 +1558,9 @@ namespace QgsWms { BBox = t.transformBoundingBox( BBox ); } - catch ( const QgsCsException & ) + catch ( const QgsCsException &cse ) { + QgsMessageLog::logMessage( QStringLiteral( "Error transforming extent: %1" ).arg( cse.what() ), QStringLiteral( "Server" ), Qgis::MessageLevel::Warning ); BBox = QgsRectangle(); } diff --git a/src/server/services/wms/qgswmsgetcontext.cpp b/src/server/services/wms/qgswmsgetcontext.cpp index 830f993c65..11c2002136 100644 --- a/src/server/services/wms/qgswmsgetcontext.cpp +++ b/src/server/services/wms/qgswmsgetcontext.cpp @@ -284,11 +284,11 @@ namespace QgsWms // visibility if ( treeLayer->itemVisibilityChecked() ) { - layerElem.setAttribute( QStringLiteral( "hidden" ), QStringLiteral( "true" ) ); + layerElem.setAttribute( QStringLiteral( "hidden" ), QStringLiteral( "false" ) ); } else { - layerElem.setAttribute( QStringLiteral( "hidden" ), QStringLiteral( "false" ) ); + layerElem.setAttribute( QStringLiteral( "hidden" ), QStringLiteral( "true" ) ); } // layer group diff --git a/src/server/services/wms/qgswmsparameters.cpp b/src/server/services/wms/qgswmsparameters.cpp index 38bf34db80..b74b80d54b 100644 --- a/src/server/services/wms/qgswmsparameters.cpp +++ b/src/server/services/wms/qgswmsparameters.cpp @@ -1380,13 +1380,15 @@ namespace QgsWms { // filter format: "LayerName:filterString;LayerName2:filterString2;..." // several filters can be defined for one layer - const QStringList splits = f.split( ':' ); - if ( splits.size() == 2 ) + const int colonIndex = f.indexOf( ':' ); + if ( colonIndex != -1 ) { - QgsWmsParametersFilter filter; - filter.mFilter = splits[1]; - filter.mType = QgsWmsParametersFilter::SQL; - filters.insert( splits[0], filter ); + const QString layer = f.section( ':', 0, 0 ); + const QString filter = f.section( ':', 1 ); + QgsWmsParametersFilter parametersFilter; + parametersFilter.mFilter = filter; + parametersFilter.mType = QgsWmsParametersFilter::SQL; + filters.insert( layer, parametersFilter ); } else { diff --git a/src/ui/effects/widget_blur.ui b/src/ui/effects/widget_blur.ui index f779027e0f..6ab52e4cde 100644 --- a/src/ui/effects/widget_blur.ui +++ b/src/ui/effects/widget_blur.ui @@ -31,7 +31,7 @@ <property name="bottomMargin"> <number>0</number> </property> - <item row="0" column="1"> + <item row="0" column="1" colspan="2"> <widget class="QComboBox" name="mBlurTypeCombo"/> </item> <item row="2" column="0"> @@ -48,19 +48,41 @@ </property> </widget> </item> - <item row="3" column="1"> + <item row="3" column="1" colspan="2"> <widget class="QgsBlendModeComboBox" name="mBlendCmbBx"/> </item> <item row="1" column="1"> - <widget class="QgsSpinBox" name="mBlurStrengthSpnBx"> + <widget class="QgsDoubleSpinBox" name="mBlurStrengthSpnBx"> + <property name="decimals"> + <number>4</number> + </property> + <property name="minimum"> + <double>0.000000000000000</double> + </property> <property name="maximum"> - <number>16</number> + <double>9999999.000000000000000</double> + </property> + <property name="singleStep"> + <double>0.200000000000000</double> </property> <property name="showClearButton" stdset="0"> <bool>false</bool> </property> </widget> </item> + <item row="1" column="2"> + <widget class="QgsUnitSelectionWidget" name="mBlurUnitWidget" native="true"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + </widget> + </item> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> @@ -75,7 +97,7 @@ </property> </widget> </item> - <item row="4" column="1"> + <item row="4" column="1" colspan="2"> <widget class="QgsEffectDrawModeComboBox" name="mDrawModeComboBox"/> </item> <item row="4" column="0"> @@ -85,7 +107,7 @@ </property> </widget> </item> - <item row="2" column="1"> + <item row="2" column="1" colspan="2"> <widget class="QgsOpacityWidget" name="mOpacityWidget" native="true"> <property name="focusPolicy"> <enum>Qt::StrongFocus</enum> @@ -114,9 +136,9 @@ </widget> <customwidgets> <customwidget> - <class>QgsSpinBox</class> - <extends>QSpinBox</extends> - <header>qgsspinbox.h</header> + <class>QgsDoubleSpinBox</class> + <extends>QDoubleSpinBox</extends> + <header>qgsdoublespinbox.h</header> </customwidget> <customwidget> <class>QgsBlendModeComboBox</class> diff --git a/src/ui/effects/widget_glow.ui b/src/ui/effects/widget_glow.ui index e79dab3edc..fb33d93fdb 100644 --- a/src/ui/effects/widget_glow.ui +++ b/src/ui/effects/widget_glow.ui @@ -84,6 +84,9 @@ <property name="maximum"> <double>9999999.000000000000000</double> </property> + <property name="singleStep"> + <double>0.200000000000000</double> + </property> <property name="showClearButton" stdset="0"> <bool>false</bool> </property> @@ -102,16 +105,38 @@ </property> </widget> </item> - <item row="1" column="1" colspan="2"> - <widget class="QgsSpinBox" name="mBlurRadiusSpnBx"> + <item row="1" column="1"> + <widget class="QgsDoubleSpinBox" name="mBlurRadiusSpnBx"> + <property name="decimals"> + <number>4</number> + </property> + <property name="minimum"> + <double>0.000000000000000</double> + </property> <property name="maximum"> - <number>16</number> + <double>9999999.000000000000000</double> + </property> + <property name="singleStep"> + <double>0.200000000000000</double> </property> <property name="showClearButton" stdset="0"> <bool>false</bool> </property> </widget> </item> + <item row="1" column="2"> + <widget class="QgsUnitSelectionWidget" name="mBlurUnitWidget" native="true"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + </widget> + </item> <item row="4" column="1" colspan="2"> <widget class="QgsColorRampButton" name="btnColorRamp"> <property name="sizePolicy"> diff --git a/src/ui/effects/widget_shadoweffect.ui b/src/ui/effects/widget_shadoweffect.ui index 1beb93afc3..0bff4c8a14 100644 --- a/src/ui/effects/widget_shadoweffect.ui +++ b/src/ui/effects/widget_shadoweffect.ui @@ -42,6 +42,9 @@ <property name="maximum"> <double>9999999.000000000000000</double> </property> + <property name="singleStep"> + <double>0.200000000000000</double> + </property> <property name="showClearButton" stdset="0"> <bool>false</bool> </property> @@ -107,16 +110,38 @@ <item row="5" column="1" colspan="2"> <widget class="QgsBlendModeComboBox" name="mShadowBlendCmbBx"/> </item> - <item row="2" column="1" colspan="2"> - <widget class="QgsSpinBox" name="mShadowRadiuSpnBx"> + <item row="2" column="1"> + <widget class="QgsDoubleSpinBox" name="mShadowRadiuSpnBx"> + <property name="decimals"> + <number>4</number> + </property> + <property name="minimum"> + <double>0.000000000000000</double> + </property> <property name="maximum"> - <number>16</number> + <double>9999999.000000000000000</double> + </property> + <property name="singleStep"> + <double>0.200000000000000</double> </property> <property name="showClearButton" stdset="0"> <bool>false</bool> </property> </widget> </item> + <item row="2" column="2"> + <widget class="QgsUnitSelectionWidget" name="mBlurUnitWidget" native="true"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + </widget> + </item> <item row="0" column="1" colspan="2"> <layout class="QHBoxLayout" name="horizontalLayout_24"> <item> diff --git a/src/ui/qgsfirstrundialog.ui b/src/ui/qgsfirstrundialog.ui index 98594ee865..36f840615e 100644 --- a/src/ui/qgsfirstrundialog.ui +++ b/src/ui/qgsfirstrundialog.ui @@ -109,66 +109,72 @@ <item row="1" column="0" colspan="2"> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Expanding</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Ready to go?</string> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="mImportSettingsYes"> - <property name="text"> - <string>Import settings from QGIS 2.</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QRadioButton" name="mImportSettingsNo"> - <property name="text"> - <string>I want a clean start. Don't import my QGIS 2 settings.</string> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Settings will be imported into the default profile and you will only see this screen once.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> + <widget class="QWidget" name="mMigrationWidget" native="true"> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>45</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Ready to go?</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="mImportSettingsYes"> + <property name="text"> + <string>Import settings from QGIS 2.</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="mImportSettingsNo"> + <property name="text"> + <string>I want a clean start. Don't import my QGIS 2 settings.</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Settings will be imported into the default profile and you will only see this screen once.</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> </widget> </item> </layout> diff --git a/src/ui/qgslabelingwidget.ui b/src/ui/qgslabelingwidget.ui index 742ad2426e..6f84835434 100644 --- a/src/ui/qgslabelingwidget.ui +++ b/src/ui/qgslabelingwidget.ui @@ -66,7 +66,7 @@ </widget> </item> <item> - <widget class="QPushButton" name="mEngineSettingsButton"> + <widget class="QToolButton" name="mEngineSettingsButton"> <property name="enabled"> <bool>true</bool> </property> @@ -77,12 +77,6 @@ <iconset resource="../../images/images.qrc"> <normaloff>:/images/themes/default/mIconAutoPlacementSettings.svg</normaloff>:/images/themes/default/mIconAutoPlacementSettings.svg</iconset> </property> - <property name="iconSize"> - <size> - <width>24</width> - <height>16</height> - </size> - </property> </widget> </item> </layout> diff --git a/src/ui/qgsoptionsbase.ui b/src/ui/qgsoptionsbase.ui index b15b2b6342..5caf21da11 100644 --- a/src/ui/qgsoptionsbase.ui +++ b/src/ui/qgsoptionsbase.ui @@ -1626,14 +1626,14 @@ </rect> </property> <layout class="QGridLayout" name="gridLayout_15"> - <item row="4" column="0"> - <widget class="QgsCollapsibleGroupBox" name="grpProjectionBehavior"> + <item row="2" column="0"> + <widget class="QgsCollapsibleGroupBox" name="grpProjectProjection"> <property name="title"> - <string>CRS for new layers</string> + <string>CRS for New Projects</string> </property> - <layout class="QGridLayout" name="gridLayout_14" columnstretch="0,1"> + <layout class="QGridLayout" name="gridLayout_27" columnstretch="0,1"> <item row="0" column="0" colspan="2"> - <widget class="QLabel" name="label_8"> + <widget class="QLabel" name="label_42"> <property name="sizePolicy"> <sizepolicy hsizetype="Preferred" vsizetype="Maximum"> <horstretch>0</horstretch> @@ -1641,51 +1641,47 @@ </sizepolicy> </property> <property name="text"> - <string>When a new layer is created, or when a layer is loaded that has no CRS</string> + <string>When a new project is created</string> </property> <property name="wordWrap"> <bool>true</bool> </property> </widget> </item> - <item row="1" column="0"> - <widget class="QRadioButton" name="radPromptForProjection"> - <property name="text"> - <string>Pro&mpt for CRS</string> + <item row="2" column="1"> + <widget class="QgsProjectionSelectionWidget" name="leProjectGlobalCrs" native="true"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>5</height> + </size> </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QRadioButton" name="radUseProjectProjection"> - <property name="text"> - <string>Use pro&ject CRS</string> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> </property> </widget> </item> - <item row="3" column="0"> - <widget class="QRadioButton" name="radUseGlobalProjection"> + <item row="2" column="0"> + <widget class="QRadioButton" name="radProjectUseDefaultCrs"> <property name="text"> <string>&Use a default CRS</string> </property> </widget> </item> - <item row="3" column="1"> - <widget class="QgsProjectionSelectionWidget" name="leLayerGlobalCrs" native="true"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> + <item row="1" column="0" colspan="2"> + <widget class="QRadioButton" name="radProjectUseCrsOfFirstLayer"> + <property name="text"> + <string>Use CRS from first layer added</string> </property> </widget> </item> </layout> </widget> </item> - <item row="5" column="0"> + <item row="4" column="0"> <widget class="QgsCollapsibleGroupBox" name="mDefaultDatumTransformGroupBox"> <property name="title"> - <string>Default datum transformations</string> + <string>Default Datum Transformations</string> </property> <layout class="QGridLayout" name="gridLayout_10"> <item row="2" column="0"> @@ -1715,7 +1711,7 @@ </layout> </widget> </item> - <item row="6" column="0"> + <item row="5" column="0"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -1728,32 +1724,61 @@ </property> </spacer> </item> - <item row="2" column="0"> - <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,1"> - <property name="topMargin"> - <number>3</number> + <item row="3" column="0"> + <widget class="QgsCollapsibleGroupBox" name="grpProjectionBehavior"> + <property name="title"> + <string>CRS for New Layers</string> </property> - <item> - <widget class="QLabel" name="label_16"> - <property name="text"> - <string>Default CRS for new projects</string> - </property> - </widget> - </item> - <item> - <widget class="QgsProjectionSelectionWidget" name="leProjectGlobalCrs" native="true"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>5</height> - </size> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - </widget> - </item> - </layout> + <layout class="QGridLayout" name="gridLayout_14" columnstretch="0,1"> + <item row="0" column="0" colspan="2"> + <widget class="QLabel" name="label_8"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Maximum"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>When a new layer is created, or when a layer is loaded that has no CRS</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QRadioButton" name="radPromptForProjection"> + <property name="text"> + <string>Pro&mpt for CRS</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QRadioButton" name="radUseProjectProjection"> + <property name="text"> + <string>Use pro&ject CRS</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QRadioButton" name="radUseGlobalProjection"> + <property name="text"> + <string>&Use a default CRS</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QgsProjectionSelectionWidget" name="leLayerGlobalCrs" native="true"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + </widget> + </item> + </layout> + </widget> </item> </layout> </widget> @@ -5581,6 +5606,8 @@ p, li { white-space: pre-wrap; } <tabstop>mCurrentVariablesTable</tabstop> <tabstop>mCurrentVariablesQGISChxBx</tabstop> <tabstop>mOptionsScrollArea_08</tabstop> + <tabstop>radProjectUseCrsOfFirstLayer</tabstop> + <tabstop>radProjectUseDefaultCrs</tabstop> <tabstop>leProjectGlobalCrs</tabstop> <tabstop>radPromptForProjection</tabstop> <tabstop>radUseProjectProjection</tabstop> diff --git a/src/ui/qgsrasterlayersaveasdialogbase.ui b/src/ui/qgsrasterlayersaveasdialogbase.ui index 2a8eef2370..9d6615ba4e 100644 --- a/src/ui/qgsrasterlayersaveasdialogbase.ui +++ b/src/ui/qgsrasterlayersaveasdialogbase.ui @@ -185,8 +185,8 @@ datasets with maximum width and height specified below.</string> <rect> <x>0</x> <y>0</y> - <width>543</width> - <height>675</height> + <width>541</width> + <height>597</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_5"> @@ -754,38 +754,5 @@ datasets with maximum width and height specified below.</string> <resources> <include location="../../images/images.qrc"/> </resources> - <connections> - <connection> - <sender>mButtonBox</sender> - <signal>accepted()</signal> - <receiver>QgsRasterLayerSaveAsDialogBase</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>254</x> - <y>575</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>mButtonBox</sender> - <signal>rejected()</signal> - <receiver>QgsRasterLayerSaveAsDialogBase</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>322</x> - <y>575</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> + <connections/> </ui> diff --git a/src/ui/qgstextformatwidgetbase.ui b/src/ui/qgstextformatwidgetbase.ui index 1366f5dd27..6a30ad7ddc 100644 --- a/src/ui/qgstextformatwidgetbase.ui +++ b/src/ui/qgstextformatwidgetbase.ui @@ -4066,6 +4066,13 @@ font-style: italic;</string> </property> </widget> </item> + <item> + <widget class="QgsPropertyOverrideButton" name="mLinePlacementFlagsDDBtn"> + <property name="text"> + <string>…</string> + </property> + </widget> + </item> </layout> </item> <item row="1" column="1"> @@ -4196,6 +4203,9 @@ font-style: italic;</string> <property name="decimals"> <number>4</number> </property> + <property name="minimum"> + <double>-999999999.000000000000000</double> + </property> <property name="maximum"> <double>999999999.000000000000000</double> </property> @@ -6488,6 +6498,7 @@ font-style: italic;</string> <tabstop>chkLineOn</tabstop> <tabstop>chkLineBelow</tabstop> <tabstop>chkLineOrientationDependent</tabstop> + <tabstop>mLinePlacementFlagsDDBtn</tabstop> <tabstop>mCentroidRadioVisible</tabstop> <tabstop>mCentroidRadioWhole</tabstop> <tabstop>mCentroidDDBtn</tabstop> diff --git a/tests/README.md b/tests/README.md index 3fbdc740ec..011f786c6d 100644 --- a/tests/README.md +++ b/tests/README.md @@ -29,7 +29,6 @@ You could re-run the failing test with: The parameter `-V` enables verbose mode and `-R` takes a regular expression as parameter and will only run matching tests. - For python tests, you can run a specific test inside a unit file with something like this: @@ -39,6 +38,13 @@ with something like this: TestQgsVectorLayer.testOverwriteLayer ``` +If you get `Could not connect to any X display` errors it means that your build +machine does not have an X server. In that case you need to run the test under +`xvfb-run`. For example: + +``` + xvfb-run --server-args=-screen\ 10\ 1024x768x24 ctest -V -R PyQgsServerWMSGetMap +``` # Advanced configuration diff --git a/tests/code_layout/acceptable_missing_doc.py b/tests/code_layout/acceptable_missing_doc.py index 36037a45d3..e872fd21b9 100644 --- a/tests/code_layout/acceptable_missing_doc.py +++ b/tests/code_layout/acceptable_missing_doc.py @@ -21,7 +21,7 @@ __author__ = 'Stéphane Brunner' __date__ = 'March 2016' __copyright__ = '(C) 2016, Stéphane Brunner' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # -*- coding: utf-8 -*- """ @@ -31,7 +31,7 @@ __author__ = 'Stéphane Brunner' __date__ = '18/03/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' ACCEPTABLE_MISSING_DOCS = { "CharacterWidget": ['updateFontMerging(bool enable)'], diff --git a/tests/code_layout/test_doxygen_layout.sh b/tests/code_layout/test_doxygen_layout.sh index a0b580d7c4..f2724e06ad 100755 --- a/tests/code_layout/test_doxygen_layout.sh +++ b/tests/code_layout/test_doxygen_layout.sh @@ -3,14 +3,14 @@ # check that returns are placed before note and since output=$(unbuffer ag --noaffinity --file-search-regex '\.h$' --multiline '\\(note|since)[^\n]+(\n\s*\* [^\n]+)*\n\s*\* \\return' ${TRAVIS_BUILD_DIR} | tee /dev/stderr) -if [[ ! -z $output ]]; then +if [[ -n $output ]]; then echo -e "\n\x1B[31m*** Docstring computation: \\\return(s) should be placed before \\\note and \\since\x1B[0m" exit 1 fi # check that \since and \deprecated are placed at the end of the command block output=$(unbuffer ag --noaffinity --file-search-regex '\.h$' --multiline '(\\(deprecated|since)[^\n]+\n)+\s*\*[^\/](?!\s*\\(deprecated|since))' ${TRAVIS_BUILD_DIR} | tee /dev/stderr) -if [[ ! -z $output ]]; then +if [[ -n $output ]]; then echo -e "\n\x1B[31m*** Docstring computation: \\\deprecated and \\\since should be placed at the end of command blocks\x1B[0m" echo -e "To fix it, you may want to run (multiple times) at the top level directory:" echo 'sed -i -r '"'"'$!N;s/^(\s*\*\s+\\(deprecated|since)[^\n]+)\n(\s*\*([^\/].*|$))/\3\n\1/;P;D'"'"' $(ag -c --noaffinity --file-search-regex '"'"'\.h$'"'"' --multiline '"'"'(\\(deprecated|since)[^\n]+\n)+\s*\*[^\/]'"'"' . | cut -d: -f1)' @@ -21,7 +21,7 @@ fi # code snippets command output=$(unbuffer ag --noaffinity --file-search-regex '\.h$' --multiline '~~~\{\.\w+\}' ${TRAVIS_BUILD_DIR} | tee /dev/stderr) -if [[ ! -z $output ]]; then +if [[ -n $output ]]; then echo -e "\n\x1B[31m*** Docstring computation: code snippets should use \\\code{.xx} rather than ~~~{.xx} \x1B[0m" exit 1 fi diff --git a/tests/code_layout/test_qgsdoccoverage.py b/tests/code_layout/test_qgsdoccoverage.py index 0d560f8c7c..faae015692 100644 --- a/tests/code_layout/test_qgsdoccoverage.py +++ b/tests/code_layout/test_qgsdoccoverage.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '01/02/2015' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import sys diff --git a/tests/code_layout/test_qgssipcoverage.py b/tests/code_layout/test_qgssipcoverage.py index 116b277bc6..533478c792 100644 --- a/tests/code_layout/test_qgssipcoverage.py +++ b/tests/code_layout/test_qgssipcoverage.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '15/10/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.testing import unittest diff --git a/tests/src/analysis/testqgsprocessing.cpp b/tests/src/analysis/testqgsprocessing.cpp index 1b4c7e09c7..205137ab73 100644 --- a/tests/src/analysis/testqgsprocessing.cpp +++ b/tests/src/analysis/testqgsprocessing.cpp @@ -1652,14 +1652,14 @@ void TestQgsProcessing::createFeatureSink() // no extension, should default to shp destination = QDir::tempPath() + "/create_feature_sink2"; prevDest = QDir::tempPath() + "/create_feature_sink2.gpkg"; - sink.reset( QgsProcessingUtils::createFeatureSink( destination, context, fields, QgsWkbTypes::Point25D, QgsCoordinateReferenceSystem::fromEpsgId( 3111 ) ) ); + sink.reset( QgsProcessingUtils::createFeatureSink( destination, context, fields, QgsWkbTypes::PointZ, QgsCoordinateReferenceSystem::fromEpsgId( 3111 ) ) ); QVERIFY( sink.get() ); f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "PointZ(1 2 3)" ) ) ); QVERIFY( sink->addFeature( f ) ); QCOMPARE( destination, prevDest ); sink.reset( nullptr ); layer = qobject_cast< QgsVectorLayer *>( QgsProcessingUtils::mapLayerFromString( destination, context, true ) ); - QCOMPARE( layer->wkbType(), QgsWkbTypes::Point25D ); + QCOMPARE( layer->wkbType(), QgsWkbTypes::PointZ ); QCOMPARE( layer->crs().authid(), QStringLiteral( "EPSG:3111" ) ); QCOMPARE( layer->fields().size(), 2 ); QCOMPARE( layer->fields().at( 0 ).name(), QStringLiteral( "fid" ) ); diff --git a/tests/src/analysis/testqgsrastercalculator.cpp b/tests/src/analysis/testqgsrastercalculator.cpp index af48f6cc6a..b5ee7ec60e 100644 --- a/tests/src/analysis/testqgsrastercalculator.cpp +++ b/tests/src/analysis/testqgsrastercalculator.cpp @@ -552,6 +552,20 @@ void TestQgsRasterCalculator::findNodes() QCOMPARE( _test( QStringLiteral( "2 + 3" ), QgsRasterCalcNode::Type::tNumber ).length(), 2 ); QCOMPARE( _test( QStringLiteral( "2 + 3" ), QgsRasterCalcNode::Type::tOperator ).length(), 1 ); + // Test parser with valid and invalid expressions + QString errorString; + const QgsRasterCalcNode *node { QgsRasterCalcNode::parseRasterCalcString( QString( ), errorString ) }; + QVERIFY( ! node ); + QVERIFY( ! errorString.isEmpty() ); + errorString = QString(); + node = QgsRasterCalcNode::parseRasterCalcString( QStringLiteral( "log10(2)" ), errorString ); + QVERIFY( node ); + QVERIFY( errorString.isEmpty() ); + errorString = QString(); + node = QgsRasterCalcNode::parseRasterCalcString( QStringLiteral( "not_a_function(2)" ), errorString ); + QVERIFY( ! node ); + QVERIFY( ! errorString.isEmpty() ); + } void TestQgsRasterCalculator::errors( ) diff --git a/tests/src/app/testqgsmaptoolreshape.cpp b/tests/src/app/testqgsmaptoolreshape.cpp index 21a266a4fb..05f944ef2c 100644 --- a/tests/src/app/testqgsmaptoolreshape.cpp +++ b/tests/src/app/testqgsmaptoolreshape.cpp @@ -14,61 +14,191 @@ ***************************************************************************/ #include "qgstest.h" -#include "qgsapplication.h" + +#include "qgisapp.h" +#include "qgsadvanceddigitizingdockwidget.h" +#include "qgsgeometry.h" #include "qgsmapcanvas.h" -#include "qgsvectorlayer.h" -#include "qgslinestring.h" +#include "qgsmapcanvassnappingutils.h" +#include "qgssnappingconfig.h" +#include "qgssnappingutils.h" #include "qgsmaptoolreshape.h" -#include "qgisapp.h" +#include "qgsproject.h" +#include "qgssettings.h" +#include "qgsvectorlayer.h" +#include "qgsmapmouseevent.h" +#include "testqgsmaptoolutils.h" + -class TestQgsMapToolReshape : public QObject +/** + * \ingroup UnitTests + * This is a unit test for the vertex tool + */ +class TestQgsMapToolReshape: public QObject { Q_OBJECT public: - TestQgsMapToolReshape() = default; + TestQgsMapToolReshape(); private slots: - void initTestCase(); // will be called before the first testfunction is executed. - void cleanupTestCase(); // will be called after the last testfunction was executed. - void init(); // will be called before each testfunction is executed. - void cleanup(); // will be called after every testfunction. + void initTestCase();// will be called before the first testfunction is executed. + void cleanupTestCase();// will be called after the last testfunction was executed. + void testReshapeZ(); void reshapeWithBindingLine(); private: QgisApp *mQgisApp = nullptr; + QgsMapCanvas *mCanvas = nullptr; + QgsMapToolReshape *mCaptureTool = nullptr; + QgsVectorLayer *mLayerLineZ = nullptr; + QgsVectorLayer *mLayerPointZ = nullptr; + QgsVectorLayer *mLayerPolygonZ = nullptr; }; +TestQgsMapToolReshape::TestQgsMapToolReshape() = default; + + +//runs before all tests void TestQgsMapToolReshape::initTestCase() { + qDebug() << "TestMapToolCapture::initTestCase()"; + // init QGIS's paths - true means that all path will be inited from prefix QgsApplication::init(); QgsApplication::initQgis(); - // Set up the QgsSettings environment + // Set up the QSettings environment QCoreApplication::setOrganizationName( QStringLiteral( "QGIS" ) ); QCoreApplication::setOrganizationDomain( QStringLiteral( "qgis.org" ) ); QCoreApplication::setApplicationName( QStringLiteral( "QGIS-TEST" ) ); - QgsApplication::showSettings(); + mQgisApp = new QgisApp(); + + mCanvas = new QgsMapCanvas(); - // enforce C locale because the tests expect it - // (decimal separators / thousand separators) - QLocale::setDefault( QLocale::c() ); + mCanvas->setDestinationCrs( QgsCoordinateReferenceSystem( QStringLiteral( "EPSG:3946" ) ) ); - mQgisApp = new QgisApp(); + mCanvas->setFrameStyle( QFrame::NoFrame ); + mCanvas->resize( 512, 512 ); + mCanvas->setExtent( QgsRectangle( 0, 0, 8, 8 ) ); + mCanvas->show(); // to make the canvas resize + mCanvas->hide(); + + // make testing layers + mLayerLineZ = new QgsVectorLayer( QStringLiteral( "LineStringZ?crs=EPSG:3946" ), QStringLiteral( "layer line Z" ), QStringLiteral( "memory" ) ); + QVERIFY( mLayerLineZ->isValid() ); + QgsProject::instance()->addMapLayers( QList<QgsMapLayer *>() << mLayerLineZ ); + + mLayerPointZ = new QgsVectorLayer( QStringLiteral( "PointZ?crs=EPSG:3946" ), QStringLiteral( "point Z" ), QStringLiteral( "memory" ) ); + QVERIFY( mLayerPointZ->isValid() ); + QgsProject::instance()->addMapLayers( QList<QgsMapLayer *>() << mLayerPointZ ); + + mLayerPolygonZ = new QgsVectorLayer( QStringLiteral( "PolygonZ?crs=EPSG:3946" ), QStringLiteral( "polygon Z" ), QStringLiteral( "memory" ) ); + QVERIFY( mLayerPolygonZ->isValid() ); + QgsProject::instance()->addMapLayers( QList<QgsMapLayer *>() << mLayerPolygonZ ); + + mLayerLineZ->startEditing(); + QString wkt1 = "LineStringZ (0 0 0, 1 1 0, 1 2 0)"; + QString wkt2 = "LineStringZ (2 1 5, 3 3 5)"; + QgsFeature f1; + f1.setGeometry( QgsGeometry::fromWkt( wkt1 ) ); + QgsFeature f2; + f2.setGeometry( QgsGeometry::fromWkt( wkt2 ) ); + + QgsFeatureList flist; + flist << f1 << f2; + mLayerLineZ->dataProvider()->addFeatures( flist ); + QCOMPARE( mLayerLineZ->featureCount(), ( long )2 ); + QCOMPARE( mLayerLineZ->getFeature( 1 ).geometry().asWkt(), wkt1 ); + QCOMPARE( mLayerLineZ->getFeature( 2 ).geometry().asWkt(), wkt2 ); + + mLayerPointZ->startEditing(); + QString wkt3 = "PointZ (5 5 5)"; + QgsFeature f3; + f3.setGeometry( QgsGeometry::fromWkt( wkt3 ) ); + QString wkt4 = "PointZ (6 6 6)"; + QgsFeature f4; + f4.setGeometry( QgsGeometry::fromWkt( wkt4 ) ); + + QgsFeatureList flistPoint; + flistPoint << f3 << f4; + mLayerPointZ->dataProvider()->addFeatures( flistPoint ); + QCOMPARE( mLayerPointZ->featureCount(), ( long )2 ); + QCOMPARE( mLayerPointZ->getFeature( 1 ).geometry().asWkt(), wkt3 ); + QCOMPARE( mLayerPointZ->getFeature( 2 ).geometry().asWkt(), wkt4 ); + + mLayerPolygonZ->startEditing(); + QString wkt5 = "PolygonZ ((7 5 4, 3 2 1, 0 1 2, 7 5 4))"; + QgsFeature f5; + f5.setGeometry( QgsGeometry::fromWkt( wkt5 ) ); + QgsFeatureList flistPolygon; + flistPolygon << f5; + mLayerPolygonZ->dataProvider()->addFeatures( flistPolygon ); + QCOMPARE( mLayerPolygonZ->featureCount(), ( long )1 ); + QCOMPARE( mLayerPolygonZ->getFeature( 1 ).geometry().asWkt(), wkt5 ); + + QgsSnappingConfig cfg = mCanvas->snappingUtils()->config(); + cfg.setMode( QgsSnappingConfig::AllLayers ); + cfg.setTolerance( 100 ); + cfg.setType( QgsSnappingConfig::VertexAndSegment ); + cfg.setEnabled( true ); + mCanvas->snappingUtils()->setConfig( cfg ); + + mCanvas->setLayers( QList<QgsMapLayer *>() << mLayerLineZ << mLayerPointZ << mLayerPolygonZ ); + mCanvas->setCurrentLayer( mLayerLineZ ); + + // create the tool + mCaptureTool = new QgsMapToolReshape( mCanvas ); + mCanvas->setMapTool( mCaptureTool ); + + QCOMPARE( mCanvas->mapSettings().outputSize(), QSize( 512, 512 ) ); + QCOMPARE( mCanvas->mapSettings().visibleExtent(), QgsRectangle( 0, 0, 8, 8 ) ); } +//runs after all tests void TestQgsMapToolReshape::cleanupTestCase() { + delete mCaptureTool; + delete mCanvas; QgsApplication::exitQgis(); } -void TestQgsMapToolReshape::init() +void TestQgsMapToolReshape::testReshapeZ() { -} + TestQgsMapToolAdvancedDigitizingUtils utils( mCaptureTool ); + + // test with default Z value = 333 + QgsSettings().setValue( QStringLiteral( "/qgis/digitizing/default_z_value" ), 333 ); + + QSet<QgsFeatureId> oldFids = utils.existingFeatureIds(); + + // snap on a linestringz layer + utils.mouseClick( 1, 2, Qt::LeftButton, Qt::KeyboardModifiers(), true ); + utils.mouseClick( 2, 1, Qt::LeftButton, Qt::KeyboardModifiers(), true ); + utils.mouseClick( 2, 1, Qt::RightButton ); + + QString wkt = "LineStringZ (0 0 0, 1 1 0, 1 2 0, 2 1 5)"; + QCOMPARE( mLayerLineZ->getFeature( 1 ).geometry().asWkt(), wkt ); + + // snap on a pointz layer + utils.mouseClick( 2, 1, Qt::LeftButton, Qt::KeyboardModifiers(), true ); + utils.mouseClick( 5, 5, Qt::LeftButton, Qt::KeyboardModifiers(), true ); + utils.mouseClick( 6, 6, Qt::LeftButton, Qt::KeyboardModifiers(), true ); + utils.mouseClick( 6, 6, Qt::RightButton ); + + QString wkt2 = "LineStringZ (0 0 0, 1 1 0, 1 2 0, 2 1 5, 5 5 5, 6 6 6)"; + QCOMPARE( mLayerLineZ->getFeature( 1 ).geometry().asWkt(), wkt2 ); + + // snap on a polygonz layer + utils.mouseClick( 6, 6, Qt::LeftButton, Qt::KeyboardModifiers(), true ); + utils.mouseClick( 7, 5, Qt::LeftButton, Qt::KeyboardModifiers(), true ); + utils.mouseClick( 3, 2, Qt::LeftButton, Qt::KeyboardModifiers(), true ); + utils.mouseClick( 3, 2, Qt::RightButton ); + + QString wkt3 = "LineStringZ (0 0 0, 1 1 0, 1 2 0, 2 1 5, 5 5 5, 6 6 6, 7 5 4, 3 2 1)"; + QCOMPARE( mLayerLineZ->getFeature( 1 ).geometry().asWkt(), wkt3 ); + mLayerLineZ->undoStack()->undo(); -void TestQgsMapToolReshape::cleanup() -{ } void TestQgsMapToolReshape::reshapeWithBindingLine() @@ -139,5 +269,6 @@ void TestQgsMapToolReshape::reshapeWithBindingLine() vl->rollBack(); } + QGSTEST_MAIN( TestQgsMapToolReshape ) #include "testqgsmaptoolreshape.moc" diff --git a/tests/src/core/CMakeLists.txt b/tests/src/core/CMakeLists.txt index d8855ef7ac..5d4e330d29 100644 --- a/tests/src/core/CMakeLists.txt +++ b/tests/src/core/CMakeLists.txt @@ -16,6 +16,7 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src/core/effects ${CMAKE_SOURCE_DIR}/src/core/layertree ${CMAKE_SOURCE_DIR}/src/core/metadata + ${CMAKE_SOURCE_DIR}/src/core/pal ${CMAKE_SOURCE_DIR}/src/core/processing ${CMAKE_SOURCE_DIR}/src/core/processing/models ${CMAKE_SOURCE_DIR}/src/core/raster diff --git a/tests/src/core/testqgscoordinatereferencesystem.cpp b/tests/src/core/testqgscoordinatereferencesystem.cpp index 491440c536..df081d5855 100644 --- a/tests/src/core/testqgscoordinatereferencesystem.cpp +++ b/tests/src/core/testqgscoordinatereferencesystem.cpp @@ -354,8 +354,10 @@ QString TestQgsCoordinateReferenceSystem::testESRIWkt( int i, QgsCoordinateRefer return QString(); } + void TestQgsCoordinateReferenceSystem::createFromESRIWkt() { +#if PJ_VERSION < 600 // The ESRI fix no longer has any impact on Proj >= 6, GDAL >= 3.0 QString msg; QgsCoordinateReferenceSystem myCrs; const char *configOld = CPLGetConfigOption( "GDAL_FIX_ESRI_WKT", "" ); @@ -442,7 +444,10 @@ void TestQgsCoordinateReferenceSystem::createFromESRIWkt() } // QVERIFY( bOK ); +#endif } + + void TestQgsCoordinateReferenceSystem::createFromSrId() { QgsCoordinateReferenceSystem myCrs; @@ -675,11 +680,20 @@ void TestQgsCoordinateReferenceSystem::toWkt() QString myWkt = myCrs.toWkt(); debugPrint( myCrs ); //Note: this is not the same as GEOWKT as OGR strips off the TOWGS clause... +#if PJ_VERSION < 600 QString myStrippedWkt( "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\"]]" ); +#else + QString myStrippedWkt( "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\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST]" + ",AUTHORITY[\"EPSG\",\"4326\"]]" ); +#endif qDebug() << "wkt: " << myWkt; qDebug() << "stripped: " << myStrippedWkt; QVERIFY( myWkt == myStrippedWkt ); @@ -910,12 +924,12 @@ void TestQgsCoordinateReferenceSystem::geoCcsDescription() crs.createFromString( QStringLiteral( "EPSG:4340" ) ); QVERIFY( crs.isValid() ); QCOMPARE( crs.authid(), QStringLiteral( "EPSG:4340" ) ); - QCOMPARE( crs.description(), QStringLiteral( "Australian Antarctic (geocentric)" ) ); + QVERIFY( crs.description().startsWith( QStringLiteral( "Australian Antarctic" ) ) ); crs.createFromString( QStringLiteral( "EPSG:4348" ) ); QVERIFY( crs.isValid() ); QCOMPARE( crs.authid(), QStringLiteral( "EPSG:4348" ) ); - QCOMPARE( crs.description(), QStringLiteral( "GDA94 (geocentric)" ) ); + QVERIFY( crs.description().startsWith( QStringLiteral( "GDA94" ) ) ); } QGSTEST_MAIN( TestQgsCoordinateReferenceSystem ) #include "testqgscoordinatereferencesystem.moc" diff --git a/tests/src/core/testqgscoordinatetransform.cpp b/tests/src/core/testqgscoordinatetransform.cpp index 093bf0f0f9..3a14aa27d8 100644 --- a/tests/src/core/testqgscoordinatetransform.cpp +++ b/tests/src/core/testqgscoordinatetransform.cpp @@ -225,7 +225,7 @@ void TestQgsCoordinateTransform::scaleFactor() QgsCoordinateTransform ct( sourceCrs, destCrs, QgsProject::instance() ); // qDebug() << QString::number(ct.scaleFactor( rect ), 'g', 17) ; - QVERIFY( qgsDoubleNear( ct.scaleFactor( rect ), factor ) ); + QGSCOMPARENEAR( ct.scaleFactor( rect ), factor, 0.000001 ); } void TestQgsCoordinateTransform::scaleFactor_data() @@ -241,10 +241,10 @@ void TestQgsCoordinateTransform::scaleFactor_data() << QgsRectangle( 2550000, 1200000, 2550100, 1200100 ) << 1.1223316038381985e-5; QTest::newRow( "Same map units" ) - << QgsCoordinateReferenceSystem::fromEpsgId( 2056 ) - << QgsCoordinateReferenceSystem::fromEpsgId( 21781 ) - << QgsRectangle( 2550000, 1200000, 2550100, 1200100 ) - << 1.0000000000248837; + << QgsCoordinateReferenceSystem::fromEpsgId( 3111 ) + << QgsCoordinateReferenceSystem::fromEpsgId( 28355 ) + << QgsRectangle( 2560536.7, 2331787.5, 2653161.1, 2427370.4 ) + << 0.999632; QTest::newRow( "Same CRS" ) << QgsCoordinateReferenceSystem::fromEpsgId( 2056 ) << QgsCoordinateReferenceSystem::fromEpsgId( 2056 ) diff --git a/tests/src/core/testqgsdistancearea.cpp b/tests/src/core/testqgsdistancearea.cpp index 0237a940d7..8f5df99492 100644 --- a/tests/src/core/testqgsdistancearea.cpp +++ b/tests/src/core/testqgsdistancearea.cpp @@ -356,7 +356,7 @@ void TestQgsDistanceArea::measureAreaAndUnits() // test converting the resultant area area = da.convertAreaMeasurement( area, QgsUnitTypes::AreaSquareYards ); QgsDebugMsg( QStringLiteral( "measured %1 in sq yrds" ).arg( area ) ); - QGSCOMPARENEAR( area, 222237.185213, 0.3 ); + QGSCOMPARENEAR( area, 222237.185213, 1.0 ); } void TestQgsDistanceArea::emptyPolygon() diff --git a/tests/src/core/testqgsdxfexport.cpp b/tests/src/core/testqgsdxfexport.cpp index b4f6b5c5a7..921931091b 100644 --- a/tests/src/core/testqgsdxfexport.cpp +++ b/tests/src/core/testqgsdxfexport.cpp @@ -44,6 +44,7 @@ class TestQgsDxfExport : public QObject void testPoints(); void testLines(); void testPolygons(); + void testMultiSurface(); void testMtext(); void testMTextNoSymbology(); //tests if label export works if layer has vector renderer type 'no symbols' void testMTextEscapeSpaces(); @@ -216,6 +217,42 @@ void TestQgsDxfExport::testPolygons() QCOMPARE( result->wkbType(), QgsWkbTypes::LineString ); } +void TestQgsDxfExport::testMultiSurface() +{ + QgsDxfExport d; + std::unique_ptr< QgsVectorLayer > vl = qgis::make_unique< QgsVectorLayer >( QStringLiteral( "MultiSurface" ), QString(), QStringLiteral( "memory" ) ); + QgsGeometry g = QgsGeometry::fromWkt( "MultiSurface (Polygon ((0 0, 0 1, 1 1, 0 0)))" ); + QgsFeature f; + f.setGeometry( g ); + vl->dataProvider()->addFeatures( QgsFeatureList() << f ); + d.addLayers( QList< QgsDxfExport::DxfLayer >() << QgsDxfExport::DxfLayer( vl.get() ) ); + + QgsMapSettings mapSettings; + QSize size( 640, 480 ); + mapSettings.setOutputSize( size ); + mapSettings.setExtent( vl->extent() ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl.get() ); + mapSettings.setOutputDpi( 96 ); + mapSettings.setDestinationCrs( vl->crs() ); + + d.setMapSettings( mapSettings ); + d.setSymbologyScale( 1000 ); + + QString file = getTempFileName( "multisurface_dxf" ); + QFile dxfFile( file ); + QCOMPARE( d.writeToFile( &dxfFile, QStringLiteral( "CP1252" ) ), 0 ); + dxfFile.close(); + + // reload and compare + std::unique_ptr< QgsVectorLayer > result = qgis::make_unique< QgsVectorLayer >( file, "dxf" ); + QVERIFY( result->isValid() ); + QCOMPARE( result->featureCount(), 1L ); + QCOMPARE( result->wkbType(), QgsWkbTypes::LineString ); + QgsFeature f2; + result->getFeatures().nextFeature( f2 ); + QCOMPARE( f2.geometry().asWkt(), QStringLiteral( "LineString (0 0, 0 1, 1 1, 0 0)" ) ); +} + void TestQgsDxfExport::testMtext() { QVERIFY( testMtext( mPointLayer, QStringLiteral( "mtext_dxf" ) ) ); diff --git a/tests/src/core/testqgsgeometry.cpp b/tests/src/core/testqgsgeometry.cpp index 9191027242..0690fd5349 100644 --- a/tests/src/core/testqgsgeometry.cpp +++ b/tests/src/core/testqgsgeometry.cpp @@ -13702,66 +13702,64 @@ void TestQgsGeometry::multiSurface() //as JSON QgsMultiSurface exportC; - ring.setPoints( QgsPointSequence() << QgsPoint( QgsWkbTypes::Point, 7, 17 ) << QgsPoint( QgsWkbTypes::Point, 3, 13 ) << QgsPoint( QgsWkbTypes::Point, 7, 17 ) ) ; + QgsLineString lineRing; + lineRing.setPoints( QgsPointSequence() << QgsPoint( QgsWkbTypes::Point, 7, 17 ) << QgsPoint( QgsWkbTypes::Point, 7, 13 ) << QgsPoint( QgsWkbTypes::Point, 3, 13 ) << QgsPoint( QgsWkbTypes::Point, 7, 17 ) ) ; part.clear(); - part.setExteriorRing( ring.clone() ); + part.setExteriorRing( lineRing.clone() ); exportC.addGeometry( part.clone() ); - ring.setPoints( QgsPointSequence() << QgsPoint( QgsWkbTypes::Point, 27, 37 ) << QgsPoint( QgsWkbTypes::Point, 43, 43 ) << QgsPoint( QgsWkbTypes::Point, 27, 37 ) ) ; + lineRing.setPoints( QgsPointSequence() << QgsPoint( QgsWkbTypes::Point, 27, 37 ) << QgsPoint( QgsWkbTypes::Point, 27, 43 ) << QgsPoint( QgsWkbTypes::Point, 43, 43 ) << QgsPoint( QgsWkbTypes::Point, 27, 37 ) ) ; part.clear(); - part.setExteriorRing( ring.clone() ); + part.setExteriorRing( lineRing.clone() ); exportC.addGeometry( part.clone() ); // GML document for compare QDomDocument doc( "gml" ); // as GML2 - QString expectedSimpleGML2( QStringLiteral( "<MultiPolygon xmlns=\"gml\"><polygonMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><outerBoundaryIs xmlns=\"gml\"><LinearRing xmlns=\"gml\"><coordinates xmlns=\"gml\" cs=\",\" ts=\" \">7,17 7,17</coordinates></LinearRing></outerBoundaryIs></Polygon></polygonMember><polygonMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><outerBoundaryIs xmlns=\"gml\"><LinearRing xmlns=\"gml\"><coordinates xmlns=\"gml\" cs=\",\" ts=\" \">27,37 27,37</coordinates></LinearRing></outerBoundaryIs></Polygon></polygonMember></MultiPolygon>" ) ); + QString expectedSimpleGML2( QStringLiteral( "<MultiPolygon xmlns=\"gml\"><polygonMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><outerBoundaryIs xmlns=\"gml\"><LinearRing xmlns=\"gml\"><coordinates xmlns=\"gml\" cs=\",\" ts=\" \">7,17 7,13 3,13 7,17</coordinates></LinearRing></outerBoundaryIs></Polygon></polygonMember><polygonMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><outerBoundaryIs xmlns=\"gml\"><LinearRing xmlns=\"gml\"><coordinates xmlns=\"gml\" cs=\",\" ts=\" \">27,37 27,43 43,43 27,37</coordinates></LinearRing></outerBoundaryIs></Polygon></polygonMember></MultiPolygon>" ) ); QString res = elemToString( exportC.asGml2( doc, 1 ) ); QGSCOMPAREGML( res, expectedSimpleGML2 ); QString expectedGML2empty( QStringLiteral( "<MultiPolygon xmlns=\"gml\"/>" ) ); QGSCOMPAREGML( elemToString( QgsMultiSurface().asGml2( doc ) ), expectedGML2empty ); //as GML3 - QString expectedSimpleGML3( QStringLiteral( "<MultiSurface xmlns=\"gml\"><surfaceMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><exterior xmlns=\"gml\"><Curve xmlns=\"gml\"><segments xmlns=\"gml\"><ArcString xmlns=\"gml\"><posList xmlns=\"gml\" srsDimension=\"2\">7 17 3 13 7 17</posList></ArcString></segments></Curve></exterior></Polygon></surfaceMember><surfaceMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><exterior xmlns=\"gml\"><Curve xmlns=\"gml\"><segments xmlns=\"gml\"><ArcString xmlns=\"gml\"><posList xmlns=\"gml\" srsDimension=\"2\">27 37 43 43 27 37</posList></ArcString></segments></Curve></exterior></Polygon></surfaceMember></MultiSurface>" ) ); + + QString expectedSimpleGML3( QStringLiteral( "<MultiSurface xmlns=\"gml\"><surfaceMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><exterior xmlns=\"gml\"><LinearRing xmlns=\"gml\"><posList xmlns=\"gml\" srsDimension=\"2\">7 17 7 13 3 13 7 17</posList></LinearRing></exterior></Polygon></surfaceMember><surfaceMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><exterior xmlns=\"gml\"><LinearRing xmlns=\"gml\"><posList xmlns=\"gml\" srsDimension=\"2\">27 37 27 43 43 43 27 37</posList></LinearRing></exterior></Polygon></surfaceMember></MultiSurface>" ) ); res = elemToString( exportC.asGml3( doc ) ); QCOMPARE( res, expectedSimpleGML3 ); QString expectedGML3empty( QStringLiteral( "<MultiSurface xmlns=\"gml\"/>" ) ); QGSCOMPAREGML( elemToString( QgsMultiSurface().asGml3( doc ) ), expectedGML3empty ); // as JSON - QString expectedSimpleJson( "{\"type\": \"MultiPolygon\", \"coordinates\": [[[ [7, 17], [7, 17]]], [[ [27, 37], [27, 37]]]] }" ); + QString expectedSimpleJson( "{\"type\": \"MultiPolygon\", \"coordinates\": [[[ [7, 17], [7, 13], [3, 13], [7, 17]]], [[ [27, 37], [27, 43], [43, 43], [27, 37]]]] }" ); res = exportC.asJson( 1 ); QCOMPARE( res, expectedSimpleJson ); - ring.setPoints( QgsPointSequence() << QgsPoint( QgsWkbTypes::Point, 17, 27 ) << QgsPoint( QgsWkbTypes::Point, 18, 28 ) << QgsPoint( QgsWkbTypes::Point, 17, 27 ) ) ; - part.addInteriorRing( ring.clone() ); + lineRing.setPoints( QgsPointSequence() << QgsPoint( QgsWkbTypes::Point, 17, 27 ) << QgsPoint( QgsWkbTypes::Point, 17, 28 ) << QgsPoint( QgsWkbTypes::Point, 18, 28 ) << QgsPoint( QgsWkbTypes::Point, 17, 27 ) ) ; + part.addInteriorRing( lineRing.clone() ); exportC.addGeometry( part.clone() ); - QString expectedJsonWithRings( "{\"type\": \"MultiPolygon\", \"coordinates\": [[[ [7, 17], [7, 17]]], [[ [27, 37], [27, 37]]], [[ [27, 37], [27, 37]], [ [17, 27], [17, 27]]]] }" ); + QString expectedJsonWithRings( "{\"type\": \"MultiPolygon\", \"coordinates\": [[[ [7, 17], [7, 13], [3, 13], [7, 17]]], [[ [27, 37], [27, 43], [43, 43], [27, 37]]], [[ [27, 37], [27, 43], [43, 43], [27, 37]], [ [17, 27], [17, 28], [18, 28], [17, 27]]]] }" ); res = exportC.asJson( 1 ); QCOMPARE( res, expectedJsonWithRings ); QgsMultiSurface exportFloat; - ring.setPoints( QgsPointSequence() << QgsPoint( QgsWkbTypes::Point, 7 / 3.0, 17 / 3.0 ) << QgsPoint( QgsWkbTypes::Point, 3 / 5.0, 13 / 3.0 ) << QgsPoint( QgsWkbTypes::Point, 7 / 3.0, 17 / 3.0 ) ) ; + lineRing.setPoints( QgsPointSequence() << QgsPoint( QgsWkbTypes::Point, 0.1234, 0.1234 ) << QgsPoint( QgsWkbTypes::Point, 0.1234, 1.2344 ) << QgsPoint( QgsWkbTypes::Point, 1.2344, 1.2344 ) << QgsPoint( QgsWkbTypes::Point, 0.1234, 0.1234 ) ) ; part.clear(); - part.setExteriorRing( ring.clone() ); - exportFloat.addGeometry( part.clone() ); - ring.setPoints( QgsPointSequence() << QgsPoint( QgsWkbTypes::Point, 27 / 3.0, 37 / 9.0 ) << QgsPoint( QgsWkbTypes::Point, 43 / 41.0, 43 / 42.0 ) << QgsPoint( QgsWkbTypes::Point, 27 / 3.0, 37 / 9.0 ) ) ; - part.clear(); - part.setExteriorRing( ring.clone() ); + part.setExteriorRing( lineRing.clone() ); exportFloat.addGeometry( part.clone() ); - QString expectedJsonPrec3( QStringLiteral( "{\"type\": \"MultiPolygon\", \"coordinates\": [[[ [2.333, 5.667], [2.333, 5.667]]], [[ [9, 4.111], [9, 4.111]]]] }" ) ); + QString expectedJsonPrec3( QStringLiteral( "{\"type\": \"MultiPolygon\", \"coordinates\": [[[ [0.123, 0.123], [0.123, 1.234], [1.234, 1.234], [0.123, 0.123]]]] }" ) ); res = exportFloat.asJson( 3 ); QCOMPARE( res, expectedJsonPrec3 ); // as GML2 - QString expectedGML2prec3( QStringLiteral( "<MultiPolygon xmlns=\"gml\"><polygonMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><outerBoundaryIs xmlns=\"gml\"><LinearRing xmlns=\"gml\"><coordinates xmlns=\"gml\" cs=\",\" ts=\" \">2.333,5.667 2.333,5.667</coordinates></LinearRing></outerBoundaryIs></Polygon></polygonMember><polygonMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><outerBoundaryIs xmlns=\"gml\"><LinearRing xmlns=\"gml\"><coordinates xmlns=\"gml\" cs=\",\" ts=\" \">9,4.111 9,4.111</coordinates></LinearRing></outerBoundaryIs></Polygon></polygonMember></MultiPolygon>" ) ); + QString expectedGML2prec3( QStringLiteral( "<MultiPolygon xmlns=\"gml\"><polygonMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><outerBoundaryIs xmlns=\"gml\"><LinearRing xmlns=\"gml\"><coordinates xmlns=\"gml\" cs=\",\" ts=\" \">0.123,0.123 0.123,1.234 1.234,1.234 0.123,0.123</coordinates></LinearRing></outerBoundaryIs></Polygon></polygonMember></MultiPolygon>" ) ); res = elemToString( exportFloat.asGml2( doc, 3 ) ); QGSCOMPAREGML( res, expectedGML2prec3 ); //as GML3 - QString expectedGML3prec3( QStringLiteral( "<MultiSurface xmlns=\"gml\"><surfaceMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><exterior xmlns=\"gml\"><Curve xmlns=\"gml\"><segments xmlns=\"gml\"><ArcString xmlns=\"gml\"><posList xmlns=\"gml\" srsDimension=\"2\">2.333 5.667 0.6 4.333 2.333 5.667</posList></ArcString></segments></Curve></exterior></Polygon></surfaceMember><surfaceMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><exterior xmlns=\"gml\"><Curve xmlns=\"gml\"><segments xmlns=\"gml\"><ArcString xmlns=\"gml\"><posList xmlns=\"gml\" srsDimension=\"2\">9 4.111 1.049 1.024 9 4.111</posList></ArcString></segments></Curve></exterior></Polygon></surfaceMember></MultiSurface>" ) ); + QString expectedGML3prec3( QStringLiteral( "<MultiSurface xmlns=\"gml\"><surfaceMember xmlns=\"gml\"><Polygon xmlns=\"gml\"><exterior xmlns=\"gml\"><LinearRing xmlns=\"gml\"><posList xmlns=\"gml\" srsDimension=\"2\">0.123 0.123 0.123 1.234 1.234 1.234 0.123 0.123</posList></LinearRing></exterior></Polygon></surfaceMember></MultiSurface>" ) ); res = elemToString( exportFloat.asGml3( doc, 3 ) ); QCOMPARE( res, expectedGML3prec3 ); diff --git a/tests/src/core/testqgsgeometryutils.cpp b/tests/src/core/testqgsgeometryutils.cpp index 9890a487da..b634b7df1c 100644 --- a/tests/src/core/testqgsgeometryutils.cpp +++ b/tests/src/core/testqgsgeometryutils.cpp @@ -13,6 +13,8 @@ * * ***************************************************************************/ +#include <math.h> + #include "qgstest.h" #include <QObject> #include "qgsgeometryutils.h" @@ -70,6 +72,9 @@ class TestQgsGeometryUtils: public QObject void testInterpolatePointOnLineByValue(); void testPointOnLineWithDistance(); void interpolatePointOnArc(); + void testSegmentizeArcHalfCircle(); + void testSegmentizeArcHalfCircleOtherDirection(); + void testSegmentizeArcFullCircle(); }; @@ -1231,5 +1236,74 @@ void TestQgsGeometryUtils::interpolatePointOnArc() QGSCOMPARENEAR( p.y(), -2.0, 0.00001 ); } +void TestQgsGeometryUtils::testSegmentizeArcHalfCircle() +{ + QgsPointSequence points; + const double xoff = 1; + const double yoff = 100; + QgsGeometryUtils::segmentizeArc( QgsPoint( xoff + 0, yoff + 0 ), + QgsPoint( xoff + 1, yoff + 1 ), + QgsPoint( xoff + 2, yoff + 0 ), + points, 0.1, + QgsAbstractGeometry::MaximumDifference, false, false ); + QCOMPARE( points.size(), 5 ); + QGSCOMPARENEAR( points[0].x(), xoff + 0.0, 0.00001 ); + QGSCOMPARENEAR( points[0].y(), yoff + 0.0, 0.00001 ); + QGSCOMPARENEAR( points[1].x(), xoff + 1 - sqrt( 2 ) / 2, 0.00001 ); + QGSCOMPARENEAR( points[1].y(), yoff + sqrt( 2 ) / 2, 0.00001 ); + QGSCOMPARENEAR( points[2].x(), xoff + 1.0, 0.00001 ); + QGSCOMPARENEAR( points[2].y(), yoff + 1.0, 0.00001 ); + QGSCOMPARENEAR( points[3].x(), xoff + 1 + sqrt( 2 ) / 2, 0.00001 ); + QGSCOMPARENEAR( points[3].y(), yoff + sqrt( 2 ) / 2, 0.00001 ); + QGSCOMPARENEAR( points[4].x(), xoff + 2.0, 0.00001 ); + QGSCOMPARENEAR( points[4].y(), yoff + 0.0, 0.00001 ); +} + +void TestQgsGeometryUtils::testSegmentizeArcHalfCircleOtherDirection() +{ + QgsPointSequence points; + const double xoff = 1; + const double yoff = 100; + QgsGeometryUtils::segmentizeArc( QgsPoint( xoff + 0, yoff + 0 ), + QgsPoint( xoff + 1, yoff - 1 ), + QgsPoint( xoff + 2, yoff + 0 ), + points, 0.1, + QgsAbstractGeometry::MaximumDifference, false, false ); + QCOMPARE( points.size(), 5 ); + QGSCOMPARENEAR( points[0].x(), xoff + 0.0, 0.00001 ); + QGSCOMPARENEAR( points[0].y(), yoff + 0.0, 0.00001 ); + QGSCOMPARENEAR( points[1].x(), xoff + 1 - sqrt( 2 ) / 2, 0.00001 ); + QGSCOMPARENEAR( points[1].y(), yoff + -sqrt( 2 ) / 2, 0.00001 ); + QGSCOMPARENEAR( points[2].x(), xoff + 1.0, 0.00001 ); + QGSCOMPARENEAR( points[2].y(), yoff + -1.0, 0.00001 ); + QGSCOMPARENEAR( points[3].x(), xoff + 1 + sqrt( 2 ) / 2, 0.00001 ); + QGSCOMPARENEAR( points[3].y(), yoff + -sqrt( 2 ) / 2, 0.00001 ); + QGSCOMPARENEAR( points[4].x(), xoff + 2.0, 0.00001 ); + QGSCOMPARENEAR( points[4].y(), yoff + 0.0, 0.00001 ); +} + +void TestQgsGeometryUtils::testSegmentizeArcFullCircle() +{ + QgsPointSequence points; + const double xoff = 1; + const double yoff = 100; + QgsGeometryUtils::segmentizeArc( QgsPoint( xoff + 0, yoff + 0 ), + QgsPoint( xoff + 2, yoff + 0 ), + QgsPoint( xoff + 0, yoff + 0 ), + points, 0.4, + QgsAbstractGeometry::MaximumDifference, false, false ); + QCOMPARE( points.size(), 5 ); + QGSCOMPARENEAR( points[0].x(), xoff + 0.0, 0.00001 ); + QGSCOMPARENEAR( points[0].y(), yoff + 0.0, 0.00001 ); + QGSCOMPARENEAR( points[1].x(), xoff + 1.0, 0.00001 ); + QGSCOMPARENEAR( points[1].y(), yoff + -1.0, 0.00001 ); + QGSCOMPARENEAR( points[2].x(), xoff + 2.0, 0.00001 ); + QGSCOMPARENEAR( points[2].y(), yoff + 0.0, 0.00001 ); + QGSCOMPARENEAR( points[3].x(), xoff + 1.0, 0.00001 ); + QGSCOMPARENEAR( points[3].y(), yoff + 1.0, 0.00001 ); + QGSCOMPARENEAR( points[4].x(), xoff + 0.0, 0.00001 ); + QGSCOMPARENEAR( points[4].y(), yoff + 0.0, 0.00001 ); +} + QGSTEST_MAIN( TestQgsGeometryUtils ) #include "testqgsgeometryutils.moc" diff --git a/tests/src/core/testqgsinvertedpolygonrenderer.cpp b/tests/src/core/testqgsinvertedpolygonrenderer.cpp index 93362b0c42..ccf3f97179 100644 --- a/tests/src/core/testqgsinvertedpolygonrenderer.cpp +++ b/tests/src/core/testqgsinvertedpolygonrenderer.cpp @@ -54,9 +54,8 @@ class TestQgsInvertedPolygon : public QObject void checkSymbolItem(); void preprocess(); void projectionTest(); -#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_MAJOR >= 2 void curvedPolygons(); -#endif + void rotationTest(); private: bool mTestHasError = false ; @@ -153,26 +152,33 @@ void TestQgsInvertedPolygon::projectionTest() QVERIFY( imageCheck( "inverted_polys_projection", &extent ) ); QVERIFY( setQml( mpPolysLayer, "inverted_polys_preprocess.qml" ) ); QVERIFY( imageCheck( "inverted_polys_projection2", &extent ) ); + mMapSettings.setDestinationCrs( mpPolysLayer->crs() ); } -#if defined(GDAL_VERSION_NUM) && GDAL_VERSION_MAJOR >= 2 -// This test relies on GDAL support of curved polygons void TestQgsInvertedPolygon::curvedPolygons() { QString myCurvedPolysFileName = mTestDataDir + "curved_polys.gpkg"; QFileInfo myCurvedPolyFileInfo( myCurvedPolysFileName ); QgsVectorLayer *curvedLayer = new QgsVectorLayer( myCurvedPolyFileInfo.filePath() + "|layername=polys", myCurvedPolyFileInfo.completeBaseName(), "ogr" ); - curvedLayer->setSimplifyMethod( simplifyMethod ); QgsProject::instance()->addMapLayers( QList<QgsMapLayer *>() << curvedLayer ); mReport += "<h2>Inverted polygon renderer, curved polygons test</h2>\n"; - mMapSettings.setLayers( QStringList() << curvedLayer->id() ); - QVERIFY( setQml( mpCurvedPolysLayer, "inverted_polys_single.qml" ) ); + mMapSettings.setLayers( QList< QgsMapLayer * >() << curvedLayer ); + QVERIFY( setQml( curvedLayer, "inverted_polys_single.qml" ) ); QVERIFY( imageCheck( "inverted_polys_curved" ) ); - mMapSettings.setLayers( QStringList() << curvedLayer->id() ); + mMapSettings.setLayers( QList< QgsMapLayer * >() << mpPolysLayer ); } -#endif + +void TestQgsInvertedPolygon::rotationTest() +{ + mReport += QLatin1String( "<h2>Inverted polygon renderer, rotation test</h2>\n" ); + mMapSettings.setRotation( 45 ); + QVERIFY( setQml( mpPolysLayer, "inverted_polys_single.qml" ) ); + QVERIFY( imageCheck( "inverted_polys_rotation" ) ); + mMapSettings.setRotation( 0 ); +} + // // Private helper functions not called directly by CTest diff --git a/tests/src/core/testqgslabelingengine.cpp b/tests/src/core/testqgslabelingengine.cpp index 7a587c92f9..519a2ef423 100644 --- a/tests/src/core/testqgslabelingengine.cpp +++ b/tests/src/core/testqgslabelingengine.cpp @@ -46,12 +46,22 @@ class TestQgsLabelingEngine : public QObject void testRuleBased(); void zOrder(); //test that labels are stacked correctly void testEncodeDecodePositionOrder(); + void testEncodeDecodeLinePlacement(); void testSubstitutions(); void testCapitalization(); void testParticipatingLayers(); void testRegisterFeatureUnprojectible(); void testRotateHidePartial(); void testParallelLabelSmallFeature(); + void testAdjacentParts(); + void testTouchingParts(); + void testMergingLinesWithForks(); + void testCurvedLabelsWithTinySegments(); + void testCurvedLabelCorrectLinePlacement(); + void testCurvedLabelNegativeDistance(); + void testParallelPlacementPreferAbove(); + void testLabelRotationWithReprojection(); + void labelingResults(); private: QgsVectorLayer *vl = nullptr; @@ -472,6 +482,21 @@ void TestQgsLabelingEngine::testEncodeDecodePositionOrder() QCOMPARE( decoded, expected ); } +void TestQgsLabelingEngine::testEncodeDecodeLinePlacement() +{ + QString encoded = QgsLabelingUtils::encodeLinePlacementFlags( pal::FLAG_ABOVE_LINE | pal::FLAG_ON_LINE ); + QVERIFY( !encoded.isEmpty() ); + QCOMPARE( QgsLabelingUtils::decodeLinePlacementFlags( encoded ), pal::FLAG_ABOVE_LINE | pal::FLAG_ON_LINE ); + encoded = QgsLabelingUtils::encodeLinePlacementFlags( pal::FLAG_ON_LINE | pal::FLAG_MAP_ORIENTATION ); + QVERIFY( !encoded.isEmpty() ); + QCOMPARE( QgsLabelingUtils::decodeLinePlacementFlags( encoded ), pal::FLAG_ON_LINE | pal::FLAG_MAP_ORIENTATION ); + + //test decoding with a messy string + QCOMPARE( QgsLabelingUtils::decodeLinePlacementFlags( QStringLiteral( ",ol,," ) ), pal::FLAG_ON_LINE | pal::FLAG_MAP_ORIENTATION ); + QCOMPARE( QgsLabelingUtils::decodeLinePlacementFlags( QStringLiteral( ",ol,BL, al" ) ), pal::FLAG_ON_LINE | pal::FLAG_ABOVE_LINE | pal::FLAG_BELOW_LINE | pal::FLAG_MAP_ORIENTATION ); + QCOMPARE( QgsLabelingUtils::decodeLinePlacementFlags( QStringLiteral( ",ol,BL, LO, al" ) ), pal::FLAG_ON_LINE | pal::FLAG_ABOVE_LINE | pal::FLAG_BELOW_LINE ); +} + void TestQgsLabelingEngine::testSubstitutions() { QgsPalLayerSettings settings; @@ -805,5 +830,617 @@ void TestQgsLabelingEngine::testParallelLabelSmallFeature() // QVERIFY( imageCheck( "label_rotate_hide_partial", img, 20 ) ); } +void TestQgsLabelingEngine::testAdjacentParts() +{ + // test polygon layer with multipart feature with adjacent parts + QgsPalLayerSettings settings; + setDefaultLabelParams( settings ); + + QgsTextFormat format = settings.format(); + format.setSize( 20 ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + settings.fieldName = QStringLiteral( "'X'" ); + settings.isExpression = true; + settings.placement = QgsPalLayerSettings::OverPoint; + settings.labelPerPart = true; + + std::unique_ptr< QgsVectorLayer> vl2( new QgsVectorLayer( QStringLiteral( "Polygon?crs=epsg:3946&field=id:integer" ), QStringLiteral( "vl" ), QStringLiteral( "memory" ) ) ); + vl2->setRenderer( new QgsNullSymbolRenderer() ); + + QgsFeature f; + f.setAttributes( QgsAttributes() << 1 ); + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "MultiPolygon (((1967901.6872910603415221 5162590.11975561361759901, 1967905.31832842249423265 5162591.80023225769400597, 1967907.63076798897236586 5162586.43503414187580347, 1967903.84105980419553816 5162584.57283254805952311, 1967901.6872910603415221 5162590.11975561361759901)),((1967901.64785283687524498 5162598.3270823871716857, 1967904.82891705213114619 5162601.06552503909915686, 1967910.82140435534529388 5162587.99774718284606934, 1967907.63076798897236586 5162586.43503414187580347, 1967905.31832842249423265 5162591.80023225769400597, 1967901.6872910603415221 5162590.11975561361759901, 1967899.27472299290820956 5162596.28855143301188946, 1967901.64785283687524498 5162598.3270823871716857)),((1967904.82891705213114619 5162601.06552503909915686, 1967901.64785283687524498 5162598.3270823871716857, 1967884.28552994946949184 5162626.09785370342433453, 1967895.81538487318903208 5162633.84423183929175138, 1967901.64141261484473944 5162624.63927845563739538, 1967906.47453573765233159 5162616.87410452589392662, 1967913.7844126324634999 5162604.47178338281810284, 1967909.58057221467606723 5162602.89022256527096033, 1967904.82891705213114619 5162601.06552503909915686)))" ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl2->setLabelsEnabled( true ); + + // make a fake render context + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + mapSettings.setDestinationCrs( vl2->crs() ); + + mapSettings.setOutputSize( size ); + mapSettings.setExtent( f.geometry().boundingBox() ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl2.get() ); + mapSettings.setOutputDpi( 96 ); + + QgsLabelingEngineSettings engineSettings = mapSettings.labelingEngineSettings(); + engineSettings.setFlag( QgsLabelingEngineSettings::UsePartialCandidates, false ); + engineSettings.setFlag( QgsLabelingEngineSettings::DrawLabelRectOnly, true ); + //engineSettings.setFlag( QgsLabelingEngineSettings::DrawCandidates, true ); + mapSettings.setLabelingEngineSettings( engineSettings ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + QImage img = job.renderedImage(); + QVERIFY( imageCheck( QStringLiteral( "label_adjacent_parts" ), img, 20 ) ); +} + +void TestQgsLabelingEngine::testTouchingParts() +{ + // test line layer with multipart feature with touching (but unmerged) parts + QgsPalLayerSettings settings; + setDefaultLabelParams( settings ); + + QgsTextFormat format = settings.format(); + format.setSize( 20 ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + settings.fieldName = QStringLiteral( "'XXXXXXXXXXXXXXXXXXXXXXXXXX'" ); + settings.isExpression = true; + settings.placement = QgsPalLayerSettings::Curved; + settings.labelPerPart = false; + settings.mergeLines = true; + + // if treated individually, none of these parts are long enough for the label to fit -- but the label should be rendered if the mergeLines setting is true, + // because the parts should be merged into a single linestring + std::unique_ptr< QgsVectorLayer> vl2( new QgsVectorLayer( QStringLiteral( "MultiLineString?crs=epsg:3946&field=id:integer" ), QStringLiteral( "vl" ), QStringLiteral( "memory" ) ) ); + vl2->setRenderer( new QgsNullSymbolRenderer() ); + + QgsFeature f; + f.setAttributes( QgsAttributes() << 1 ); + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "MultiLineString ((190000 5000010, 190050 5000000), (190050 5000000, 190100 5000000), (190200 5000000, 190150 5000000), (190150 5000000, 190100 5000000))" ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl2->setLabelsEnabled( true ); + + // make a fake render context + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + mapSettings.setDestinationCrs( vl2->crs() ); + + mapSettings.setOutputSize( size ); + mapSettings.setExtent( f.geometry().boundingBox() ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl2.get() ); + mapSettings.setOutputDpi( 96 ); + + QgsLabelingEngineSettings engineSettings = mapSettings.labelingEngineSettings(); + engineSettings.setFlag( QgsLabelingEngineSettings::UsePartialCandidates, false ); + engineSettings.setFlag( QgsLabelingEngineSettings::DrawLabelRectOnly, true ); + //engineSettings.setFlag( QgsLabelingEngineSettings::DrawCandidates, true ); + mapSettings.setLabelingEngineSettings( engineSettings ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + QImage img = job.renderedImage(); + QVERIFY( imageCheck( QStringLiteral( "label_multipart_touching_lines" ), img, 20 ) ); +} + +void TestQgsLabelingEngine::testMergingLinesWithForks() +{ + // test that the "merge connected features" setting works well with line networks + // containing forks and small side branches + QgsPalLayerSettings settings; + setDefaultLabelParams( settings ); + + QgsTextFormat format = settings.format(); + format.setSize( 20 ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + settings.fieldName = QStringLiteral( "'XXXXXXXXXXXXXXXXXXXXXXXXXX'" ); + settings.isExpression = true; + settings.placement = QgsPalLayerSettings::Curved; + settings.labelPerPart = false; + settings.mergeLines = true; + + // if treated individually, none of these parts are long enough for the label to fit -- but the label should be rendered if the mergeLines setting is true + std::unique_ptr< QgsVectorLayer> vl2( new QgsVectorLayer( QStringLiteral( "LineString?crs=epsg:3946&field=id:integer" ), QStringLiteral( "vl" ), QStringLiteral( "memory" ) ) ); + vl2->setRenderer( new QgsNullSymbolRenderer() ); + + QgsFeature f; + f.setAttributes( QgsAttributes() << 1 ); + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "LineString (190000 5000010, 190100 5000000)" ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + // side branch + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "LineString (190100 5000000, 190100 5000010)" ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + // side branch + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "LineString (190100 5000000, 190100 4999995)" ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + // main road continues, note that we deliberately split this up into non-consecutive sections, just for extra checks! + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "LineString (190120 5000000, 190200 5000000)" ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "LineString (190120 5000000, 190100 5000000)" ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl2->setLabelsEnabled( true ); + + // make a fake render context + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + mapSettings.setDestinationCrs( vl2->crs() ); + + mapSettings.setOutputSize( size ); + mapSettings.setExtent( vl2->extent() ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl2.get() ); + mapSettings.setOutputDpi( 96 ); + + QgsLabelingEngineSettings engineSettings = mapSettings.labelingEngineSettings(); + engineSettings.setFlag( QgsLabelingEngineSettings::UsePartialCandidates, false ); + engineSettings.setFlag( QgsLabelingEngineSettings::DrawLabelRectOnly, true ); + //engineSettings.setFlag( QgsLabelingEngineSettings::DrawCandidates, true ); + mapSettings.setLabelingEngineSettings( engineSettings ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + QImage img = job.renderedImage(); + QVERIFY( imageCheck( QStringLiteral( "label_multipart_touching_branches" ), img, 20 ) ); +} + +void TestQgsLabelingEngine::testCurvedLabelsWithTinySegments() +{ + // test drawing curved labels when input linestring has many small segments + QgsPalLayerSettings settings; + setDefaultLabelParams( settings ); + + QgsTextFormat format = settings.format(); + format.setSize( 20 ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + settings.fieldName = QStringLiteral( "'XXXXXXXXXXXXXXXXXXXXXXXXXX'" ); + settings.isExpression = true; + settings.placement = QgsPalLayerSettings::Curved; + + std::unique_ptr< QgsVectorLayer> vl2( new QgsVectorLayer( QStringLiteral( "LineString?crs=epsg:3946&field=id:integer" ), QStringLiteral( "vl" ), QStringLiteral( "memory" ) ) ); + vl2->setRenderer( new QgsNullSymbolRenderer() ); + + QgsFeature f; + f.setAttributes( QgsAttributes() << 1 ); + // our geometry starts with many small segments, followed by long ones + QgsGeometry g( QgsGeometry::fromWkt( QStringLiteral( "LineString (190000 5000010, 190100 5000000)" ) ) ); + g = g.densifyByCount( 100 ); + qgsgeometry_cast< QgsLineString * >( g.get() )->addVertex( QgsPoint( 190200, 5000000 ) ); + f.setGeometry( g ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl2->setLabelsEnabled( true ); + + // make a fake render context + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + mapSettings.setDestinationCrs( vl2->crs() ); + + mapSettings.setOutputSize( size ); + mapSettings.setExtent( g.boundingBox() ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl2.get() ); + mapSettings.setOutputDpi( 96 ); + mapSettings.setFlag( QgsMapSettings::UseRenderingOptimization, false ); + + QgsLabelingEngineSettings engineSettings = mapSettings.labelingEngineSettings(); + engineSettings.setFlag( QgsLabelingEngineSettings::UsePartialCandidates, false ); + engineSettings.setFlag( QgsLabelingEngineSettings::DrawLabelRectOnly, true ); + //engineSettings.setFlag( QgsLabelingEngineSettings::DrawCandidates, true ); + mapSettings.setLabelingEngineSettings( engineSettings ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + QImage img = job.renderedImage(); + QVERIFY( imageCheck( QStringLiteral( "label_curved_label_small_segments" ), img, 20 ) ); +} + +void TestQgsLabelingEngine::testCurvedLabelCorrectLinePlacement() +{ + // test drawing curved labels when input linestring has many small segments + QgsPalLayerSettings settings; + setDefaultLabelParams( settings ); + + QgsTextFormat format = settings.format(); + format.setSize( 20 ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + settings.fieldName = QStringLiteral( "'XXXXXXXXXXXXXXXXXXXXXXXXXX'" ); + settings.isExpression = true; + settings.placement = QgsPalLayerSettings::Curved; + settings.placementFlags = QgsPalLayerSettings::AboveLine | QgsPalLayerSettings::MapOrientation; + settings.maxCurvedCharAngleIn = 99; + settings.maxCurvedCharAngleOut = 99; + + std::unique_ptr< QgsVectorLayer> vl2( new QgsVectorLayer( QStringLiteral( "LineString?crs=epsg:4326&field=id:integer" ), QStringLiteral( "vl" ), QStringLiteral( "memory" ) ) ); + vl2->setRenderer( new QgsNullSymbolRenderer() ); + + QgsFeature f; + f.setAttributes( QgsAttributes() << 1 ); + // Geometry which roughly curves around from "1 oclock" anticlockwise to 6 oclock. + QgsGeometry g( QgsGeometry::fromWkt( QStringLiteral( "LineString (0.30541596873255172 0.3835845896147404, -0.08989391401451696 0.21831379117811278, -0.33668341708542704 -0.01619207146845336, -0.156895589056393 -0.20714684533780003, 0.02735901730876611 -0.21496370742601911)" ) ) ); + f.setGeometry( g ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl2->setLabelsEnabled( true ); + + // make a fake render context + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + mapSettings.setDestinationCrs( vl2->crs() ); + + mapSettings.setOutputSize( size ); + mapSettings.setExtent( g.boundingBox() ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl2.get() ); + mapSettings.setOutputDpi( 96 ); + + QgsLabelingEngineSettings engineSettings = mapSettings.labelingEngineSettings(); + engineSettings.setFlag( QgsLabelingEngineSettings::UsePartialCandidates, false ); + engineSettings.setFlag( QgsLabelingEngineSettings::DrawLabelRectOnly, true ); + //engineSettings.setFlag( QgsLabelingEngineSettings::DrawCandidates, true ); + mapSettings.setLabelingEngineSettings( engineSettings ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + QImage img = job.renderedImage(); + QVERIFY( imageCheck( QStringLiteral( "label_curved_label_above_1" ), img, 20 ) ); + + // and below... + settings.placementFlags = QgsPalLayerSettings::BelowLine | QgsPalLayerSettings::MapOrientation; + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + + QgsMapRendererSequentialJob job2( mapSettings ); + job2.start(); + job2.waitForFinished(); + + img = job2.renderedImage(); + QVERIFY( imageCheck( QStringLiteral( "label_curved_label_below_1" ), img, 20 ) ); +} + +void TestQgsLabelingEngine::testCurvedLabelNegativeDistance() +{ + // test line label rendering with negative distance + QgsPalLayerSettings settings; + setDefaultLabelParams( settings ); + + QgsTextFormat format = settings.format(); + format.setSize( 20 ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + settings.fieldName = QStringLiteral( "'XXXXXXXXXXXXXXXXXXXXXXXXXX'" ); + settings.isExpression = true; + settings.placement = QgsPalLayerSettings::Curved; + settings.labelPerPart = false; + settings.dist = -5; + + std::unique_ptr< QgsVectorLayer> vl2( new QgsVectorLayer( QStringLiteral( "LineString?crs=epsg:3946&field=id:integer" ), QStringLiteral( "vl" ), QStringLiteral( "memory" ) ) ); + vl2->setRenderer( new QgsNullSymbolRenderer() ); + + QgsFeature f; + f.setAttributes( QgsAttributes() << 1 ); + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "LineString (190000 5000010, 190100 5000000, 190200 5000000)" ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl2->setLabelsEnabled( true ); + + // make a fake render context + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + mapSettings.setDestinationCrs( vl2->crs() ); + + mapSettings.setOutputSize( size ); + mapSettings.setExtent( f.geometry().boundingBox() ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl2.get() ); + mapSettings.setOutputDpi( 96 ); + + QgsLabelingEngineSettings engineSettings = mapSettings.labelingEngineSettings(); + engineSettings.setFlag( QgsLabelingEngineSettings::UsePartialCandidates, false ); + engineSettings.setFlag( QgsLabelingEngineSettings::DrawLabelRectOnly, true ); + //engineSettings.setFlag( QgsLabelingEngineSettings::DrawCandidates, true ); + mapSettings.setLabelingEngineSettings( engineSettings ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + QImage img = job.renderedImage(); + QVERIFY( imageCheck( QStringLiteral( "label_curved_negative_distance" ), img, 20 ) ); +} + +void TestQgsLabelingEngine::testParallelPlacementPreferAbove() +{ + // given the choice of above or below placement, labels should always be placed above + QgsPalLayerSettings settings; + setDefaultLabelParams( settings ); + + QgsTextFormat format = settings.format(); + format.setSize( 20 ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + settings.fieldName = QStringLiteral( "'XXXXXXXX'" ); + settings.isExpression = true; + settings.placement = QgsPalLayerSettings::Line; + settings.placementFlags = QgsPalLayerSettings::AboveLine | QgsPalLayerSettings::BelowLine | QgsPalLayerSettings::MapOrientation; + settings.labelPerPart = false; + + std::unique_ptr< QgsVectorLayer> vl2( new QgsVectorLayer( QStringLiteral( "LineString?crs=epsg:3946&field=id:integer" ), QStringLiteral( "vl" ), QStringLiteral( "memory" ) ) ); + vl2->setRenderer( new QgsNullSymbolRenderer() ); + + QgsFeature f; + f.setAttributes( QgsAttributes() << 1 ); + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "LineString (190000 5000010, 190200 5000000)" ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl2->setLabelsEnabled( true ); + + // make a fake render context + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + mapSettings.setDestinationCrs( vl2->crs() ); + + mapSettings.setOutputSize( size ); + mapSettings.setExtent( f.geometry().boundingBox() ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl2.get() ); + mapSettings.setOutputDpi( 96 ); + + QgsLabelingEngineSettings engineSettings = mapSettings.labelingEngineSettings(); + engineSettings.setFlag( QgsLabelingEngineSettings::UsePartialCandidates, false ); + engineSettings.setFlag( QgsLabelingEngineSettings::DrawLabelRectOnly, true ); + //engineSettings.setFlag( QgsLabelingEngineSettings::DrawCandidates, true ); + mapSettings.setLabelingEngineSettings( engineSettings ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + QImage img = job.renderedImage(); + QVERIFY( imageCheck( QStringLiteral( "parallel_prefer_above" ), img, 20 ) ); +} + +void TestQgsLabelingEngine::testLabelRotationWithReprojection() +{ + // test combination of map rotation with reprojected layer + QgsPalLayerSettings settings; + setDefaultLabelParams( settings ); + + QgsTextFormat format = settings.format(); + format.setSize( 20 ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + settings.fieldName = QStringLiteral( "'X'" ); + settings.isExpression = true; + settings.placement = QgsPalLayerSettings::OverPoint; + + std::unique_ptr< QgsVectorLayer> vl2( new QgsVectorLayer( QStringLiteral( "Point?crs=epsg:4326&field=id:integer" ), QStringLiteral( "vl" ), QStringLiteral( "memory" ) ) ); + vl2->setRenderer( new QgsNullSymbolRenderer() ); + + QgsFeature f; + f.setAttributes( QgsAttributes() << 1 ); + f.setGeometry( QgsGeometry::fromPointXY( QgsPointXY( -6.250851540391068, 53.335006994584944 ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + f.setAttributes( QgsAttributes() << 2 ); + f.setGeometry( QgsGeometry::fromPointXY( QgsPointXY( -21.950014487179544, 64.150023619739216 ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + f.setAttributes( QgsAttributes() << 3 ); + f.setGeometry( QgsGeometry::fromPointXY( QgsPointXY( -0.118667702475932, 51.5019405883275 ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl2->setLabelsEnabled( true ); + + // make a fake render context + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + QgsCoordinateReferenceSystem tgtCrs( QStringLiteral( "EPSG:3857" ) ); + mapSettings.setDestinationCrs( tgtCrs ); + + mapSettings.setOutputSize( size ); + mapSettings.setExtent( QgsRectangle( -4348530.5, 5618594.3, 2516176.1, 12412237.9 ) ); + mapSettings.setRotation( 60 ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl2.get() ); + mapSettings.setOutputDpi( 96 ); + + QgsLabelingEngineSettings engineSettings = mapSettings.labelingEngineSettings(); + engineSettings.setFlag( QgsLabelingEngineSettings::UsePartialCandidates, false ); + engineSettings.setFlag( QgsLabelingEngineSettings::DrawLabelRectOnly, true ); + //engineSettings.setFlag( QgsLabelingEngineSettings::DrawCandidates, true ); + mapSettings.setLabelingEngineSettings( engineSettings ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + QImage img = job.renderedImage(); + QVERIFY( imageCheck( QStringLiteral( "label_rotate_with_reproject" ), img, 20 ) ); +} + +void TestQgsLabelingEngine::labelingResults() +{ + // test retrieval of labeling results + QgsPalLayerSettings settings; + setDefaultLabelParams( settings ); + + QgsTextFormat format = settings.format(); + format.setSize( 20 ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + settings.fieldName = QStringLiteral( "\"id\"" ); + settings.isExpression = true; + settings.placement = QgsPalLayerSettings::OverPoint; + + + std::unique_ptr< QgsVectorLayer> vl2( new QgsVectorLayer( QStringLiteral( "Point?crs=epsg:4326&field=id:integer" ), QStringLiteral( "vl" ), QStringLiteral( "memory" ) ) ); + vl2->setRenderer( new QgsNullSymbolRenderer() ); + + QgsFeature f; + f.setAttributes( QgsAttributes() << 1 ); + f.setGeometry( QgsGeometry::fromPointXY( QgsPointXY( -6.250851540391068, 53.335006994584944 ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + f.setAttributes( QgsAttributes() << 8888 ); + f.setGeometry( QgsGeometry::fromPointXY( QgsPointXY( -21.950014487179544, 64.150023619739216 ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + f.setAttributes( QgsAttributes() << 33333 ); + f.setGeometry( QgsGeometry::fromPointXY( QgsPointXY( -0.118667702475932, 51.5019405883275 ) ) ); + QVERIFY( vl2->dataProvider()->addFeature( f ) ); + vl2->updateExtents(); + + vl2->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl2->setLabelsEnabled( true ); + + // make a fake render context + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + QgsCoordinateReferenceSystem tgtCrs( QStringLiteral( "EPSG:3857" ) ); + mapSettings.setDestinationCrs( tgtCrs ); + + mapSettings.setOutputSize( size ); + mapSettings.setExtent( QgsRectangle( -4137976.6, 6557092.6, 1585557.4, 9656515.0 ) ); +// mapSettings.setRotation( 60 ); + mapSettings.setLayers( QList<QgsMapLayer *>() << vl2.get() ); + mapSettings.setOutputDpi( 96 ); + + QgsLabelingEngineSettings engineSettings = mapSettings.labelingEngineSettings(); + engineSettings.setFlag( QgsLabelingEngineSettings::UsePartialCandidates, false ); + engineSettings.setFlag( QgsLabelingEngineSettings::DrawLabelRectOnly, true ); + //engineSettings.setFlag( QgsLabelingEngineSettings::DrawCandidates, true ); + mapSettings.setLabelingEngineSettings( engineSettings ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + std::unique_ptr< QgsLabelingResults > results( job.takeLabelingResults() ); + QVERIFY( results ); + + // retrieve some labels + QList<QgsLabelPosition> labels = results->labelsAtPosition( QgsPointXY( -654732, 7003282 ) ); + QCOMPARE( labels.count(), 1 ); + QCOMPARE( labels.at( 0 ).featureId, 1 ); + QCOMPARE( labels.at( 0 ).labelText, QStringLiteral( "1" ) ); + QGSCOMPARENEAR( labels.at( 0 ).width, 167961, 500 ); // tolerance will probably need tweaking, to account for cross-platform font diffs + QGSCOMPARENEAR( labels.at( 0 ).height, 295119, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMinimum(), -779822, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMaximum(), -611861, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMinimum(), 6897647, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMaximum(), 7192767, 500 ); + QCOMPARE( labels.at( 0 ).rotation, 0.0 ); + + labels = results->labelsAtPosition( QgsPointXY( -769822, 6927647 ) ); + QCOMPARE( labels.count(), 1 ); + QCOMPARE( labels.at( 0 ).featureId, 1 ); + labels = results->labelsAtPosition( QgsPointXY( -615861, 7132767 ) ); + QCOMPARE( labels.count(), 1 ); + QCOMPARE( labels.at( 0 ).featureId, 1 ); + + labels = results->labelsAtPosition( QgsPointXY( -2463392, 9361711 ) ); + QCOMPARE( labels.count(), 1 ); + QCOMPARE( labels.at( 0 ).featureId, 2 ); + QCOMPARE( labels.at( 0 ).labelText, QStringLiteral( "8888" ) ); + QGSCOMPARENEAR( labels.at( 0 ).width, 671844, 500 ); // tolerance will probably need tweaking, to account for cross-platform font diffs + QGSCOMPARENEAR( labels.at( 0 ).height, 295119, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMinimum(), -2779386, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMaximum(), -2107542, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMinimum(), 9240403, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMaximum(), 9535523, 500 ); + QCOMPARE( labels.at( 0 ).rotation, 0.0 ); + labels = results->labelsAtPosition( QgsPointXY( -1383, 6708478 ) ); + QCOMPARE( labels.count(), 1 ); + QCOMPARE( labels.at( 0 ).featureId, 3 ); + QCOMPARE( labels.at( 0 ).labelText, QStringLiteral( "33333" ) ); + QGSCOMPARENEAR( labels.at( 0 ).width, 839805, 500 ); // tolerance will probably need tweaking, to account for cross-platform font diffs + QGSCOMPARENEAR( labels.at( 0 ).height, 295119, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMinimum(), -433112, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMaximum(), 406692, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMinimum(), 6563006, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMaximum(), 6858125, 500 ); + QCOMPARE( labels.at( 0 ).rotation, 0.0 ); + labels = results->labelsAtPosition( QgsPointXY( -2463392, 6708478 ) ); + QCOMPARE( labels.count(), 0 ); + + // with rotation + mapSettings.setRotation( 60 ); + QgsMapRendererSequentialJob job2( mapSettings ); + job2.start(); + job2.waitForFinished(); + results.reset( job2.takeLabelingResults() ); + QVERIFY( results ); + labels = results->labelsAtPosition( QgsPointXY( -654732, 7003282 ) ); + QCOMPARE( labels.count(), 1 ); + QCOMPARE( labels.at( 0 ).featureId, 1 ); + QCOMPARE( labels.at( 0 ).labelText, QStringLiteral( "1" ) ); + QGSCOMPARENEAR( labels.at( 0 ).width, 167961, 500 ); // tolerance will probably need tweaking, to account for cross-platform font diffs + QGSCOMPARENEAR( labels.at( 0 ).height, 295119, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMinimum(), -865622, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMaximum(), -526060, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMinimum(), 6898697, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMaximum(), 7191716, 500 ); + QCOMPARE( labels.at( 0 ).rotation, 60.0 ); + + // should fall outside of rotated bounding box! + labels = results->labelsAtPosition( QgsPointXY( -769822, 6927647 ) ); + QCOMPARE( labels.count(), 0 ); + labels = results->labelsAtPosition( QgsPointXY( -615861, 7132767 ) ); + QCOMPARE( labels.count(), 0 ); + // just on corner, should only work if rotation of label's bounding box is handled correctly + labels = results->labelsAtPosition( QgsPointXY( -610000, 6898800 ) ); + QCOMPARE( labels.count(), 1 ); + QCOMPARE( labels.at( 0 ).featureId, 1 ); + + labels = results->labelsAtPosition( QgsPointXY( -2463392, 9361711 ) ); + QCOMPARE( labels.count(), 1 ); + QCOMPARE( labels.at( 0 ).featureId, 2 ); + QCOMPARE( labels.at( 0 ).labelText, QStringLiteral( "8888" ) ); + QGSCOMPARENEAR( labels.at( 0 ).width, 671844, 500 ); // tolerance will probably need tweaking, to account for cross-platform font diffs + QGSCOMPARENEAR( labels.at( 0 ).height, 295119, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMinimum(), -2739216, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMaximum(), -2147712, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMinimum(), 9023266, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMaximum(), 9752660, 500 ); + QCOMPARE( labels.at( 0 ).rotation, 60.0 ); + labels = results->labelsAtPosition( QgsPointXY( -1383, 6708478 ) ); + QCOMPARE( labels.count(), 1 ); + QCOMPARE( labels.at( 0 ).featureId, 3 ); + QCOMPARE( labels.at( 0 ).labelText, QStringLiteral( "33333" ) ); + QGSCOMPARENEAR( labels.at( 0 ).width, 839805, 500 ); // tolerance will probably need tweaking, to account for cross-platform font diffs + QGSCOMPARENEAR( labels.at( 0 ).height, 295119, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMinimum(), -350952, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.xMaximum(), 324531, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMinimum(), 6273139, 500 ); + QGSCOMPARENEAR( labels.at( 0 ).labelRect.yMaximum(), 7147992, 500 ); + QCOMPARE( labels.at( 0 ).rotation, 60.0 ); + labels = results->labelsAtPosition( QgsPointXY( -2463392, 6708478 ) ); + QCOMPARE( labels.count(), 0 ); +} + QGSTEST_MAIN( TestQgsLabelingEngine ) #include "testqgslabelingengine.moc" diff --git a/tests/src/core/testqgslayouttable.cpp b/tests/src/core/testqgslayouttable.cpp index b1787bfbcc..773149bc2c 100644 --- a/tests/src/core/testqgslayouttable.cpp +++ b/tests/src/core/testqgslayouttable.cpp @@ -30,6 +30,9 @@ #include "qgsproject.h" #include "qgsrelationmanager.h" #include "qgsreadwritecontext.h" +#include "qgslayoutmanager.h" +#include "qgsprintlayout.h" +#include "qgslayoutatlas.h" #include <QObject> #include "qgstest.h" @@ -52,6 +55,7 @@ class TestQgsLayoutTable : public QObject void attributeTableFilterFeatures(); //test filtering attribute table rows void attributeTableSetAttributes(); //test subset of attributes in table void attributeTableVisibleOnly(); //test displaying only visible attributes + void attributeTableInsideAtlasOnly(); void attributeTableRender(); //test rendering attribute table void manualColumnWidth(); //test setting manual column widths void attributeTableEmpty(); //test empty modes for attribute table @@ -59,6 +63,7 @@ class TestQgsLayoutTable : public QObject void attributeTableExtend(); void attributeTableRepeat(); void attributeTableAtlasSource(); //test attribute table in atlas feature mode + void attributeTableRestoreAtlasSource(); void attributeTableRelationSource(); //test attribute table in relation mode void contentsContainsRow(); //test the contentsContainsRow function void removeDuplicates(); //test removing duplicate rows @@ -341,6 +346,75 @@ void TestQgsLayoutTable::attributeTableVisibleOnly() //retrieve rows and check compareTable( table, expectedRows ); + + // with rotation + map->setMapRotation( 90 ); + expectedRows.clear(); + row.clear(); + row << QStringLiteral( "Jet" ) << QStringLiteral( "90" ) << QStringLiteral( "3" ) << QStringLiteral( "2" ) << QStringLiteral( "0" ) << QStringLiteral( "2" ); + expectedRows.append( row ); + compareTable( table, expectedRows ); +} + +void TestQgsLayoutTable::attributeTableInsideAtlasOnly() +{ + //test displaying only visible attributes inside the atlas feature + QgsLayout l( QgsProject::instance() ); + l.initializeDefaults(); + QgsLayoutItemAttributeTable *table = new QgsLayoutItemAttributeTable( &l ); + table->setVectorLayer( mVectorLayer ); + + QgsLayoutItemMap *map = new QgsLayoutItemMap( &l ); + map->attemptSetSceneRect( QRectF( 20, 20, 200, 100 ) ); + map->setFrameEnabled( true ); + map->setExtent( QgsRectangle( -95.537, 32.736, -84.389, 42.2920 ) ); + l.addLayoutItem( map ); + + table->setMap( map ); + table->setFilterToAtlasFeature( true ); + + // no atlas feature + QVector<QStringList> expectedRows; + compareTable( table, expectedRows ); + + //setup atlas + std::unique_ptr< QgsVectorLayer > atlasLayer = qgis::make_unique< QgsVectorLayer >( QStringLiteral( "Polygon?crs=EPSG:3857" ), QStringLiteral( "atlas" ), QStringLiteral( "memory" ) ); + QVERIFY( atlasLayer->isValid() ); + QgsGeometry atlasGeom( QgsGeometry::fromWkt( QStringLiteral( "Polygon ((-8863916.31126776337623596 4621257.48816855065524578, -9664269.45078738406300545 5097056.938785120844841, -10049249.44194872118532658 3765399.75924854446202517, -8985488.94005555473268032 3458599.17133777122944593, -8863916.31126776337623596 4621257.48816855065524578))" ) ) ); + QgsFeature f; + f.setGeometry( atlasGeom ); + atlasLayer->dataProvider()->addFeature( f ); + l.reportContext().setLayer( atlasLayer.get() ); + + QgsFeatureIterator it = atlasLayer->getFeatures(); + it.nextFeature( f ); + l.reportContext().setFeature( f ); + + QStringList row; + row << QStringLiteral( "Biplane" ) << QStringLiteral( "0" ) << QStringLiteral( "1" ) << QStringLiteral( "3" ) << QStringLiteral( "3" ) << QStringLiteral( "6" ); + expectedRows.append( row ); + row.clear(); + row << QStringLiteral( "Jet" ) << QStringLiteral( "90" ) << QStringLiteral( "3" ) << QStringLiteral( "1" ) << QStringLiteral( "0" ) << QStringLiteral( "1" ); + expectedRows.append( row ); + row.clear(); + row << QStringLiteral( "Biplane" ) << QStringLiteral( "340" ) << QStringLiteral( "1" ) << QStringLiteral( "3" ) << QStringLiteral( "3" ) << QStringLiteral( "6" ); + expectedRows.append( row ); + + //retrieve rows and check + compareTable( table, expectedRows ); + + // combination of atlas and map extent visibility + table->setDisplayOnlyVisibleFeatures( true ); + expectedRows.clear(); + row.clear(); + row << QStringLiteral( "Jet" ) << QStringLiteral( "90" ) << QStringLiteral( "3" ) << QStringLiteral( "1" ) << QStringLiteral( "0" ) << QStringLiteral( "1" ); + expectedRows.append( row ); + row.clear(); + row << QStringLiteral( "Biplane" ) << QStringLiteral( "340" ) << QStringLiteral( "1" ) << QStringLiteral( "3" ) << QStringLiteral( "3" ) << QStringLiteral( "6" ); + expectedRows.append( row ); + + //retrieve rows and check + compareTable( table, expectedRows ); } void TestQgsLayoutTable::attributeTableRender() @@ -609,6 +683,23 @@ void TestQgsLayoutTable::attributeTableAtlasSource() } +void TestQgsLayoutTable::attributeTableRestoreAtlasSource() +{ + const QString projectPath = QStringLiteral( TEST_DATA_DIR ) + "/layout_atlas_table.qgs"; + QgsProject p; + p.read( projectPath ); + + QgsPrintLayout *l = dynamic_cast< QgsPrintLayout *>( p.layoutManager()->layouts().at( 0 ) ); + QgsLayoutItemAttributeTable *table = qobject_cast< QgsLayoutItemAttributeTable * >( l->multiFrames().at( 0 ) ); + QCOMPARE( table->source(), QgsLayoutItemAttributeTable::AtlasFeature ); + QVERIFY( l->atlas()->coverageLayer() ); + QVERIFY( l->atlas()->coverageLayer()->isValid() ); + QCOMPARE( table->sourceLayer(), l->atlas()->coverageLayer() ); + QCOMPARE( table->columns().count(), 2 ); + QCOMPARE( table->columns().at( 0 )->attribute(), QStringLiteral( "Heading" ) ); + QCOMPARE( table->columns().at( 1 )->attribute(), QStringLiteral( "Staff" ) ); +} + void TestQgsLayoutTable::attributeTableRelationSource() { @@ -1422,7 +1513,7 @@ void TestQgsLayoutTable::wrappedText() QFont f; QString sourceText( "Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua" ); - QString wrapText = t->wrappedText( sourceText, 100 /*columnWidth*/, f ); + QString wrapText = t->wrappedText( sourceText, 101 /*columnWidth*/, f ); //there should be no line break before the last word (bug #20546) QVERIFY( !wrapText.endsWith( "\naliqua" ) ); } diff --git a/tests/src/core/testqgsofflineediting.cpp b/tests/src/core/testqgsofflineediting.cpp index 524d79ad8e..534991d71a 100644 --- a/tests/src/core/testqgsofflineediting.cpp +++ b/tests/src/core/testqgsofflineediting.cpp @@ -37,6 +37,7 @@ class TestQgsOfflineEditing : public QObject private: QgsOfflineEditing *mOfflineEditing = nullptr; QgsVectorLayer *mpLayer = nullptr; + QgsVectorLayer *gpkgLayer = nullptr; QString offlineDataPath; QString offlineDbFile; QStringList layerIds; @@ -52,6 +53,7 @@ class TestQgsOfflineEditing : public QObject void createSpatialiteAndSynchronizeBack(); void createGeopackageAndSynchronizeBack(); + void removeConstraintsOnDefaultValues(); }; void TestQgsOfflineEditing::initTestCase() @@ -91,6 +93,15 @@ void TestQgsOfflineEditing::init() numberOfFields = mpLayer->fields().size(); layerIds.append( mpLayer->id() ); + + //same with gpkg + QFile::copy( myFileName + "/points_gpkg.gpkg", myTempDirName + "/points_gpkg.gpkg" ); + QString myTempFileNameGpgk = myTempDirName + "/points_gpkg.gpkg"; + QFileInfo myMapFileInfoGpkg( myTempFileNameGpgk ); + gpkgLayer = new QgsVectorLayer( myMapFileInfoGpkg.filePath() + "|layername=points_gpkg", "points_gpkg", QStringLiteral( "ogr" ) ); + + QgsProject::instance()->addMapLayer( gpkgLayer ); + layerIds.append( gpkgLayer->id() ); } void TestQgsOfflineEditing::cleanup() @@ -115,7 +126,7 @@ void TestQgsOfflineEditing::createSpatialiteAndSynchronizeBack() //convert mOfflineEditing->convertToOfflineProject( offlineDataPath, offlineDbFile, layerIds, false, QgsOfflineEditing::SpatiaLite ); - mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayers().first() ); + mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayersByName( QStringLiteral( "points (offline)" ) ).first() ); QCOMPARE( mpLayer->name(), QStringLiteral( "points (offline)" ) ); QCOMPARE( mpLayer->featureCount(), numberOfFeatures ); //check LayerTreeNode showFeatureCount property @@ -127,7 +138,7 @@ void TestQgsOfflineEditing::createSpatialiteAndSynchronizeBack() //synchronize back mOfflineEditing->synchronize(); - mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayers().first() ); + mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayersByName( QStringLiteral( "points" ) ).first() ); QCOMPARE( mpLayer->name(), QStringLiteral( "points" ) ); QCOMPARE( mpLayer->featureCount(), numberOfFeatures ); QCOMPARE( mpLayer->fields().size(), numberOfFields ); @@ -157,7 +168,7 @@ void TestQgsOfflineEditing::createGeopackageAndSynchronizeBack() //convert mOfflineEditing->convertToOfflineProject( offlineDataPath, offlineDbFile, layerIds, false, QgsOfflineEditing::GPKG ); - mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayers().first() ); + mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayersByName( QStringLiteral( "points (offline)" ) ).first() ); QCOMPARE( mpLayer->name(), QStringLiteral( "points (offline)" ) ); QCOMPARE( mpLayer->featureCount(), numberOfFeatures ); //comparing with the number +1 because GPKG created an fid @@ -189,7 +200,7 @@ void TestQgsOfflineEditing::createGeopackageAndSynchronizeBack() //synchronize back mOfflineEditing->synchronize(); - mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayers().first() ); + mpLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayersByName( QStringLiteral( "points" ) ).first() ); QCOMPARE( mpLayer->name(), QStringLiteral( "points" ) ); QCOMPARE( mpLayer->dataProvider()->featureCount(), numberOfFeatures + 1 ); QCOMPARE( mpLayer->fields().size(), numberOfFields ); @@ -215,5 +226,42 @@ void TestQgsOfflineEditing::createGeopackageAndSynchronizeBack() QCOMPARE( mpLayer->dataProvider()->featureCount(), numberOfFeatures ); } + +void TestQgsOfflineEditing::removeConstraintsOnDefaultValues() +{ + offlineDbFile = "TestQgsOfflineEditing.gpkg"; + QCOMPARE( gpkgLayer->name(), QStringLiteral( "points_gpkg" ) ); + QString name = gpkgLayer->name(); + + //check constraints (not null and unique) + QgsFieldConstraints constraintsOfFidField = gpkgLayer->fields().at( gpkgLayer->fields().indexOf( QStringLiteral( "fid" ) ) ).constraints(); + QVERIFY( constraintsOfFidField.constraints() & QgsFieldConstraints::ConstraintNotNull ); + QVERIFY( constraintsOfFidField.constraints() & QgsFieldConstraints::ConstraintUnique ); + + //convert + mOfflineEditing->convertToOfflineProject( offlineDataPath, offlineDbFile, layerIds, false, QgsOfflineEditing::GPKG ); + + gpkgLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayersByName( QStringLiteral( "points_gpkg (offline)" ) ).first() ); + QCOMPARE( gpkgLayer->name(), QStringLiteral( "points_gpkg (offline)" ) ); + + name = gpkgLayer->name(); + //check constraints (unique but not not null) + constraintsOfFidField = gpkgLayer->fields().at( gpkgLayer->fields().indexOf( QStringLiteral( "fid" ) ) ).constraints(); + QVERIFY( !( constraintsOfFidField.constraints() & QgsFieldConstraints::ConstraintNotNull ) ); + QVERIFY( constraintsOfFidField.constraints() & QgsFieldConstraints::ConstraintUnique ); + + //synchronize back + mOfflineEditing->synchronize(); + + gpkgLayer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayersByName( QStringLiteral( "points_gpkg" ) ).first() ); + + name = gpkgLayer->name(); + //check constraints (not null and unique) + constraintsOfFidField = gpkgLayer->fields().at( gpkgLayer->fields().indexOf( QStringLiteral( "fid" ) ) ).constraints(); + QVERIFY( constraintsOfFidField.constraints() & QgsFieldConstraints::ConstraintNotNull ); + QVERIFY( constraintsOfFidField.constraints() & QgsFieldConstraints::ConstraintUnique ); +} + + QGSTEST_MAIN( TestQgsOfflineEditing ) #include "testqgsofflineediting.moc" diff --git a/tests/src/core/testqgsogcutils.cpp b/tests/src/core/testqgsogcutils.cpp index 2f6c6338d4..0372de17eb 100644 --- a/tests/src/core/testqgsogcutils.cpp +++ b/tests/src/core/testqgsogcutils.cpp @@ -61,6 +61,9 @@ class TestQgsOgcUtils : public QObject void testExpressionFromOgcFilter(); void testExpressionFromOgcFilter_data(); + void testExpressionFromOgcFilterWithLongLong(); + void testExpressionFromOgcFilterWithLongLong_data(); + void testExpressionFromOgcFilterWFS20(); void testExpressionFromOgcFilterWFS20_data(); @@ -312,7 +315,7 @@ void TestQgsOgcUtils::testExpressionFromOgcFilterWFS20() QgsVectorLayer layer( "Point?crs=epsg:4326&field=LITERAL:string(20)", "temp", "memory" ); - std::shared_ptr<QgsExpression> expr( QgsOgcUtils::expressionFromOgcFilter( rootElem, QgsOgcUtils::FILTER_FES_2_0, &layer ) ); + std::unique_ptr<QgsExpression> expr( QgsOgcUtils::expressionFromOgcFilter( rootElem, QgsOgcUtils::FILTER_FES_2_0, &layer ) ); QVERIFY( expr.get() ); qDebug( "OGC XML : %s", xmlText.toAscii().data() ); @@ -456,7 +459,57 @@ void TestQgsOgcUtils::testExpressionFromOgcFilter() QgsVectorLayer layer( "Point?crs=epsg:4326&field=LITERAL:string(20)", "temp", "memory" ); - std::shared_ptr<QgsExpression> expr( QgsOgcUtils::expressionFromOgcFilter( rootElem, &layer ) ); + std::unique_ptr<QgsExpression> expr( QgsOgcUtils::expressionFromOgcFilter( rootElem, &layer ) ); + QVERIFY( expr.get() ); + + qDebug( "OGC XML : %s", xmlText.toAscii().data() ); + qDebug( "EXPR-DUMP: %s", expr->expression().toAscii().data() ); + + if ( expr->hasParserError() ) + qDebug( "ERROR: %s ", expr->parserErrorString().toAscii().data() ); + QVERIFY( !expr->hasParserError() ); + + QCOMPARE( dumpText, expr->expression() ); +} + +void TestQgsOgcUtils::testExpressionFromOgcFilterWithLongLong_data() +{ + QTest::addColumn<QString>( "xmlText" ); + QTest::addColumn<QString>( "dumpText" ); + QTest::newRow( "Literal less than" ) << QString( + "<Filter><And>" + "<PropertyIsGreaterThan>" + "<PropertyName>id</PropertyName>" + "<Literal>1</Literal>" + "</PropertyIsGreaterThan>" + "<PropertyIsLessThan>" + "<PropertyName>id</PropertyName>" + "<Literal>3</Literal>" + "</PropertyIsLessThan>" + "</And></Filter>" ) + << QStringLiteral( "id > 1 AND id < 3" ); +} + +void TestQgsOgcUtils::testExpressionFromOgcFilterWithLongLong() +{ + QFETCH( QString, xmlText ); + QFETCH( QString, dumpText ); + + QDomDocument doc; + + QVERIFY( doc.setContent( xmlText, true ) ); + QDomElement rootElem = doc.documentElement(); + + QgsVectorLayer layer( "Point?crs=epsg:4326", "temp", "memory" ); + + QgsField longlongField( QStringLiteral( "id" ), QVariant::LongLong ); + + QList<QgsField> fields; + fields.append( longlongField ); + layer.dataProvider()->addAttributes( fields ); + layer.updateFields(); + + std::unique_ptr<QgsExpression> expr( QgsOgcUtils::expressionFromOgcFilter( rootElem, &layer ) ); QVERIFY( expr.get() ); qDebug( "OGC XML : %s", xmlText.toAscii().data() ); diff --git a/tests/src/core/testqgspainteffect.cpp b/tests/src/core/testqgspainteffect.cpp index 430fe3464f..f123d5cb22 100644 --- a/tests/src/core/testqgspainteffect.cpp +++ b/tests/src/core/testqgspainteffect.cpp @@ -360,8 +360,8 @@ void TestQgsPaintEffect::blur() QCOMPARE( effect->opacity(), 0.5 ); effect->setEnabled( false ); QCOMPARE( effect->enabled(), false ); - effect->setBlurLevel( 6 ); - QCOMPARE( effect->blurLevel(), 6 ); + effect->setBlurLevel( 6.0 ); + QCOMPARE( effect->blurLevel(), 6.0 ); effect->setBlurMethod( QgsBlurEffect::GaussianBlur ); QCOMPARE( effect->blurMethod(), QgsBlurEffect::GaussianBlur ); effect->setDrawMode( QgsPaintEffect::Modifier ); @@ -434,8 +434,8 @@ void TestQgsPaintEffect::dropShadow() QCOMPARE( effect->opacity(), 0.5 ); effect->setEnabled( false ); QCOMPARE( effect->enabled(), false ); - effect->setBlurLevel( 6 ); - QCOMPARE( effect->blurLevel(), 6 ); + effect->setBlurLevel( 6.0 ); + QCOMPARE( effect->blurLevel(), 6.0 ); effect->setOffsetAngle( 77 ); QCOMPARE( effect->offsetAngle(), 77 ); effect->setOffsetDistance( 9.7 ); @@ -531,8 +531,8 @@ void TestQgsPaintEffect::glow() QCOMPARE( effect->opacity(), 0.5 ); effect->setEnabled( false ); QCOMPARE( effect->enabled(), false ); - effect->setBlurLevel( 6 ); - QCOMPARE( effect->blurLevel(), 6 ); + effect->setBlurLevel( 6.0 ); + QCOMPARE( effect->blurLevel(), 6.0 ); effect->setSpread( 7.8 ); QCOMPARE( effect->spread(), 7.8 ); effect->setSpreadUnit( QgsUnitTypes::RenderMapUnits ); diff --git a/tests/src/core/testqgsstringutils.cpp b/tests/src/core/testqgsstringutils.cpp index 26d3e9e13b..9dc17cc587 100644 --- a/tests/src/core/testqgsstringutils.cpp +++ b/tests/src/core/testqgsstringutils.cpp @@ -158,6 +158,8 @@ void TestQgsStringUtils::insertLinks() QVERIFY( found ); QCOMPARE( QgsStringUtils::insertLinks( QString( "is a@a an email?" ), &found ), QString( "is a@a an email?" ) ); QVERIFY( !found ); + QCOMPARE( QgsStringUtils::insertLinks( QString( "Load file:///this/is/path/to.file?query=1#anchor" ), &found ), QString( "Load <a href=\"file:///this/is/path/to.file?query=1#anchor\">file:///this/is/path/to.file?query=1#anchor</a>" ) ); + QVERIFY( found ); } void TestQgsStringUtils::titleCase_data() diff --git a/tests/src/core/testqgsvectorfilewriter.cpp b/tests/src/core/testqgsvectorfilewriter.cpp index 019a534166..1b0550f8c2 100644 --- a/tests/src/core/testqgsvectorfilewriter.cpp +++ b/tests/src/core/testqgsvectorfilewriter.cpp @@ -62,6 +62,12 @@ class TestQgsVectorFileWriter: public QObject public: TestQgsVectorFileWriter(); + void _testExportToGpx( const QString &geomTypeName, + const QString &wkt, + const QString &expectedLayerName, + const QString &inputLayerName = QStringLiteral( "test" ), + const QStringList &layerOptions = QStringList() ); + private slots: void initTestCase();// will be called before the first testfunction is executed. void init() {} // will be called before each testfunction is executed. @@ -84,6 +90,20 @@ class TestQgsVectorFileWriter: public QObject void prepareWriteAsVectorFormat(); //! Test regression #21714 (Exported GeoPackages have wrong field definitions) void testTextFieldLength(); + //! Test https://issues.qgis.org/issues/22005 + void testExportToGpxPoint(); + //! Test https://issues.qgis.org/issues/22005 + void testExportToGpxPointTrackPoints(); + //! Test https://issues.qgis.org/issues/22005 + void testExportToGpxPointRoutePoints(); + //! Test https://issues.qgis.org/issues/22005 + void testExportToGpxLineString(); + //! Test https://issues.qgis.org/issues/22005 + void testExportToGpxLineStringForceTrack(); + //! Test https://issues.qgis.org/issues/22005 + void testExportToGpxMultiLineString(); + //! Test https://issues.qgis.org/issues/22005 + void testExportToGpxMultiLineStringForceRoute(); private: // a little util fn used by all tests @@ -530,6 +550,111 @@ void TestQgsVectorFileWriter::testTextFieldLength() } +void TestQgsVectorFileWriter::_testExportToGpx( const QString &geomTypeName, + const QString &wkt, + const QString &expectedLayerName, + const QString &inputLayerName, + const QStringList &layerOptions ) +{ + QTemporaryFile tmpFile( QDir::tempPath() + "/test_qgsvectorfilewriter_testExportToGpx" + geomTypeName + "_XXXXXX.gpx" ); + tmpFile.open(); + QString fileName( tmpFile.fileName( ) ); + QString memLayerDef( geomTypeName ); + if ( inputLayerName == QLatin1String( "track_points" ) ) + { + memLayerDef += QStringLiteral( "?field=track_fid:int&field=track_seg_id:int" ); + } + else if ( inputLayerName == QLatin1String( "route_points" ) ) + { + memLayerDef += QStringLiteral( "?field=route_fid:int" ); + } + QgsVectorLayer vl( memLayerDef, "test", "memory" ); + QgsFeature f { vl.fields() }; + if ( inputLayerName == QLatin1String( "track_points" ) ) + { + f.setAttribute( 0, 1 ); + f.setAttribute( 1, 1 ); + } + else if ( inputLayerName == QLatin1String( "route_points" ) ) + { + f.setAttribute( 0, 1 ); + } + f.setGeometry( QgsGeometry::fromWkt( wkt ) ); + QVERIFY( vl.startEditing() ); + QVERIFY( vl.addFeature( f ) ); + QgsVectorFileWriter::SaveVectorOptions options; + options.driverName = "GPX"; + options.layerName = inputLayerName; + options.layerOptions = layerOptions; + QString outLayerName; + QgsVectorFileWriter::WriterError error( QgsVectorFileWriter::writeAsVectorFormat( + &vl, + fileName, + options, + nullptr, // newFilename + nullptr, // errorMessage + &outLayerName ) ); + QCOMPARE( error, QgsVectorFileWriter::WriterError::NoError ); + QCOMPARE( outLayerName, expectedLayerName ); + QgsVectorLayer vl2( QStringLiteral( "%1|layername=%2" ).arg( fileName ).arg( outLayerName ), "src_test", "ogr" ); + QVERIFY( vl2.isValid() ); + QCOMPARE( vl2.featureCount(), 1L ); +} + +void TestQgsVectorFileWriter::testExportToGpxPoint() +{ + _testExportToGpx( QStringLiteral( "Point" ), + QStringLiteral( "point(9 45)" ), + QStringLiteral( "waypoints" ) ); +} + +void TestQgsVectorFileWriter::testExportToGpxPointTrackPoints() +{ + _testExportToGpx( QStringLiteral( "Point" ), + QStringLiteral( "point(9 45)" ), + QStringLiteral( "track_points" ), + QStringLiteral( "track_points" ) ); +} + +void TestQgsVectorFileWriter::testExportToGpxPointRoutePoints() +{ + _testExportToGpx( QStringLiteral( "Point" ), + QStringLiteral( "point(9 45)" ), + QStringLiteral( "route_points" ), + QStringLiteral( "route_points" ) ); +} + +void TestQgsVectorFileWriter::testExportToGpxLineString() +{ + _testExportToGpx( QStringLiteral( "LineString" ), + QStringLiteral( "linestring(9 45,10 46)" ), + QStringLiteral( "routes" ) ); +} + +void TestQgsVectorFileWriter::testExportToGpxLineStringForceTrack() +{ + _testExportToGpx( QStringLiteral( "LineString" ), + QStringLiteral( "linestring(9 45,10 46)" ), + QStringLiteral( "tracks" ), + QStringLiteral( "test" ), + QStringList() << QStringLiteral( "FORCE_GPX_TRACK=YES" ) ); +} + +void TestQgsVectorFileWriter::testExportToGpxMultiLineString() +{ + _testExportToGpx( QStringLiteral( "MultiLineString" ), + QStringLiteral( "multilinestring((9 45,10 46))" ), + QStringLiteral( "tracks" ) ); +} + +void TestQgsVectorFileWriter::testExportToGpxMultiLineStringForceRoute() +{ + _testExportToGpx( QStringLiteral( "MultiLineString" ), + QStringLiteral( "multilinestring((9 45,10 46))" ), + QStringLiteral( "routes" ), + QStringLiteral( "test" ), + QStringList() << QStringLiteral( "FORCE_GPX_ROUTE=YES" ) ); +} QGSTEST_MAIN( TestQgsVectorFileWriter ) #include "testqgsvectorfilewriter.moc" diff --git a/tests/src/gui/CMakeLists.txt b/tests/src/gui/CMakeLists.txt index e19153f0f2..468401e66d 100644 --- a/tests/src/gui/CMakeLists.txt +++ b/tests/src/gui/CMakeLists.txt @@ -145,6 +145,7 @@ ADD_QGIS_TEST(filedownloader testqgsfiledownloader.cpp) ADD_QGIS_TEST(layoutgui testqgslayoutgui.cpp) ADD_QGIS_TEST(layoutview testqgslayoutview.cpp) ADD_QGIS_TEST(valuemapwidgetwrapper testqgsvaluemapwidgetwrapper.cpp) +ADD_QGIS_TEST(rasterlayersaveasdialog testqgsrasterlayersaveasdialog.cpp) ADD_QGIS_TEST(valuerelationwidgetwrapper testqgsvaluerelationwidgetwrapper.cpp) ADD_QGIS_TEST(relationreferencewidget testqgsrelationreferencewidget.cpp) ADD_QGIS_TEST(featurelistcombobox testqgsfeaturelistcombobox.cpp) diff --git a/tests/src/gui/testqgsrasterlayersaveasdialog.cpp b/tests/src/gui/testqgsrasterlayersaveasdialog.cpp new file mode 100644 index 0000000000..21b62a6577 --- /dev/null +++ b/tests/src/gui/testqgsrasterlayersaveasdialog.cpp @@ -0,0 +1,145 @@ +/*************************************************************************** + testqgsrasterlayersaveasdialog.cpp + -------------------------------------- + Date : May 2019 + Copyright : (C) 2019 Alessandro Pasotti + Email : elpaso at itopen dot it + *************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + + +#include "qgstest.h" + +#include "qgsrasterlayersaveasdialog.h" +#include "qgsvectorfilewriter.h" +#include "qgsvectorlayer.h" +#include "qgsrasterlayer.h" +#include "qgsrasterfilewriter.h" + +#include "qgsgui.h" + +class TestQgsRasterLayerSaveAsDialog : public QObject +{ + Q_OBJECT + public: + TestQgsRasterLayerSaveAsDialog() = default; + + private slots: + void initTestCase(); // will be called before the first testfunction is executed. + void cleanupTestCase(); // will be called after the last testfunction was executed. + void init(); // will be called before each testfunction is executed. + void cleanup(); // will be called after every testfunction. + void outputLayerExists(); + + private: + + QString prepareDb(); + +}; + +void TestQgsRasterLayerSaveAsDialog::initTestCase() +{ + QgsApplication::init(); + QgsApplication::initQgis(); +} + +void TestQgsRasterLayerSaveAsDialog::cleanupTestCase() +{ + QgsApplication::exitQgis(); +} + +void TestQgsRasterLayerSaveAsDialog::init() +{ +} + +void TestQgsRasterLayerSaveAsDialog::cleanup() +{ +} + +void TestQgsRasterLayerSaveAsDialog::outputLayerExists() +{ + QString fileName { prepareDb() }; + + // Try to add a raster layer to the DB + QString dataDir( TEST_DATA_DIR ); //defined in CmakeLists.txt + QString rasterPath { dataDir + "/landsat.tif" }; + + QgsRasterLayer rl( rasterPath, QStringLiteral( "my_raster" ) ); + QVERIFY( rl.isValid() ); + + QgsRasterLayerSaveAsDialog d( &rl, rl.dataProvider(), rl.extent(), rl.crs(), rl.crs() ); + d.mFormatComboBox->setCurrentIndex( d.mFormatComboBox->findData( QStringLiteral( "GPKG" ) ) ); + QCOMPARE( d.mFormatComboBox->currentData().toString(), QString( "GPKG" ) ); + QVERIFY( ! d.outputLayerExists() ); + d.mFilename->setFilePath( fileName ); + d.mLayerName->setText( QStringLiteral( "my_imported_raster" ) ); + QVERIFY( ! d.outputLayerExists() ); + + // Write the raster into the destination file + auto pipe { *rl.pipe() }; + auto rasterUri { QStringLiteral( "GPKG:%1:%2" ).arg( d.outputFileName() ).arg( d.outputLayerName() ) }; + auto fileWriter { QgsRasterFileWriter( d.outputFileName() ) }; + fileWriter.setCreateOptions( d.createOptions() ); + fileWriter.setOutputFormat( d.outputFormat() ); + fileWriter.setBuildPyramidsFlag( d.buildPyramidsFlag() ); + fileWriter.setPyramidsList( d.pyramidsList() ); + fileWriter.setPyramidsResampling( d.pyramidsResamplingMethod() ); + fileWriter.setPyramidsFormat( d.pyramidsFormat() ); + fileWriter.setPyramidsConfigOptions( d.pyramidsConfigOptions() ); + fileWriter.writeRaster( &pipe, 10, 10, rl.extent(), rl.crs() ); + { + QVERIFY( QgsRasterLayer( rasterUri, QStringLiteral( "my_raster2" ) ).isValid() ); + } + QVERIFY( d.outputLayerExists() ); + // Now try to save with the same name of the existing vector layer + d.mLayerName->setText( QStringLiteral( "test_vector_layer" ) ); + QVERIFY( d.outputLayerExists() ); + auto fileWriter2 { QgsRasterFileWriter( d.outputFileName() ) }; + fileWriter2.writeRaster( &pipe, 10, 10, rl.extent(), rl.crs() ); + { + auto rasterUri2 { QStringLiteral( "GPKG:%1:%2" ).arg( d.outputFileName() ).arg( d.outputLayerName() ) }; + QVERIFY( ! QgsRasterLayer( rasterUri2, QStringLiteral( "my_raster2" ) ).isValid() ); + } +} + +QString TestQgsRasterLayerSaveAsDialog::prepareDb() +{ + // Preparation: make a test gpk DB with a vector layer in it + QTemporaryFile tmpFile( QDir::tempPath() + QStringLiteral( "/test_qgsrasterlayersavesdialog_XXXXXX.gpkg" ) ); + tmpFile.setAutoRemove( false ); + tmpFile.open(); + QString fileName( tmpFile.fileName( ) ); + QgsVectorLayer vl( QStringLiteral( "Point?field=firstfield:string(1024)" ), "test_vector_layer", "memory" ); + QgsVectorFileWriter w( fileName, + QStringLiteral( "UTF-8" ), + vl.fields(), + QgsWkbTypes::Point, + vl.crs() ); + QgsFeature f { vl.fields() }; + f.setAttribute( 0, QString( 1024, 'x' ) ); + f.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "point(9 45)" ) ) ); + vl.startEditing(); + vl.addFeature( f ); + QgsVectorFileWriter::SaveVectorOptions options; + options.driverName = QStringLiteral( "GPKG" ); + options.layerName = QStringLiteral( "test_vector_layer" ); + QString errorMessage; + QgsVectorFileWriter::writeAsVectorFormat( + &vl, + fileName, + options, + &errorMessage ); + QgsVectorLayer vl2( QStringLiteral( "%1|layername=test_vector_layer" ).arg( fileName ), "test_vector_layer", "ogr" ); + Q_ASSERT( vl2.isValid() ); + return tmpFile.fileName( ); +} + +QGSTEST_MAIN( TestQgsRasterLayerSaveAsDialog ) + +#include "testqgsrasterlayersaveasdialog.moc" diff --git a/tests/src/gui/testqgsrelationreferencewidget.cpp b/tests/src/gui/testqgsrelationreferencewidget.cpp index 33f62e74bd..ffbbb4a259 100644 --- a/tests/src/gui/testqgsrelationreferencewidget.cpp +++ b/tests/src/gui/testqgsrelationreferencewidget.cpp @@ -47,6 +47,7 @@ class TestQgsRelationReferenceWidget : public QObject void testChainFilterDeleteForeignKey(); void testInvalidRelation(); void testSetGetForeignKey(); + void testIdentifyOnMap(); private: std::unique_ptr<QgsVectorLayer> mLayer1; @@ -340,5 +341,38 @@ void TestQgsRelationReferenceWidget::testSetGetForeignKey() QCOMPARE( spy.count(), 3 ); } + +// Test issue https://issues.qgis.org/issues/22071 +// Relation reference widget wrong feature when "on map identification" +void TestQgsRelationReferenceWidget::testIdentifyOnMap() +{ + QWidget parentWidget; + QgsRelationReferenceWidget w( &parentWidget ); + QVERIFY( mLayer1->startEditing() ); + w.setRelation( *mRelation, true ); + w.setAllowMapIdentification( true ); + w.init(); + QEventLoop loop; + // Populate model (I tried to listen to signals but the module reload() runs twice + // (the first load triggers a second one which does the population of the combo) + // and I haven't fin a way to properly wait for it. + QTimer::singleShot( 300, [&] { loop.quit(); } ); + loop.exec(); + QgsFeature feature; + mLayer2->getFeatures( QStringLiteral( "pk = %1" ).arg( 11 ) ).nextFeature( feature ); + QVERIFY( feature.isValid() ); + QCOMPARE( feature.attribute( QStringLiteral( "pk" ) ).toInt(), 11 ); + w.featureIdentified( feature ); + QCOMPARE( w.mComboBox->currentData( Qt::DisplayRole ).toInt(), 11 ); + + mLayer2->getFeatures( QStringLiteral( "pk = %1" ).arg( 10 ) ).nextFeature( feature ); + QVERIFY( feature.isValid() ); + QCOMPARE( feature.attribute( QStringLiteral( "pk" ) ).toInt(), 10 ); + w.featureIdentified( feature ); + QCOMPARE( w.mComboBox->currentData( Qt::DisplayRole ).toInt(), 10 ); + + mLayer1->rollBack(); +} + QGSTEST_MAIN( TestQgsRelationReferenceWidget ) #include "testqgsrelationreferencewidget.moc" diff --git a/tests/src/providers/CMakeLists.txt b/tests/src/providers/CMakeLists.txt index ef119115f9..86a6c297a6 100644 --- a/tests/src/providers/CMakeLists.txt +++ b/tests/src/providers/CMakeLists.txt @@ -11,6 +11,7 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src/core/geometry ${CMAKE_SOURCE_DIR}/src/core/mesh ${CMAKE_SOURCE_DIR}/src/core/metadata + ${CMAKE_SOURCE_DIR}/src/core/pal ${CMAKE_SOURCE_DIR}/src/core/raster ${CMAKE_SOURCE_DIR}/src/core/symbology ${CMAKE_SOURCE_DIR}/src/providers/wms diff --git a/tests/src/python/CMakeLists.txt b/tests/src/python/CMakeLists.txt index 9168be61f1..9f3289402e 100644 --- a/tests/src/python/CMakeLists.txt +++ b/tests/src/python/CMakeLists.txt @@ -17,6 +17,7 @@ ADD_PYTHON_TEST(PyQgsAggregateCalculator test_qgsaggregatecalculator.py) ADD_PYTHON_TEST(PyQgsAnnotation test_qgsannotation.py) ADD_PYTHON_TEST(PyQgsApplication test_qgsapplication.py) ADD_PYTHON_TEST(PyQgsAttributeFormEditorWidget test_qgsattributeformeditorwidget.py) +ADD_PYTHON_TEST(PyQgsAttributeForm test_qgsattributeform.py) ADD_PYTHON_TEST(PyQgsAttributeTableConfig test_qgsattributetableconfig.py) ADD_PYTHON_TEST(PyQgsAttributeTableModel test_qgsattributetablemodel.py) ADD_PYTHON_TEST(PyQgsAuthenticationSystem test_qgsauthsystem.py) @@ -26,6 +27,7 @@ ADD_PYTHON_TEST(PyQgsBox3d test_qgsbox3d.py) ADD_PYTHON_TEST(PyQgsCategorizedSymbolRenderer test_qgscategorizedsymbolrenderer.py) ADD_PYTHON_TEST(PyQgsCheckableComboBox test_qgscheckablecombobox.py) ADD_PYTHON_TEST(PyQgsColorButton test_qgscolorbutton.py) +ADD_PYTHON_TEST(PyQgsColorRamp test_qgscolorramp.py) ADD_PYTHON_TEST(PyQgsColorScheme test_qgscolorscheme.py) ADD_PYTHON_TEST(PyQgsColorSchemeRegistry test_qgscolorschemeregistry.py) ADD_PYTHON_TEST(PyQgsCoordinateFormatter test_qgscoordinateformatter.py) @@ -198,7 +200,6 @@ ADD_PYTHON_TEST(PyQgsTaskManager test_qgstaskmanager.py) ADD_PYTHON_TEST(PyQgsTextFormatWidget test_qgstextformatwidget.py) ADD_PYTHON_TEST(PyQgsTreeWidgetItem test_qgstreewidgetitem.py) ADD_PYTHON_TEST(PyQgsUnitTypes test_qgsunittypes.py) -ADD_PYTHON_TEST(PyQgsVectorColorRamp test_qgsvectorcolorramp.py) ADD_PYTHON_TEST(PyQgsVectorFileWriter test_qgsvectorfilewriter.py) ADD_PYTHON_TEST(PyQgsVectorFileWriterTask test_qgsvectorfilewritertask.py) ADD_PYTHON_TEST(PyQgsVectorLayer test_qgsvectorlayer.py) diff --git a/tests/src/python/featuresourcetestbase.py b/tests/src/python/featuresourcetestbase.py index 38134d39a5..859cd3193f 100644 --- a/tests/src/python/featuresourcetestbase.py +++ b/tests/src/python/featuresourcetestbase.py @@ -13,7 +13,7 @@ __author__ = 'Nyall Dawson' __date__ = '2017-05-25' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import ( QgsRectangle, diff --git a/tests/src/python/offlineditingtestbase.py b/tests/src/python/offlineditingtestbase.py index 74f9ba24e0..69ca908a68 100644 --- a/tests/src/python/offlineditingtestbase.py +++ b/tests/src/python/offlineditingtestbase.py @@ -25,7 +25,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '2016-06-30' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from time import sleep diff --git a/tests/src/python/provider_python.py b/tests/src/python/provider_python.py index d812aaa827..e538ded166 100644 --- a/tests/src/python/provider_python.py +++ b/tests/src/python/provider_python.py @@ -13,7 +13,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '2018-03-18' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import ( diff --git a/tests/src/python/providertestbase.py b/tests/src/python/providertestbase.py index 9b1f3927ba..9dafee30db 100644 --- a/tests/src/python/providertestbase.py +++ b/tests/src/python/providertestbase.py @@ -14,7 +14,7 @@ __author__ = 'Matthias Kuhn' __date__ = '2015-04-27' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import ( QgsApplication, diff --git a/tests/src/python/qgis_interface.py b/tests/src/python/qgis_interface.py index 6cbc987287..d5afa0b9ec 100644 --- a/tests/src/python/qgis_interface.py +++ b/tests/src/python/qgis_interface.py @@ -18,7 +18,7 @@ Contact : ole.moller.nielsen@gmail.com __author__ = 'tim@linfiniti.com' __version__ = '0.5.0' -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' __date__ = '10/01/2011' __copyright__ = ('Copyright (c) 2010 by Ivan Mincik, ivan.mincik@gista.sk and ' 'Copyright (c) 2011 German Carrillo, ' diff --git a/tests/src/python/qgis_local_server.py b/tests/src/python/qgis_local_server.py index 61717f2d02..b4399886b7 100644 --- a/tests/src/python/qgis_local_server.py +++ b/tests/src/python/qgis_local_server.py @@ -11,7 +11,7 @@ __author__ = 'Larry Shaffer' __date__ = '2014/02/11' __copyright__ = 'Copyright 2014, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import sys import os diff --git a/tests/src/python/qgis_wrapped_server.py b/tests/src/python/qgis_wrapped_server.py index 6f301f2744..1132248613 100644 --- a/tests/src/python/qgis_wrapped_server.py +++ b/tests/src/python/qgis_wrapped_server.py @@ -131,7 +131,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '05/15/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # Needed on Qt 5 so that the serialization of XML is consistent among all diff --git a/tests/src/python/test_authmanager_oauth2_ows.py b/tests/src/python/test_authmanager_oauth2_ows.py index 502bfb6096..58937056e6 100644 --- a/tests/src/python/test_authmanager_oauth2_ows.py +++ b/tests/src/python/test_authmanager_oauth2_ows.py @@ -30,7 +30,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '20/04/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from shutil import rmtree diff --git a/tests/src/python/test_authmanager_ogr.py b/tests/src/python/test_authmanager_ogr.py index ace6e1fc02..667ef8f86e 100644 --- a/tests/src/python/test_authmanager_ogr.py +++ b/tests/src/python/test_authmanager_ogr.py @@ -29,7 +29,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '14/11/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' qgis_app = start_app() diff --git a/tests/src/python/test_authmanager_ogr_postgres.py b/tests/src/python/test_authmanager_ogr_postgres.py index e2a600c688..f876a79806 100644 --- a/tests/src/python/test_authmanager_ogr_postgres.py +++ b/tests/src/python/test_authmanager_ogr_postgres.py @@ -55,7 +55,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '03/11/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' QGIS_POSTGRES_SERVER_PORT = os.environ.get('QGIS_POSTGRES_SERVER_PORT', '55432') QGIS_POSTGRES_EXECUTABLE_PATH = os.environ.get('QGIS_POSTGRES_EXECUTABLE_PATH', '/usr/lib/postgresql/9.4/bin') diff --git a/tests/src/python/test_authmanager_password_ows.py b/tests/src/python/test_authmanager_password_ows.py index 629dfbf4fc..a7a7e43e8e 100644 --- a/tests/src/python/test_authmanager_password_ows.py +++ b/tests/src/python/test_authmanager_password_ows.py @@ -30,7 +30,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '18/09/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from shutil import rmtree diff --git a/tests/src/python/test_authmanager_password_postgres.py b/tests/src/python/test_authmanager_password_postgres.py index 8c41784b74..24be5d5d2d 100644 --- a/tests/src/python/test_authmanager_password_postgres.py +++ b/tests/src/python/test_authmanager_password_postgres.py @@ -55,7 +55,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '25/10/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' QGIS_POSTGRES_SERVER_PORT = os.environ.get('QGIS_POSTGRES_SERVER_PORT', '55432') QGIS_POSTGRES_EXECUTABLE_PATH = os.environ.get('QGIS_POSTGRES_EXECUTABLE_PATH', '/usr/lib/postgresql/9.4/bin') diff --git a/tests/src/python/test_authmanager_pki_ows.py b/tests/src/python/test_authmanager_pki_ows.py index 380c599429..57000e0a05 100644 --- a/tests/src/python/test_authmanager_pki_ows.py +++ b/tests/src/python/test_authmanager_pki_ows.py @@ -27,7 +27,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '25/10/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from shutil import rmtree diff --git a/tests/src/python/test_authmanager_pki_postgres.py b/tests/src/python/test_authmanager_pki_postgres.py index 72bc2e333c..38d38bd59f 100644 --- a/tests/src/python/test_authmanager_pki_postgres.py +++ b/tests/src/python/test_authmanager_pki_postgres.py @@ -57,7 +57,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '25/10/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' QGIS_POSTGRES_SERVER_PORT = os.environ.get('QGIS_POSTGRES_SERVER_PORT', '55432') QGIS_POSTGRES_EXECUTABLE_PATH = os.environ.get('QGIS_POSTGRES_EXECUTABLE_PATH', '/usr/lib/postgresql/9.4/bin') diff --git a/tests/src/python/test_authmanager_proxy.py b/tests/src/python/test_authmanager_proxy.py index 51d6016346..86e11d8e12 100644 --- a/tests/src/python/test_authmanager_proxy.py +++ b/tests/src/python/test_authmanager_proxy.py @@ -25,7 +25,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '27/09/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' QGIS_AUTH_DB_DIR_PATH = tempfile.mkdtemp() diff --git a/tests/src/python/test_authsettingswidget.py b/tests/src/python/test_authsettingswidget.py index d84ae3c93d..ca92906938 100644 --- a/tests/src/python/test_authsettingswidget.py +++ b/tests/src/python/test_authsettingswidget.py @@ -28,7 +28,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '27/09/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' QGIS_AUTH_DB_DIR_PATH = tempfile.mkdtemp() diff --git a/tests/src/python/test_console.py b/tests/src/python/test_console.py index c68376a951..38c1aa12ee 100644 --- a/tests/src/python/test_console.py +++ b/tests/src/python/test_console.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '15.4.2016' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_core_additions.py b/tests/src/python/test_core_additions.py index 6b14d9c967..b2dd18ed6b 100644 --- a/tests/src/python/test_core_additions.py +++ b/tests/src/python/test_core_additions.py @@ -10,7 +10,7 @@ __author__ = 'Denis Rouzaud' __date__ = '15.5.2018' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_db_manager_gpkg.py b/tests/src/python/test_db_manager_gpkg.py index 09c402c2a5..c09cfdf67a 100644 --- a/tests/src/python/test_db_manager_gpkg.py +++ b/tests/src/python/test_db_manager_gpkg.py @@ -10,7 +10,7 @@ __author__ = 'Even Rouault' __date__ = '2016-10-17' __copyright__ = 'Copyright 2016, Even Rouault' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_db_manager_postgis.py b/tests/src/python/test_db_manager_postgis.py index 8b12d9130d..c867854f08 100644 --- a/tests/src/python/test_db_manager_postgis.py +++ b/tests/src/python/test_db_manager_postgis.py @@ -10,7 +10,7 @@ __author__ = 'Luigi Pirelli' __date__ = '2017-11-02' __copyright__ = 'Copyright 2017, Boundless Spatial Inc' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import shutil diff --git a/tests/src/python/test_db_manager_spatialite.py b/tests/src/python/test_db_manager_spatialite.py index 33729d81d9..f63d0ab06d 100644 --- a/tests/src/python/test_db_manager_spatialite.py +++ b/tests/src/python/test_db_manager_spatialite.py @@ -10,7 +10,7 @@ __author__ = 'Even Rouault' __date__ = '2016-10-17' __copyright__ = 'Copyright 2016, Even Rouault' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_layer_dependencies.py b/tests/src/python/test_layer_dependencies.py index 65967c9f91..c1a6ca470d 100644 --- a/tests/src/python/test_layer_dependencies.py +++ b/tests/src/python/test_layer_dependencies.py @@ -10,7 +10,7 @@ __author__ = 'Hugo Mercier' __date__ = '12/07/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_offline_editing_wfs.py b/tests/src/python/test_offline_editing_wfs.py index 985ba6f114..573291f1fb 100644 --- a/tests/src/python/test_offline_editing_wfs.py +++ b/tests/src/python/test_offline_editing_wfs.py @@ -26,7 +26,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '05/15/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_project_storage_postgres.py b/tests/src/python/test_project_storage_postgres.py index c6344298be..e3e9ab90b4 100644 --- a/tests/src/python/test_project_storage_postgres.py +++ b/tests/src/python/test_project_storage_postgres.py @@ -15,7 +15,7 @@ __author__ = 'Martin Dobias' __date__ = '2018-03-29' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import psycopg2 diff --git a/tests/src/python/test_provider_afs.py b/tests/src/python/test_provider_afs.py index 949cf50942..9f904ba32b 100644 --- a/tests/src/python/test_provider_afs.py +++ b/tests/src/python/test_provider_afs.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2018-02-16' __copyright__ = 'Copyright 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import hashlib import os @@ -129,7 +129,7 @@ class TestPyQgsAFSProvider(unittest.TestCase, ProviderTestCase): cls.source = cls.vl.dataProvider() with open(sanitize(endpoint, - '/query?f=json&objectIds=5,3,1,2,4&inSR=4326&outSR=4326&returnGeometry=true&outFields=OBJECTID,pk,cnt,name,name2,num_char&returnM=false&returnZ=false'), + '/query?f=json&objectIds=5,3,1,2,4&inSR=4326&outSR=4326&returnGeometry=true&outFields=*&returnM=false&returnZ=false'), 'wb') as f: f.write(""" { @@ -220,7 +220,7 @@ class TestPyQgsAFSProvider(unittest.TestCase, ProviderTestCase): ] }""".encode('UTF-8')) - with open(sanitize(endpoint, '/query?f=json&objectIds=5,3,1,2,4&inSR=4326&outSR=4326&returnGeometry=true&outFields=OBJECTID,pk,cnt,name,name2,num_char&returnM=false&returnZ=false&geometry=-71.123000,66.330000,-65.320000,78.300000&geometryType=esriGeometryEnvelope&spatialRel=esriSpatialRelEnvelopeIntersects'), 'wb') as f: + with open(sanitize(endpoint, '/query?f=json&objectIds=5,3,1,2,4&inSR=4326&outSR=4326&returnGeometry=true&outFields=*&returnM=false&returnZ=false&geometry=-71.123000,66.330000,-65.320000,78.300000&geometryType=esriGeometryEnvelope&spatialRel=esriSpatialRelEnvelopeIntersects'), 'wb') as f: f.write(""" { "displayFieldName": "name", @@ -311,7 +311,7 @@ class TestPyQgsAFSProvider(unittest.TestCase, ProviderTestCase): }""".encode('UTF-8')) with open(sanitize(endpoint, - '/query?f=json&objectIds=2,4&inSR=4326&outSR=4326&returnGeometry=true&outFields=OBJECTID,pk,cnt,name,name2,num_char&returnM=false&returnZ=false'), + '/query?f=json&objectIds=2,4&inSR=4326&outSR=4326&returnGeometry=true&outFields=*&returnM=false&returnZ=false'), 'wb') as f: f.write(""" { @@ -454,7 +454,7 @@ class TestPyQgsAFSProvider(unittest.TestCase, ProviderTestCase): } """.encode('UTF-8')) - with open(sanitize(endpoint, '/query?f=json&objectIds=5,3,1,2,4&inSR=4326&outSR=4326&returnGeometry=true&outFields=OBJECTID1,pk,cnt&returnM=false&returnZ=false'), 'wb') as f: + with open(sanitize(endpoint, '/query?f=json&objectIds=5,3,1,2,4&inSR=4326&outSR=4326&returnGeometry=true&outFields=*&returnM=false&returnZ=false'), 'wb') as f: f.write(""" { "displayFieldName": "LABEL", @@ -529,7 +529,7 @@ class TestPyQgsAFSProvider(unittest.TestCase, ProviderTestCase): self.assertTrue(vl.isValid()) with open(sanitize(endpoint, - '/query?f=json&objectIds=1,2&inSR=4326&outSR=4326&returnGeometry=true&outFields=OBJECTID,pk,dt&returnM=false&returnZ=false'), 'wb') as f: + '/query?f=json&objectIds=1,2&inSR=4326&outSR=4326&returnGeometry=true&outFields=*&returnM=false&returnZ=false'), 'wb') as f: f.write(""" { "displayFieldName": "name", @@ -782,7 +782,7 @@ class TestPyQgsAFSProvider(unittest.TestCase, ProviderTestCase): self.assertTrue(vl.isValid()) with open(sanitize(endpoint, - '/query?f=json&objectIds=1,2,3&inSR=4326&outSR=4326&returnGeometry=true&outFields=OBJECTID&returnM=false&returnZ=false'), 'wb') as f: + '/query?f=json&objectIds=1,2,3&inSR=4326&outSR=4326&returnGeometry=true&outFields=*&returnM=false&returnZ=false'), 'wb') as f: f.write(""" { "displayFieldName": "name", diff --git a/tests/src/python/test_provider_db2.py b/tests/src/python/test_provider_db2.py index d8432d7674..1a173d9e5e 100644 --- a/tests/src/python/test_provider_db2.py +++ b/tests/src/python/test_provider_db2.py @@ -10,7 +10,7 @@ __author__ = 'David Adler' __date__ = '2016-03-01' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_provider_gdal.py b/tests/src/python/test_provider_gdal.py index 269c07074e..a9302b889b 100644 --- a/tests/src/python/test_provider_gdal.py +++ b/tests/src/python/test_provider_gdal.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2018-30-10' __copyright__ = 'Copyright 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsProviderRegistry, QgsDataProvider) diff --git a/tests/src/python/test_provider_memory.py b/tests/src/python/test_provider_memory.py index 680f48647c..f49fa37483 100644 --- a/tests/src/python/test_provider_memory.py +++ b/tests/src/python/test_provider_memory.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '2015-04-23' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import ( diff --git a/tests/src/python/test_provider_mssql.py b/tests/src/python/test_provider_mssql.py index 0b55eaed5b..cfae5a4887 100644 --- a/tests/src/python/test_provider_mssql.py +++ b/tests/src/python/test_provider_mssql.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2015-12-07' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_provider_ogr.py b/tests/src/python/test_provider_ogr.py index ca28880d52..4ebde45eb2 100644 --- a/tests/src/python/test_provider_ogr.py +++ b/tests/src/python/test_provider_ogr.py @@ -10,7 +10,7 @@ __author__ = 'Even Rouault' __date__ = '2016-04-11' __copyright__ = 'Copyright 2016, Even Rouault' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import shutil diff --git a/tests/src/python/test_provider_ogr_gpkg.py b/tests/src/python/test_provider_ogr_gpkg.py index 369887577d..58922b95fa 100644 --- a/tests/src/python/test_provider_ogr_gpkg.py +++ b/tests/src/python/test_provider_ogr_gpkg.py @@ -10,7 +10,7 @@ __author__ = 'Even Rouault' __date__ = '2016-04-21' __copyright__ = 'Copyright 2016, Even Rouault' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re diff --git a/tests/src/python/test_provider_ogr_sqlite.py b/tests/src/python/test_provider_ogr_sqlite.py index 295017c450..f804a03b7a 100644 --- a/tests/src/python/test_provider_ogr_sqlite.py +++ b/tests/src/python/test_provider_ogr_sqlite.py @@ -10,7 +10,7 @@ __author__ = 'Even Rouault' __date__ = '2016-06-01' __copyright__ = 'Copyright 2016, Even Rouault' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_provider_oracle.py b/tests/src/python/test_provider_oracle.py index 06f41849f4..abccb32424 100644 --- a/tests/src/python/test_provider_oracle.py +++ b/tests/src/python/test_provider_oracle.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2016-07-06' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_provider_postgres.py b/tests/src/python/test_provider_postgres.py index 376d4bf957..f72fce962f 100644 --- a/tests/src/python/test_provider_postgres.py +++ b/tests/src/python/test_provider_postgres.py @@ -19,7 +19,7 @@ __author__ = 'Matthias Kuhn' __date__ = '2015-04-23' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import psycopg2 diff --git a/tests/src/python/test_provider_python.py b/tests/src/python/test_provider_python.py index 3b7ed30cf4..320720f7e4 100644 --- a/tests/src/python/test_provider_python.py +++ b/tests/src/python/test_provider_python.py @@ -10,7 +10,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '2018-03-18' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # -*- coding: utf-8 -*- """QGIS Unit tests for the py layerprovider. @@ -24,7 +24,7 @@ __author__ = 'Matthias Kuhn' __date__ = '2015-04-23' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_provider_shapefile.py b/tests/src/python/test_provider_shapefile.py index 493ccb731c..f714e2d8cb 100644 --- a/tests/src/python/test_provider_shapefile.py +++ b/tests/src/python/test_provider_shapefile.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '2015-04-23' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import re @@ -21,7 +21,7 @@ import osgeo.gdal import osgeo.ogr import sys -from qgis.core import QgsSettings, QgsFeature, QgsField, QgsGeometry, QgsVectorLayer, QgsFeatureRequest, QgsVectorDataProvider +from qgis.core import QgsSettings, QgsFeature, QgsField, QgsGeometry, QgsVectorLayer, QgsFeatureRequest, QgsVectorDataProvider, QgsWkbTypes from qgis.PyQt.QtCore import QVariant from qgis.testing import start_app, unittest from utilities import unitTestDataPath @@ -703,6 +703,18 @@ class TestPyQgsShapefileProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(_lessdigits(subSet_vl.extent().toString()), filtered_extent) self.assertNotEqual(_lessdigits(subSet_vl.extent().toString()), unfiltered_extent) + def testMultipatch(self): + """Check that we can deal with multipatch shapefiles, returned natively by OGR as GeometryCollection of TIN""" + + testPath = TEST_DATA_DIR + '/' + 'multipatch.shp' + vl = QgsVectorLayer(testPath, 'test', 'ogr') + self.assertTrue(vl.isValid()) + self.assertEqual(vl.wkbType(), QgsWkbTypes.MultiPolygonZ) + f = next(vl.getFeatures()) + self.assertEqual(f.geometry().wkbType(), QgsWkbTypes.MultiPolygonZ) + self.assertEqual(f.geometry().constGet().asWkt(), + 'MultiPolygonZ (((0 0 0, 0 1 0, 1 1 0, 0 0 0)),((0 0 0, 1 1 0, 1 0 0, 0 0 0)),((0 0 0, 0 -1 0, 1 -1 0, 0 0 0)),((0 0 0, 1 -1 0, 1 0 0, 0 0 0)))') + if __name__ == '__main__': unittest.main() diff --git a/tests/src/python/test_provider_spatialite.py b/tests/src/python/test_provider_spatialite.py index 84f6744b37..7cf1b4df65 100644 --- a/tests/src/python/test_provider_spatialite.py +++ b/tests/src/python/test_provider_spatialite.py @@ -10,7 +10,7 @@ __author__ = 'Vincent Mora' __date__ = '09/07/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_provider_tabfile.py b/tests/src/python/test_provider_tabfile.py index 3d4e2dc928..98ea887704 100644 --- a/tests/src/python/test_provider_tabfile.py +++ b/tests/src/python/test_provider_tabfile.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2016-01-28' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import tempfile diff --git a/tests/src/python/test_provider_virtual.py b/tests/src/python/test_provider_virtual.py index eaab23150b..5f46758931 100644 --- a/tests/src/python/test_provider_virtual.py +++ b/tests/src/python/test_provider_virtual.py @@ -10,7 +10,7 @@ __author__ = 'Hugo Mercier' __date__ = '26/11/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_provider_wfs.py b/tests/src/python/test_provider_wfs.py index 2c0c851bf6..6d873e1c56 100644 --- a/tests/src/python/test_provider_wfs.py +++ b/tests/src/python/test_provider_wfs.py @@ -10,7 +10,7 @@ __author__ = 'Even Rouault' __date__ = '2016-03-25' __copyright__ = 'Copyright 2016, Even Rouault' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import hashlib import os @@ -109,7 +109,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml/3.2"/> @@ -140,7 +140,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): assert cls.vl.isValid() cls.source = cls.vl.dataProvider() - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -201,7 +201,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:member> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&RESULTTYPE=hits'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&RESULTTYPE=hits'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -210,7 +210,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): numberMatched="5" numberReturned="0" timeStamp="2016-03-25T14:51:48.998Z"> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> <fes:And> <fes:PropertyIsGreaterThan> <fes:ValueReference>cnt</fes:ValueReference> @@ -230,7 +230,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): numberMatched="3" numberReturned="0" timeStamp="2016-03-25T14:51:48.998Z"> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> <fes:And> <fes:PropertyIsGreaterThan> <fes:ValueReference>cnt</fes:ValueReference> @@ -282,7 +282,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:member> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> <fes:And> <fes:PropertyIsGreaterThan> <fes:ValueReference>cnt</fes:ValueReference> @@ -302,7 +302,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): numberMatched="2" numberReturned="0" timeStamp="2016-03-25T14:51:48.998Z"> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> <fes:And> <fes:PropertyIsGreaterThan> <fes:ValueReference>cnt</fes:ValueReference> @@ -343,7 +343,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:member> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> <fes:PropertyIsEqualTo> <fes:ValueReference>name</fes:ValueReference> <fes:Literal>Apple</fes:Literal> @@ -357,7 +357,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): numberMatched="1" numberReturned="0" timeStamp="2016-03-25T14:51:48.998Z"> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> <fes:PropertyIsEqualTo> <fes:ValueReference>name</fes:ValueReference> <fes:Literal>Apple</fes:Literal> @@ -383,7 +383,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:member> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> <fes:PropertyIsEqualTo> <fes:ValueReference>name</fes:ValueReference> <fes:Literal>AppleBearOrangePear</fes:Literal> @@ -397,7 +397,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): numberMatched="0" numberReturned="0" timeStamp="2016-03-25T14:51:48.998Z"> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> <fes:PropertyIsEqualTo> <fes:ValueReference>name</fes:ValueReference> <fes:Literal>AppleBearOrangePear</fes:Literal> @@ -1030,7 +1030,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml/3.2"/> @@ -1048,7 +1048,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </xsd:schema> """.encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1067,7 +1067,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): self.assertTrue(vl.isValid()) self.assertEqual(vl.wkbType(), QgsWkbTypes.Point) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=1&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=1&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1081,7 +1081,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:member> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=2&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=2&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1093,9 +1093,9 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(values, [1, 2]) # Suppress GetFeature responses to demonstrate that the cache is used - os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) - os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=1&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) - os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=2&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) + os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) + os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=1&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) + os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=2&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) values = [f['id'] for f in vl.getFeatures()] self.assertEqual(values, [1, 2]) @@ -1111,7 +1111,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): vl.dataProvider().reloadData() # Hits working - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&RESULTTYPE=hits'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&RESULTTYPE=hits'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1154,7 +1154,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml/3.2"/> @@ -1177,7 +1177,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): self.assertTrue(vl.isValid()) self.assertEqual(vl.wkbType(), QgsWkbTypes.Point) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=0&COUNT=2&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=0&COUNT=2&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1195,7 +1195,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:member> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=2&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=2&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1212,15 +1212,15 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): values = [f['id'] for f in vl.getFeatures()] self.assertEqual(values, [1, 2, 3]) - os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=0&COUNT=2&SRSNAME=urn:ogc:def:crs:EPSG::4326')) - os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=2&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) + os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=0&COUNT=2&SRSNAME=urn:ogc:def:crs:EPSG::4326')) + os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=2&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) # user maxNumFeatures < user pageSize < server pagesize vl = QgsVectorLayer("url='http://" + endpoint + "' typename='my:typename' maxNumFeatures='1' pageSize='2'", 'test', 'WFS') self.assertTrue(vl.isValid()) self.assertEqual(vl.wkbType(), QgsWkbTypes.Point) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1237,14 +1237,14 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): values = [f['id'] for f in vl.getFeatures()] self.assertEqual(values, [1]) - os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) + os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326')) # user user pageSize > server pagesize vl = QgsVectorLayer("url='http://" + endpoint + "' typename='my:typename' pageSize='100'", 'test', 'WFS') self.assertTrue(vl.isValid()) self.assertEqual(vl.wkbType(), QgsWkbTypes.Point) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=0&COUNT=10&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=0&COUNT=10&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1261,13 +1261,13 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): values = [f['id'] for f in vl.getFeatures()] self.assertEqual(values, [1]) - os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=0&COUNT=10&SRSNAME=urn:ogc:def:crs:EPSG::4326')) + os.unlink(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=0&COUNT=10&SRSNAME=urn:ogc:def:crs:EPSG::4326')) vl = QgsVectorLayer("url='http://" + endpoint + "' typename='my:typename' pagingEnabled='false' maxNumFeatures='3'", 'test', 'WFS') self.assertTrue(vl.isValid()) self.assertEqual(vl.wkbType(), QgsWkbTypes.Point) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&COUNT=3&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&COUNT=3&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1609,7 +1609,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml/3.2"/> @@ -1626,7 +1626,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </xsd:schema> """.encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -1888,10 +1888,10 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): <xsd:element name="othertypename" substitutionGroup="gml:_Feature" type="my:othertypenameType"/> </xsd:schema> """ - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename,my:othertypename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename,my:othertypename&TYPENAME=my:typename,my:othertypename'), 'wb') as f: f.write(schema.encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename,my:othertypename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename,my:othertypename&TYPENAME=my:typename,my:othertypename&SRSNAME=urn:ogc:def:crs:EPSG::4326&FILTER=<fes:Filter xmlns:fes="http://www.opengis.net/fes/2.0"> <fes:And> <fes:PropertyIsEqualTo> <fes:ValueReference>my:typename/id</fes:ValueReference> @@ -1954,7 +1954,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): # main table not appearing in first - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:othertypename,my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:othertypename,my:typename&TYPENAME=my:othertypename,my:typename'), 'wb') as f: f.write(schema.encode('UTF-8')) vl = QgsVectorLayer("url='http://" + endpoint + "' typename='my:typename' version='2.0.0' sql=SELECT * FROM othertypename o, typename WHERE typename.id = o.main_id AND typename.id > 0 ORDER BY typename.id DESC", 'test', 'WFS') @@ -2004,7 +2004,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): self.assertEqual(len(fields), 1, fields) self.assertEqual(fields[0].name(), 'id') - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(schema.encode('UTF-8')) # Duplicate fields @@ -2208,7 +2208,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): f.write(schema.encode('UTF-8')) with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=1.1.0&TYPENAME=my:typename'), 'wb') as f: f.write(schema.encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(schema.encode('UTF-8')) # Existing function and validation enabled @@ -2273,7 +2273,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml"/> @@ -2293,7 +2293,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </xsd:schema> """.encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326"""), 'wb') as f: + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326"""), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -2390,7 +2390,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml"/> @@ -2408,7 +2408,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </xsd:schema> """.encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326"""), 'wb') as f: + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326"""), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -2438,7 +2438,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): self.assertTrue(vl.isValid()) # First request that will be attempted - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&BBOX=-0.125,-0.125,1.125,1.125,urn:ogc:def:crs:EPSG::4326"""), 'wb') as f: + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::4326&BBOX=-0.125,-0.125,1.125,1.125,urn:ogc:def:crs:EPSG::4326"""), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -2447,7 +2447,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:FeatureCollection>""".encode('UTF-8')) # And fallback - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&COUNT=1"""), 'wb') as f: + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&COUNT=1"""), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -2498,7 +2498,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml"/> @@ -2516,7 +2516,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </xsd:schema> """.encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=EPSG:32631"""), 'wb') as f: + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=0&COUNT=1&SRSNAME=EPSG:32631"""), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -2531,7 +2531,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:FeatureCollection>""".encode('UTF-8')) # Simulate improper paging support by returning same result set whatever the STARTINDEX is - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&STARTINDEX=1&COUNT=1&SRSNAME=EPSG:32631"""), 'wb') as f: + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&STARTINDEX=1&COUNT=1&SRSNAME=EPSG:32631"""), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -2545,7 +2545,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:member> </wfs:FeatureCollection>""".encode('UTF-8')) - with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=EPSG:32631"""), 'wb') as f: + with open(sanitize(endpoint, """?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=EPSG:32631"""), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -2794,7 +2794,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml/3.2"/> @@ -2870,7 +2870,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".format(endpoint=endpoint).encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml/3.2"/> @@ -2986,7 +2986,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&NAMESPACES=xmlns(my,http://my)&TYPENAME=my:typename&NAMESPACE=xmlns(my,http://my)'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml"/> @@ -3007,7 +3007,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): self.assertTrue(vl.isValid()) self.assertEqual(len(vl.fields()), 1) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::32631&NAMESPACES=xmlns(my,http://my)'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename&SRSNAME=urn:ogc:def:crs:EPSG::32631&NAMESPACES=xmlns(my,http://my)&NAMESPACE=xmlns(my,http://my)'), 'wb') as f: f.write(""" <wfs:FeatureCollection xmlns:wfs="http://www.opengis.net/wfs/2.0" @@ -3318,7 +3318,7 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=EC422'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=EC422&TYPENAME=EC422'), 'wb') as f: f.write("""<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml/3.2" @@ -3494,10 +3494,10 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): </wfs:member> </wfs:FeatureCollection>""" - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=EC422&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=EC422&TYPENAME=EC422&COUNT=1&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(feature_content.encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=EC422&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=EC422&TYPENAME=EC422&SRSNAME=urn:ogc:def:crs:EPSG::4326'), 'wb') as f: f.write(feature_content.encode('UTF-8')) vl = QgsVectorLayer("url='http://" + endpoint + "' version='2.0.0' typename='EC422'", 'test', 'WFS') @@ -3509,58 +3509,6 @@ class TestPyQgsWFSProvider(unittest.TestCase, ProviderTestCase): geom_string = re.sub(r'\.\d+', '', geom_string)[:100] self.assertEqual(geom_string, "LineString (9540051 5997366, 9539934 5997127, 9539822 5996862, 9539504 5996097, 9539529 5996093, 953") - def testWfs20DescribeFeatureTypePluralForm(self): - """Specs are inconsistent and some 2.0 servers use the TYPENAMES plural form""" - - endpoint = self.__class__.basetestpath + '/fake_qgis_http_endpoint_WFS_2.0_describe_typenames' - - with open(sanitize(endpoint, '?SERVICE=WFS?REQUEST=GetCapabilities?ACCEPTVERSIONS=2.0.0,1.1.0,1.0.0'), 'wb') as f: - f.write(""" -<wfs:WFS_Capabilities version="2.0.0" xmlns="http://www.opengis.net/wfs/2.0" xmlns:wfs="http://www.opengis.net/wfs/2.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://schemas.opengis.net/gml/3.2" xmlns:fes="http://www.opengis.net/fes/2.0"> - <FeatureTypeList> - <FeatureType> - <Name>my:typename</Name> - <DefaultCRS>urn:ogc:def:crs:EPSG::4326</DefaultCRS> - </FeatureType> - </FeatureTypeList> -</wfs:WFS_Capabilities>""".encode('UTF-8')) - - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: - f.write(""" -<?xml version="1.0"?> -<ExceptionReport - version="2.0.0" - xmlns="http://www.opengis.net/ows/1.1" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.opengis.net/ows/1.1 -http://schemas.opengis.net/ows/1.1.0/owsAll.xsd"> - <Exception exceptionCode="MissingParameterValue" locator=""> - <ExceptionText><![CDATA[Missing typeNames parameter]]></ExceptionText> - </Exception> -</ExceptionReport -""".encode('UTF-8')) - - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename'), 'wb') as f: - f.write(""" -<xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> - <xsd:import namespace="http://www.opengis.net/gml/3.2"/> - <xsd:complexType name="typenameType"> - <xsd:complexContent> - <xsd:extension base="gml:AbstractFeatureType"> - <xsd:sequence> - <xsd:element maxOccurs="1" minOccurs="0" name="geometryProperty" nillable="true" type="gml:PointPropertyType"/> - </xsd:sequence> - </xsd:extension> - </xsd:complexContent> - </xsd:complexType> - <xsd:element name="typename" substitutionGroup="gml:_Feature" type="my:typenameType"/> -</xsd:schema> -""".encode('UTF-8')) - - # Create test layer - vl = QgsVectorLayer("url='http://" + endpoint + "' typename='my:typename'", 'test', 'WFS') - self.assertTrue(vl.isValid()) - def testDescribeFeatureTypeWithSingleInclude(self): """Test DescribeFeatureType response which has a single <include> child node""" @@ -3577,7 +3525,7 @@ http://schemas.opengis.net/ows/1.1.0/owsAll.xsd"> </FeatureTypeList> </wfs:WFS_Capabilities>""".encode('UTF-8')) - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write((""" <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <include schemaLocation="%s"/> @@ -4020,6 +3968,100 @@ http://schemas.opengis.net/ows/1.1.0/owsAll.xsd"> req.setExpressionContext(ctx) qgis_feat = next(vl.getFeatures(req)) + def testWFSFieldWithSameNameButDifferentCase(self): + """Test a layer with field foo and FOO """ + + endpoint = self.__class__.basetestpath + '/fake_qgis_http_endpoint_FieldWithSameNameButDifferentCase' + + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetCapabilities&VERSION=1.0.0'), 'wb') as f: + f.write(""" +<WFS_Capabilities version="1.0.0" xmlns="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc"> + <FeatureTypeList> + <FeatureType> + <Name>my:typename</Name> + <Title>Title</Title> + <Abstract>Abstract</Abstract> + <SRS>EPSG:32631</SRS> + <!-- in WFS 1.0, LatLongBoundingBox is in SRS units, not necessarily lat/long... --> + <LatLongBoundingBox minx="400000" miny="5400000" maxx="450000" maxy="5500000"/> + </FeatureType> + </FeatureTypeList> +</WFS_Capabilities>""".encode('UTF-8')) + + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=1.0.0&TYPENAME=my:typename'), 'wb') as f: + f.write(""" +<xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> + <xsd:import namespace="http://www.opengis.net/gml"/> + <xsd:complexType name="typenameType"> + <xsd:complexContent> + <xsd:extension base="gml:AbstractFeatureType"> + <xsd:sequence> + <xsd:element maxOccurs="1" minOccurs="0" name="foo" nillable="true" type="xsd:int"/> + <xsd:element maxOccurs="1" minOccurs="0" name="FOO" nillable="true" type="xsd:int"/> + <xsd:element maxOccurs="1" minOccurs="0" name="FOO2" nillable="true" type="xsd:int"/> + <xsd:element maxOccurs="1" minOccurs="0" name="geometry" nillable="true" type="gml:PointPropertyType"/> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + <xsd:element name="typename" substitutionGroup="gml:_Feature" type="my:typenameType"/> +</xsd:schema> +""".encode('UTF-8')) + + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.0.0&TYPENAME=my:typename&SRSNAME=EPSG:32631'), 'wb') as f: + f.write(""" + <wfs:FeatureCollection + xmlns:wfs="http://www.opengis.net/wfs" + xmlns:gml="http://www.opengis.net/gml" + xmlns:my="http://my"> + <gml:boundedBy><gml:null>unknown</gml:null></gml:boundedBy> + <gml:featureMember> + <my:typename fid="typename.0"> + <my:foo>1</my:foo> + <my:FOO>2</my:FOO> + <my:FOO2>3</my:FOO2> + </my:typename> + </gml:featureMember> + </wfs:FeatureCollection>""".encode('UTF-8')) + + vl = QgsVectorLayer("url='http://" + endpoint + "' typename='my:typename' version='1.0.0'", 'test', 'WFS') + self.assertTrue(vl.isValid()) + self.assertEqual(len(vl.fields()), 3) + + values = [f['foo'] for f in vl.getFeatures()] + self.assertEqual(values, [1]) + + values = [f['FOO'] for f in vl.getFeatures()] + self.assertEqual(values, [2]) + + values = [f['FOO2'] for f in vl.getFeatures()] + self.assertEqual(values, [3]) + + # Also test that on file iterator works + os.environ['QGIS_WFS_ITERATOR_TRANSFER_THRESHOLD'] = '0' + + vl = QgsVectorLayer("url='http://" + endpoint + "' typename='my:typename' version='1.0.0'", 'test', 'WFS') + values = [f['foo'] for f in vl.getFeatures()] + self.assertEqual(values, [1]) + + values = [f['FOO'] for f in vl.getFeatures()] + self.assertEqual(values, [2]) + + values = [f['FOO2'] for f in vl.getFeatures()] + self.assertEqual(values, [3]) + + del os.environ['QGIS_WFS_ITERATOR_TRANSFER_THRESHOLD'] + + vl = QgsVectorLayer("url='http://" + endpoint + "' typename='my:typename' version='1.0.0'", 'test', 'WFS') + request = QgsFeatureRequest().setFilterExpression('FOO = 2') + values = [f['FOO'] for f in vl.getFeatures(request)] + self.assertEqual(values, [2]) + + vl = QgsVectorLayer("url='http://" + endpoint + "' typename='my:typename' version='1.0.0'", 'test', 'WFS') + request = QgsFeatureRequest().setSubsetOfAttributes(['FOO'], vl.fields()) + values = [f['FOO'] for f in vl.getFeatures(request)] + self.assertEqual(values, [2]) + if __name__ == '__main__': unittest.main() diff --git a/tests/src/python/test_provider_wfs_gui.py b/tests/src/python/test_provider_wfs_gui.py index 6404790702..1b851432d0 100644 --- a/tests/src/python/test_provider_wfs_gui.py +++ b/tests/src/python/test_provider_wfs_gui.py @@ -10,7 +10,7 @@ __author__ = 'Even Rouault' __date__ = '2016-03-25' __copyright__ = 'Copyright 2016, Even Rouault' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import hashlib import sys @@ -219,7 +219,7 @@ class TestPyQgsWFSProviderGUI(unittest.TestCase): self.addWfsLayer_layer_name = None main_dialog.addVectorLayer.connect(self.slotAddWfsLayer) QTest.mouseClick(buttonAdd, Qt.LeftButton) - self.assertEqual(self.addWfsLayer_uri, ' restrictToRequestBBOX=\'1\' srsname=\'EPSG:4326\' typename=\'my:typename\' url=\'' + "http://" + expected_endpoint + '\' version=\'auto\' table="" sql=') + self.assertEqual(self.addWfsLayer_uri, ' pagingEnabled=\'true\' restrictToRequestBBOX=\'1\' srsname=\'EPSG:4326\' typename=\'my:typename\' url=\'' + "http://" + expected_endpoint + '\' version=\'auto\' table="" sql=') self.assertEqual(self.addWfsLayer_layer_name, 'my:typename') # Click on Build Query @@ -235,7 +235,7 @@ class TestPyQgsWFSProviderGUI(unittest.TestCase): # Click again but with valid DescribeFeatureType - with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAME=my:typename'), 'wb') as f: + with open(sanitize(endpoint, '?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=my:typename&TYPENAME=my:typename'), 'wb') as f: f.write(""" <xsd:schema xmlns:my="http://my" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://my"> <xsd:import namespace="http://www.opengis.net/gml/3.2"/> @@ -292,7 +292,7 @@ class TestPyQgsWFSProviderGUI(unittest.TestCase): self.addWfsLayer_layer_name = None main_dialog.addVectorLayer.connect(self.slotAddWfsLayer) QTest.mouseClick(buttonAdd, Qt.LeftButton) - self.assertEqual(self.addWfsLayer_uri, ' restrictToRequestBBOX=\'1\' srsname=\'EPSG:4326\' typename=\'my:typename\' url=\'' + "http://" + expected_endpoint + '\' version=\'auto\' table="" sql=SELECT * FROM typename WHERE 1 = 1') + self.assertEqual(self.addWfsLayer_uri, ' pagingEnabled=\'true\' restrictToRequestBBOX=\'1\' srsname=\'EPSG:4326\' typename=\'my:typename\' url=\'' + "http://" + expected_endpoint + '\' version=\'auto\' table="" sql=SELECT * FROM typename WHERE 1 = 1') self.assertEqual(self.addWfsLayer_layer_name, 'my:typename') # main_dialog.setProperty("hideDialogs", None) diff --git a/tests/src/python/test_python_repr.py b/tests/src/python/test_python_repr.py index 0813c6813c..d9e323c3f3 100644 --- a/tests/src/python/test_python_repr.py +++ b/tests/src/python/test_python_repr.py @@ -10,7 +10,7 @@ __author__ = 'Denis Rouzaud' __date__ = '05.06.2018' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgis_local_server.py b/tests/src/python/test_qgis_local_server.py index 7dbe49874a..cdb8cfb91e 100644 --- a/tests/src/python/test_qgis_local_server.py +++ b/tests/src/python/test_qgis_local_server.py @@ -17,7 +17,7 @@ __author__ = 'Larry Shaffer' __date__ = '2014/02/16' __copyright__ = 'Copyright 2014, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import sys diff --git a/tests/src/python/test_qgsactionmanager.py b/tests/src/python/test_qgsactionmanager.py index 92b66dbeec..6605051695 100644 --- a/tests/src/python/test_qgsactionmanager.py +++ b/tests/src/python/test_qgsactionmanager.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '28/05/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA switch sip api diff --git a/tests/src/python/test_qgsaggregatecalculator.py b/tests/src/python/test_qgsaggregatecalculator.py index 286fff7ee9..6f7f427758 100644 --- a/tests/src/python/test_qgsaggregatecalculator.py +++ b/tests/src/python/test_qgsaggregatecalculator.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '16/05/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsannotation.py b/tests/src/python/test_qgsannotation.py index e6c94fcb67..1896555189 100644 --- a/tests/src/python/test_qgsannotation.py +++ b/tests/src/python/test_qgsannotation.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '24/1/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsapplication.py b/tests/src/python/test_qgsapplication.py index e8316c0e5b..44cb821391 100644 --- a/tests/src/python/test_qgsapplication.py +++ b/tests/src/python/test_qgsapplication.py @@ -9,7 +9,7 @@ __author__ = 'Tim Sutton (tim@linfiniti.com)' __date__ = '20/01/2011' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA from qgis.testing import start_app, unittest diff --git a/tests/src/python/test_qgsappstartup.py b/tests/src/python/test_qgsappstartup.py index c8ddfa476b..18933f827f 100644 --- a/tests/src/python/test_qgsappstartup.py +++ b/tests/src/python/test_qgsappstartup.py @@ -12,7 +12,7 @@ __author__ = 'Hugo Mercier (hugo.mercier@oslandia.com)' __date__ = '17/07/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import sys import os diff --git a/tests/src/python/test_qgsarrowsymbollayer.py b/tests/src/python/test_qgsarrowsymbollayer.py index 7501df1eb8..73d5d64647 100644 --- a/tests/src/python/test_qgsarrowsymbollayer.py +++ b/tests/src/python/test_qgsarrowsymbollayer.py @@ -21,7 +21,7 @@ __author__ = 'Hugo Mercier' __date__ = 'March 2016' __copyright__ = '(C) 2016, Hugo Mercier' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsattributeform.py b/tests/src/python/test_qgsattributeform.py new file mode 100644 index 0000000000..be7f69da39 --- /dev/null +++ b/tests/src/python/test_qgsattributeform.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +"""QGIS Unit tests for the attribute form + + +Run with ctest -V -R PyQgsAttributeForm + +.. note:: This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +""" +__author__ = 'Alessandro Pasotti' +__date__ = '2019-06-06' +__copyright__ = 'Copyright 2019, The QGIS Project' + + +from qgis.testing import start_app, unittest +from qgis.core import ( + QgsFields, + QgsVectorLayer, + QgsFeature, + QgsEditorWidgetSetup, + QgsEditFormConfig, + QgsAttributeEditorElement, +) +from qgis.gui import ( + QgsAttributeForm, + QgsGui, + QgsEditorWidgetWrapper, +) + + +QGISAPP = start_app() + + +class TestQgsAttributeForm(unittest.TestCase): + + @classmethod + def setUpClass(cls): + QgsGui.editorWidgetRegistry().initEditors() + + @classmethod + def createLayerWithOnePoint(cls, field_type): + layer = QgsVectorLayer("Point?field=fld:%s" % field_type, + "vl", "memory") + pr = layer.dataProvider() + f = QgsFeature() + assert pr.addFeatures([f]) + assert layer.featureCount() == 1 + return layer + + @classmethod + def createFormWithDuplicateWidget(cls, vl, field_type, widget_type): + """Creates a form with two identical widgets for the same field""" + + config = vl.editFormConfig() + config.setLayout(QgsEditFormConfig.TabLayout) + element = config.tabs()[0] + element2 = element.clone(element) + config.addTab(element2) + vl.setEditFormConfig(config) + vl.setEditorWidgetSetup(0, QgsEditorWidgetSetup(widget_type, {})) + form = QgsAttributeForm(vl, next(vl.getFeatures())) + assert (form.editable()) + return form + + @classmethod + def get_widgets_for_field(cls, vl): + """Get compatible widget names""" + + return [k for k, v in QgsGui.editorWidgetRegistry().factories().items() if v.supportsField(vl, 0)] + + @classmethod + def checkForm(cls, field_type, value): + """Creates a vector layer and an associated form with two identical widgets for the same field and test it with NULL and after setting a value + """ + + vl = cls.createLayerWithOnePoint(field_type) + assert (vl.startEditing()) + for widget_type in cls.get_widgets_for_field(vl): + form = cls.createFormWithDuplicateWidget(vl, field_type, widget_type) + vl.changeAttributeValue(1, 0, value) + form.setFeature(next(vl.getFeatures())) + + def test_duplicated_widgets(self): + """ + Note: this crashed two times for datetime (see GH #29937): + + - first crash with initial NULL values, because widget's clear() triggered changed() + - second crash when setting a value, because setDateTime() triggered changed() + + There are no assertions in this test because we are looking for a crash. + """ + + field_types = { + 'integer': 123, + 'double': 123.45, + 'string': 'lorem ipsum', + 'date': '2019-01-01', + 'time': '12:12:12', + 'datetime': '2019-01-01', + 'int2': 123, + 'int4': 123, + 'int8': 123, + 'numeric': 123.45, + 'decimal': 123.45, + 'real': 123.45, + 'double precision': 123.45, + 'text': 'lorem ipsum', + 'bool': True, + #'binary' + } + + for field_type, value in field_types.items(): + self.checkForm(field_type, value) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/src/python/test_qgsattributeformeditorwidget.py b/tests/src/python/test_qgsattributeformeditorwidget.py index 35488f231c..c446e1e59e 100644 --- a/tests/src/python/test_qgsattributeformeditorwidget.py +++ b/tests/src/python/test_qgsattributeformeditorwidget.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2016-05' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsattributetableconfig.py b/tests/src/python/test_qgsattributetableconfig.py index 22b2e76280..ac66761848 100644 --- a/tests/src/python/test_qgsattributetableconfig.py +++ b/tests/src/python/test_qgsattributetableconfig.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '07/06/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsattributetablemodel.py b/tests/src/python/test_qgsattributetablemodel.py index aa442b2c44..d205e60063 100644 --- a/tests/src/python/test_qgsattributetablemodel.py +++ b/tests/src/python/test_qgsattributetablemodel.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '27/05/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.gui import ( QgsAttributeTableModel, diff --git a/tests/src/python/test_qgsauthsystem.py b/tests/src/python/test_qgsauthsystem.py index 5b5c4e0c13..74860cbb22 100644 --- a/tests/src/python/test_qgsauthsystem.py +++ b/tests/src/python/test_qgsauthsystem.py @@ -12,7 +12,7 @@ __author__ = 'Larry Shaffer' __date__ = '2014/11/05' __copyright__ = 'Copyright 2014, Boundless Spatial, Inc.' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import tempfile diff --git a/tests/src/python/test_qgsauxiliarystorage.py b/tests/src/python/test_qgsauxiliarystorage.py index 07eae67eb3..df2c35a65b 100644 --- a/tests/src/python/test_qgsauxiliarystorage.py +++ b/tests/src/python/test_qgsauxiliarystorage.py @@ -10,7 +10,7 @@ __author__ = 'Paul Blottiere' __date__ = '06/09/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsbearingutils.py b/tests/src/python/test_qgsbearingutils.py index 5d398ec6ea..8f76a52d9a 100644 --- a/tests/src/python/test_qgsbearingutils.py +++ b/tests/src/python/test_qgsbearingutils.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/10/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA switch sip api diff --git a/tests/src/python/test_qgsblendmodes.py b/tests/src/python/test_qgsblendmodes.py index 74f451ba8e..968e43fa57 100644 --- a/tests/src/python/test_qgsblendmodes.py +++ b/tests/src/python/test_qgsblendmodes.py @@ -21,7 +21,7 @@ __author__ = 'Nyall Dawson' __date__ = 'May 2013' __copyright__ = '(C) 2013, Nyall Dawson, Massimo Endrighi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsbox3d.py b/tests/src/python/test_qgsbox3d.py index 6d6401408f..51f2f63e58 100644 --- a/tests/src/python/test_qgsbox3d.py +++ b/tests/src/python/test_qgsbox3d.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '11/04/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgscategorizedsymbolrenderer.py b/tests/src/python/test_qgscategorizedsymbolrenderer.py index 6bc27cfa10..559f0a8898 100644 --- a/tests/src/python/test_qgscategorizedsymbolrenderer.py +++ b/tests/src/python/test_qgscategorizedsymbolrenderer.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2/12/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgscheckablecombobox.py b/tests/src/python/test_qgscheckablecombobox.py index e56b35be00..32153d9cac 100644 --- a/tests/src/python/test_qgscheckablecombobox.py +++ b/tests/src/python/test_qgscheckablecombobox.py @@ -10,7 +10,7 @@ __author__ = 'Alexander Bruy' __date__ = '22/03/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgscolorbutton.py b/tests/src/python/test_qgscolorbutton.py index 529dbe923f..7d6c187f25 100644 --- a/tests/src/python/test_qgscolorbutton.py +++ b/tests/src/python/test_qgscolorbutton.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '25/05/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsvectorcolorramp.py b/tests/src/python/test_qgscolorramp.py similarity index 90% rename from tests/src/python/test_qgsvectorcolorramp.py rename to tests/src/python/test_qgscolorramp.py index f228bb2a21..902da36f70 100644 --- a/tests/src/python/test_qgsvectorcolorramp.py +++ b/tests/src/python/test_qgscolorramp.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -"""QGIS Unit tests for QgsVectorColorRamps. +"""QGIS Unit tests for ColorRamps. .. note:: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -9,8 +9,6 @@ the Free Software Foundation; either version 2 of the License, or __author__ = 'Nyall Dawson' __date__ = '2015-08' __copyright__ = 'Copyright 2015, The QGIS Project' -# This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' import qgis # NOQA @@ -19,14 +17,15 @@ from qgis.core import (QgsGradientColorRamp, QgsLimitedRandomColorRamp, QgsRandomColorRamp, QgsColorBrewerColorRamp, + QgsCptCityColorRamp, QgsPresetSchemeColorRamp) from qgis.PyQt.QtGui import QColor, QGradient from qgis.testing import unittest -class PyQgsVectorColorRamp(unittest.TestCase): +class PyQgsColorRamp(unittest.TestCase): - def testQgsVectorGradientRampV2(self): + def testQgsGradientColorRamp(self): # test QgsGradientStop stop = QgsGradientStop(0.9, QColor(200, 150, 100)) self.assertEqual(stop.offset, 0.9) @@ -178,7 +177,16 @@ class PyQgsVectorColorRamp(unittest.TestCase): self.assertEqual(r.color(0.5), QColor(128, 128, 128)) self.assertEqual(r.color(0.8), QColor(255, 255, 255)) - def testQgsLimitedRandomColorRampV2(self): + # test invalid value range + r = QgsGradientColorRamp(color1=QColor(0, 0, 255), color2=QColor(0, 255, 0), discrete=False) + self.assertEqual(r.color(0), QColor(0, 0, 255)) + self.assertEqual(r.color(1), QColor(0, 255, 0)) + self.assertEqual(r.color(0.5).name(), QColor(0, 128, 128).name()) + self.assertEqual(r.color(2), QColor(0, 255, 0)) + self.assertEqual(r.color(-1), QColor(0, 0, 255)) + self.assertEqual(r.color(float('nan')), QColor(0, 255, 0)) + + def testQgsLimitedRandomColorRamp(self): # test random color ramp r = QgsLimitedRandomColorRamp(5) self.assertEqual(r.type(), 'random') @@ -258,7 +266,7 @@ class PyQgsVectorColorRamp(unittest.TestCase): self.assertTrue(c.value() >= 150) self.assertTrue(c.value() <= 180) - def testQgsRandomColorRampV2(self): + def testQgsRandomColorRamp(self): # test random colors r = QgsRandomColorRamp() self.assertEqual(r.type(), 'randomcolors') @@ -332,7 +340,7 @@ class PyQgsVectorColorRamp(unittest.TestCase): self.assertEqual(r.color(0), QColor(0, 255, 0)) self.assertEqual(r.color(1), QColor(255, 0, 0)) - def testQgsColorBrewerColorRampV2(self): + def testQgsColorBrewerColorRamp(self): # test color brewer color ramps r = QgsColorBrewerColorRamp('OrRd', 6) self.assertEqual(r.type(), 'colorbrewer') @@ -417,6 +425,35 @@ class PyQgsVectorColorRamp(unittest.TestCase): variants = QgsColorBrewerColorRamp.listSchemeVariants('Reds') self.assertEqual(variants, [3, 4, 5, 6, 7, 8, 9]) + # test invalid value range + r = QgsColorBrewerColorRamp("Spectral", 5) + self.assertEqual(r.color(0), QColor(215, 25, 28)) + self.assertEqual(r.color(1), QColor(43, 131, 186)) + self.assertEqual(r.color(0.5), QColor(255, 255, 191)) + self.assertFalse(r.color(2).isValid()) + self.assertFalse(r.color(-1).isValid()) + self.assertFalse(r.color(float('nan')).isValid()) + + def testCptCityColorRamp(self): + """Test Cpt-city color ramp""" + r = QgsCptCityColorRamp("cb/div/BrBG_", "05") + self.assertTrue(r) + + # color scheme name + self.assertEqual(r.schemeName(), "cb/div/BrBG_") + self.assertEqual(r.variantName(), "05") + + # number of colors + self.assertEqual(r.count(), 6) + + # color for value + self.assertEqual(r.color(0), QColor(166, 97, 26)) + self.assertEqual(r.color(1), QColor(1, 133, 113)) + self.assertEqual(r.color(0.5), QColor(245, 245, 245)) + self.assertEqual(r.color(2), QColor(1, 133, 113)) + self.assertEqual(r.color(-1), QColor(166, 97, 26)) + self.assertEqual(r.color(float('nan')), QColor(1, 133, 113)) + if __name__ == '__main__': unittest.main() diff --git a/tests/src/python/test_qgscolorscheme.py b/tests/src/python/test_qgscolorscheme.py index 0631546f59..856360b964 100644 --- a/tests/src/python/test_qgscolorscheme.py +++ b/tests/src/python/test_qgscolorscheme.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '25/07/2014' __copyright__ = 'Copyright 2014, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgscolorschemeregistry.py b/tests/src/python/test_qgscolorschemeregistry.py index ba27da5a21..ce80633194 100644 --- a/tests/src/python/test_qgscolorschemeregistry.py +++ b/tests/src/python/test_qgscolorschemeregistry.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '25/07/2014' __copyright__ = 'Copyright 2014, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsconditionalstyle.py b/tests/src/python/test_qgsconditionalstyle.py index c8b4c27d9e..4dda8d02f8 100644 --- a/tests/src/python/test_qgsconditionalstyle.py +++ b/tests/src/python/test_qgsconditionalstyle.py @@ -11,7 +11,7 @@ __author__ = 'Nathan.Woodrow' __date__ = '2015-08-11' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import (QgsConditionalStyle, QgsFeature, diff --git a/tests/src/python/test_qgscoordinateformatter.py b/tests/src/python/test_qgscoordinateformatter.py index 56225dd191..02438ba79b 100644 --- a/tests/src/python/test_qgscoordinateformatter.py +++ b/tests/src/python/test_qgscoordinateformatter.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '25/07/2014' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis from qgis.testing import unittest diff --git a/tests/src/python/test_qgscoordinatetransform.py b/tests/src/python/test_qgscoordinatetransform.py index ccd944c617..5dfe8e69f2 100644 --- a/tests/src/python/test_qgscoordinatetransform.py +++ b/tests/src/python/test_qgscoordinatetransform.py @@ -10,7 +10,7 @@ __author__ = '(C) 2012 by Tim Sutton' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgscoordinatetransformcontext.py b/tests/src/python/test_qgscoordinatetransformcontext.py index 83f7a77de0..393ceb8755 100644 --- a/tests/src/python/test_qgscoordinatetransformcontext.py +++ b/tests/src/python/test_qgscoordinatetransformcontext.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '11/5/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsdataitemproviderregistry.py b/tests/src/python/test_qgsdataitemproviderregistry.py index f26a1080f8..b6c3f0ae07 100644 --- a/tests/src/python/test_qgsdataitemproviderregistry.py +++ b/tests/src/python/test_qgsdataitemproviderregistry.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '27/10/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsdatetimeedit.py b/tests/src/python/test_qgsdatetimeedit.py index 1eefb6e756..74d5ebfc92 100644 --- a/tests/src/python/test_qgsdatetimeedit.py +++ b/tests/src/python/test_qgsdatetimeedit.py @@ -10,7 +10,7 @@ __author__ = 'Denis Rouzaud' __date__ = '2018-01-04' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsdatetimestatisticalsummary.py b/tests/src/python/test_qgsdatetimestatisticalsummary.py index 0e558c11b5..3cfd4c3011 100644 --- a/tests/src/python/test_qgsdatetimestatisticalsummary.py +++ b/tests/src/python/test_qgsdatetimestatisticalsummary.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '07/05/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsdefaultvalue.py b/tests/src/python/test_qgsdefaultvalue.py index 7e5ccbf39b..a0e068d4f4 100644 --- a/tests/src/python/test_qgsdefaultvalue.py +++ b/tests/src/python/test_qgsdefaultvalue.py @@ -11,7 +11,7 @@ __author__ = 'Matthias Kuhn' __date__ = '26.9.2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsdelimitedtextprovider.py b/tests/src/python/test_qgsdelimitedtextprovider.py index 4bce472636..2f14e145fb 100644 --- a/tests/src/python/test_qgsdelimitedtextprovider.py +++ b/tests/src/python/test_qgsdelimitedtextprovider.py @@ -10,7 +10,7 @@ __author__ = 'Chris Crook' __date__ = '20/04/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' # This module provides unit test for the delimited text provider. It uses data files in # the testdata/delimitedtext directory. diff --git a/tests/src/python/test_qgsdelimitedtextprovider_wanted.py b/tests/src/python/test_qgsdelimitedtextprovider_wanted.py index 1ae77c4b6c..ef5e8ad892 100644 --- a/tests/src/python/test_qgsdelimitedtextprovider_wanted.py +++ b/tests/src/python/test_qgsdelimitedtextprovider_wanted.py @@ -21,7 +21,7 @@ __author__ = 'Chris Crook' __date__ = 'May 2013' __copyright__ = '(C) 2013, Chris Crook' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' def test_002_load_csv_file(): diff --git a/tests/src/python/test_qgsdistancearea.py b/tests/src/python/test_qgsdistancearea.py index fc183b9a20..de858f4cd1 100644 --- a/tests/src/python/test_qgsdistancearea.py +++ b/tests/src/python/test_qgsdistancearea.py @@ -10,7 +10,7 @@ __author__ = 'Jürgen E. Fischer' __date__ = '19/01/2014' __copyright__ = 'Copyright 2014, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import math diff --git a/tests/src/python/test_qgseditformconfig.py b/tests/src/python/test_qgseditformconfig.py index 493bfa0669..d97e7864f5 100644 --- a/tests/src/python/test_qgseditformconfig.py +++ b/tests/src/python/test_qgseditformconfig.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '11/04/2017' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgseditwidgets.py b/tests/src/python/test_qgseditwidgets.py index 71d6b782f9..43b8ce8100 100644 --- a/tests/src/python/test_qgseditwidgets.py +++ b/tests/src/python/test_qgseditwidgets.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '20/05/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsellipsoidutils.py b/tests/src/python/test_qgsellipsoidutils.py index 9fa523043d..9aa1581342 100644 --- a/tests/src/python/test_qgsellipsoidutils.py +++ b/tests/src/python/test_qgsellipsoidutils.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/4/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsencodingselectiondialog.py b/tests/src/python/test_qgsencodingselectiondialog.py index a8a4f592c5..319377997d 100644 --- a/tests/src/python/test_qgsencodingselectiondialog.py +++ b/tests/src/python/test_qgsencodingselectiondialog.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '21/11/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsexpression.py b/tests/src/python/test_qgsexpression.py index af3af32e49..39fc97cf2b 100644 --- a/tests/src/python/test_qgsexpression.py +++ b/tests/src/python/test_qgsexpression.py @@ -10,7 +10,7 @@ __author__ = 'Nathan Woodrow' __date__ = '4/11/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsexpressionbuilderwidget.py b/tests/src/python/test_qgsexpressionbuilderwidget.py index ce7b1bed2d..4bb2f6c143 100644 --- a/tests/src/python/test_qgsexpressionbuilderwidget.py +++ b/tests/src/python/test_qgsexpressionbuilderwidget.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '30/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsexpressionlineedit.py b/tests/src/python/test_qgsexpressionlineedit.py index b90bf006db..c534f9cb76 100644 --- a/tests/src/python/test_qgsexpressionlineedit.py +++ b/tests/src/python/test_qgsexpressionlineedit.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '20/08/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsextentgroupbox.py b/tests/src/python/test_qgsextentgroupbox.py index 5831171736..500e07f61e 100644 --- a/tests/src/python/test_qgsextentgroupbox.py +++ b/tests/src/python/test_qgsextentgroupbox.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '31/05/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgsfeature.py b/tests/src/python/test_qgsfeature.py index 344e333417..abcc5c4fb0 100644 --- a/tests/src/python/test_qgsfeature.py +++ b/tests/src/python/test_qgsfeature.py @@ -10,7 +10,7 @@ __author__ = 'Germán Carrillo' __date__ = '06/10/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfeatureiterator.py b/tests/src/python/test_qgsfeatureiterator.py index 2082f06529..36ba6b4350 100644 --- a/tests/src/python/test_qgsfeatureiterator.py +++ b/tests/src/python/test_qgsfeatureiterator.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '18/09/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfeaturesink.py b/tests/src/python/test_qgsfeaturesink.py index ada4251fc8..d43c9052de 100644 --- a/tests/src/python/test_qgsfeaturesink.py +++ b/tests/src/python/test_qgsfeaturesink.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '26/04/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgsfeaturesource.py b/tests/src/python/test_qgsfeaturesource.py index 768f041c42..13fb1d08b7 100644 --- a/tests/src/python/test_qgsfeaturesource.py +++ b/tests/src/python/test_qgsfeaturesource.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '26/04/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgsfeedback.py b/tests/src/python/test_qgsfeedback.py index 45425f8bc3..ba0d6920d6 100644 --- a/tests/src/python/test_qgsfeedback.py +++ b/tests/src/python/test_qgsfeedback.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '12/02/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfieldcombobox.py b/tests/src/python/test_qgsfieldcombobox.py index 37565d1dcd..44a8ddac76 100644 --- a/tests/src/python/test_qgsfieldcombobox.py +++ b/tests/src/python/test_qgsfieldcombobox.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '20/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfieldformatters.py b/tests/src/python/test_qgsfieldformatters.py index ab94954733..c05b968cb0 100644 --- a/tests/src/python/test_qgsfieldformatters.py +++ b/tests/src/python/test_qgsfieldformatters.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '05/12/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfieldmodel.py b/tests/src/python/test_qgsfieldmodel.py index a03a5c518a..a108cdafe3 100755 --- a/tests/src/python/test_qgsfieldmodel.py +++ b/tests/src/python/test_qgsfieldmodel.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '14/11/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfields.py b/tests/src/python/test_qgsfields.py index e97b3fc77c..6d6a344f9c 100644 --- a/tests/src/python/test_qgsfields.py +++ b/tests/src/python/test_qgsfields.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '16/08/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfieldvalidator.py b/tests/src/python/test_qgsfieldvalidator.py index a0777502f2..07ac8dba3d 100644 --- a/tests/src/python/test_qgsfieldvalidator.py +++ b/tests/src/python/test_qgsfieldvalidator.py @@ -10,7 +10,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '31/01/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfiledownloader.py b/tests/src/python/test_qgsfiledownloader.py index 5e86e8f619..dcb54c9c85 100644 --- a/tests/src/python/test_qgsfiledownloader.py +++ b/tests/src/python/test_qgsfiledownloader.py @@ -22,7 +22,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '08/11/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' start_app() diff --git a/tests/src/python/test_qgsfileutils.py b/tests/src/python/test_qgsfileutils.py index d7f962e396..85b883fdf4 100644 --- a/tests/src/python/test_qgsfileutils.py +++ b/tests/src/python/test_qgsfileutils.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/12/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfillsymbollayers.py b/tests/src/python/test_qgsfillsymbollayers.py index af565d7bda..55d9d712fd 100644 --- a/tests/src/python/test_qgsfillsymbollayers.py +++ b/tests/src/python/test_qgsfillsymbollayers.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2017-01' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfilterlineedit.py b/tests/src/python/test_qgsfilterlineedit.py index 6ea21e6570..66598f4f13 100644 --- a/tests/src/python/test_qgsfilterlineedit.py +++ b/tests/src/python/test_qgsfilterlineedit.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '20/08/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfloatingwidget.py b/tests/src/python/test_qgsfloatingwidget.py index 168357ab78..56c35e1484 100644 --- a/tests/src/python/test_qgsfloatingwidget.py +++ b/tests/src/python/test_qgsfloatingwidget.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '26/04/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA from qgis.PyQt.QtWidgets import QWidget, QGridLayout diff --git a/tests/src/python/test_qgsfontbutton.py b/tests/src/python/test_qgsfontbutton.py index 2ceefb34f9..86e06d78e0 100644 --- a/tests/src/python/test_qgsfontbutton.py +++ b/tests/src/python/test_qgsfontbutton.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '04/06/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsfontutils.py b/tests/src/python/test_qgsfontutils.py index 2df6fc04c3..5972347ef7 100644 --- a/tests/src/python/test_qgsfontutils.py +++ b/tests/src/python/test_qgsfontutils.py @@ -12,7 +12,7 @@ __author__ = 'Larry Shaffer' __date__ = '2014/02/19' __copyright__ = 'Copyright 2014, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsFontUtils, QgsSettings from qgis.testing import ( diff --git a/tests/src/python/test_qgsgeometry.py b/tests/src/python/test_qgsgeometry.py index e46508711d..50b879c3a3 100644 --- a/tests/src/python/test_qgsgeometry.py +++ b/tests/src/python/test_qgsgeometry.py @@ -10,7 +10,7 @@ __author__ = 'Tim Sutton' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import csv @@ -1924,6 +1924,31 @@ class TestQgsGeometry(unittest.TestCase): wkt = geometry.asWkt() assert compareWkt(expwkt, wkt), "Expected:\n%s\nGot:\n%s\n" % (expwkt, wkt) + # collect some geometries which are already multipart + geometries = [QgsGeometry.fromWkt('LineString( 0 0, 1 1)'), QgsGeometry.fromWkt('MultiLineString((2 2, 3 3),(4 4, 5 5))')] + geometry = QgsGeometry.collectGeometry(geometries) + expwkt = "MultiLineString ((0 0, 1 1),(2 2, 3 3),(4 4, 5 5))" + wkt = geometry.asWkt() + assert compareWkt(expwkt, wkt), "Expected:\n%s\nGot:\n%s\n" % (expwkt, wkt) + + geometries = [QgsGeometry.fromWkt('MultiLineString((2 2, 3 3),(4 4, 5 5))'), QgsGeometry.fromWkt('LineString( 0 0, 1 1)')] + geometry = QgsGeometry.collectGeometry(geometries) + expwkt = "MultiLineString ((2 2, 3 3),(4 4, 5 5),(0 0, 1 1))" + wkt = geometry.asWkt() + assert compareWkt(expwkt, wkt), "Expected:\n%s\nGot:\n%s\n" % (expwkt, wkt) + + geometries = [QgsGeometry.fromWkt('Polygon((100 100, 101 100, 101 101, 100 100))'), QgsGeometry.fromWkt('MultiPolygon (((0 0, 1 0, 1 1, 0 1, 0 0)),((2 0, 3 0, 3 1, 2 1, 2 0)))')] + geometry = QgsGeometry.collectGeometry(geometries) + expwkt = "MultiPolygon (((100 100, 101 100, 101 101, 100 100)),((0 0, 1 0, 1 1, 0 1, 0 0)),((2 0, 3 0, 3 1, 2 1, 2 0)))" + wkt = geometry.asWkt() + assert compareWkt(expwkt, wkt), "Expected:\n%s\nGot:\n%s\n" % (expwkt, wkt) + + geometries = [QgsGeometry.fromWkt('MultiPolygon (((0 0, 1 0, 1 1, 0 1, 0 0)),((2 0, 3 0, 3 1, 2 1, 2 0)))'), QgsGeometry.fromWkt('Polygon((100 100, 101 100, 101 101, 100 100))')] + geometry = QgsGeometry.collectGeometry(geometries) + expwkt = "MultiPolygon (((0 0, 1 0, 1 1, 0 1, 0 0)),((2 0, 3 0, 3 1, 2 1, 2 0)),((100 100, 101 100, 101 101, 100 100)))" + wkt = geometry.asWkt() + assert compareWkt(expwkt, wkt), "Expected:\n%s\nGot:\n%s\n" % (expwkt, wkt) + # test empty list geometries = [] geometry = QgsGeometry.collectGeometry(geometries) diff --git a/tests/src/python/test_qgsgeometry_avoid_intersections.py b/tests/src/python/test_qgsgeometry_avoid_intersections.py index f00a9ffb66..8c0c83af9d 100644 --- a/tests/src/python/test_qgsgeometry_avoid_intersections.py +++ b/tests/src/python/test_qgsgeometry_avoid_intersections.py @@ -10,7 +10,7 @@ __author__ = 'Martin Dobias' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsgeometrygeneratorsymbollayer.py b/tests/src/python/test_qgsgeometrygeneratorsymbollayer.py index 0b414398ed..94a92e607d 100644 --- a/tests/src/python/test_qgsgeometrygeneratorsymbollayer.py +++ b/tests/src/python/test_qgsgeometrygeneratorsymbollayer.py @@ -21,7 +21,7 @@ __author__ = 'Matthias Kuhn' __date__ = 'December 2015' __copyright__ = '(C) 2015, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsgeometryvalidator.py b/tests/src/python/test_qgsgeometryvalidator.py index 0d7bb558a7..355593d119 100644 --- a/tests/src/python/test_qgsgeometryvalidator.py +++ b/tests/src/python/test_qgsgeometryvalidator.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '03/10/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import ( QgsGeometry, diff --git a/tests/src/python/test_qgsgeonodeconnection.py b/tests/src/python/test_qgsgeonodeconnection.py index 0de429924f..8a1a03c750 100644 --- a/tests/src/python/test_qgsgeonodeconnection.py +++ b/tests/src/python/test_qgsgeonodeconnection.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '12.09.2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsgraduatedsymbolrenderer.py b/tests/src/python/test_qgsgraduatedsymbolrenderer.py index 8604c91a16..1bb88703c4 100644 --- a/tests/src/python/test_qgsgraduatedsymbolrenderer.py +++ b/tests/src/python/test_qgsgraduatedsymbolrenderer.py @@ -10,7 +10,7 @@ __author__ = 'Chris Crook' __date__ = '3/10/2014' __copyright__ = 'Copyright 2014, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgshighlight.py b/tests/src/python/test_qgshighlight.py index 5fe38beec7..08c34f0207 100644 --- a/tests/src/python/test_qgshighlight.py +++ b/tests/src/python/test_qgshighlight.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '8.11.2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgsinterval.py b/tests/src/python/test_qgsinterval.py index 256eeb0a38..e30dd38c5d 100644 --- a/tests/src/python/test_qgsinterval.py +++ b/tests/src/python/test_qgsinterval.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '10/05/2016' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsissue7244.py b/tests/src/python/test_qgsissue7244.py index d8ce50f960..1921a06946 100644 --- a/tests/src/python/test_qgsissue7244.py +++ b/tests/src/python/test_qgsissue7244.py @@ -10,7 +10,7 @@ __author__ = 'Vincent Mora' __date__ = '09/07/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsjsonutils.py b/tests/src/python/test_qgsjsonutils.py index 38f736faa3..9312768318 100644 --- a/tests/src/python/test_qgsjsonutils.py +++ b/tests/src/python/test_qgsjsonutils.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '3/05/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayerdefinition.py b/tests/src/python/test_qgslayerdefinition.py index 1c742fc203..d28c3417a4 100644 --- a/tests/src/python/test_qgslayerdefinition.py +++ b/tests/src/python/test_qgslayerdefinition.py @@ -10,7 +10,7 @@ __author__ = 'Hugo Mercier' __date__ = '07/01/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayermetadata.py b/tests/src/python/test_qgslayermetadata.py index bb83efbe5d..7911039fcc 100644 --- a/tests/src/python/test_qgslayermetadata.py +++ b/tests/src/python/test_qgslayermetadata.py @@ -12,7 +12,7 @@ __author__ = 'Nyall Dawson' __date__ = '11/04/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayertree.py b/tests/src/python/test_qgslayertree.py index 7c806b7870..e4e4380ad0 100644 --- a/tests/src/python/test_qgslayertree.py +++ b/tests/src/python/test_qgslayertree.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '22.3.2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayertreemapcanvasbridge.py b/tests/src/python/test_qgslayertreemapcanvasbridge.py index c3473f9da3..3f5709aa92 100644 --- a/tests/src/python/test_qgslayertreemapcanvasbridge.py +++ b/tests/src/python/test_qgslayertreemapcanvasbridge.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '8/03/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgslayertreeview.py b/tests/src/python/test_qgslayertreeview.py index f671eecbca..40223580d9 100644 --- a/tests/src/python/test_qgslayertreeview.py +++ b/tests/src/python/test_qgslayertreeview.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '02.04.2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayout.py b/tests/src/python/test_qgslayout.py index acc4d0f628..37d26c1b4f 100644 --- a/tests/src/python/test_qgslayout.py +++ b/tests/src/python/test_qgslayout.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA from qgis.PyQt import sip diff --git a/tests/src/python/test_qgslayoutaligner.py b/tests/src/python/test_qgslayoutaligner.py index d6d55db35f..ca6d81c8b9 100644 --- a/tests/src/python/test_qgslayoutaligner.py +++ b/tests/src/python/test_qgslayoutaligner.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '3/10/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA from qgis.PyQt import sip diff --git a/tests/src/python/test_qgslayoutatlas.py b/tests/src/python/test_qgslayoutatlas.py index 1d6a32890a..29f9a43959 100644 --- a/tests/src/python/test_qgslayoutatlas.py +++ b/tests/src/python/test_qgslayoutatlas.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '19/12/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA from qgis.PyQt import sip diff --git a/tests/src/python/test_qgslayoutexporter.py b/tests/src/python/test_qgslayoutexporter.py index 129d3b0729..475cd406d1 100644 --- a/tests/src/python/test_qgslayoutexporter.py +++ b/tests/src/python/test_qgslayoutexporter.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '11/12/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA from qgis.PyQt import sip diff --git a/tests/src/python/test_qgslayoutframe.py b/tests/src/python/test_qgslayoutframe.py index fdff523396..63821cdb7f 100644 --- a/tests/src/python/test_qgslayoutframe.py +++ b/tests/src/python/test_qgslayoutframe.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '23/10/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutgridsettings.py b/tests/src/python/test_qgslayoutgridsettings.py index 8c268fd23d..a8afdce8a9 100644 --- a/tests/src/python/test_qgslayoutgridsettings.py +++ b/tests/src/python/test_qgslayoutgridsettings.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '05/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutguides.py b/tests/src/python/test_qgslayoutguides.py index aac09e9c5a..ebd6dd42e5 100644 --- a/tests/src/python/test_qgslayoutguides.py +++ b/tests/src/python/test_qgslayoutguides.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '05/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayouthtml.py b/tests/src/python/test_qgslayouthtml.py index 4a6ea02f46..e4907223a1 100644 --- a/tests/src/python/test_qgslayouthtml.py +++ b/tests/src/python/test_qgslayouthtml.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '20/11/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutitem.py b/tests/src/python/test_qgslayoutitem.py index ff3c569cfb..d4392aae1e 100644 --- a/tests/src/python/test_qgslayoutitem.py +++ b/tests/src/python/test_qgslayoutitem.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '17/01/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgslayoutitempropertiesdialog.py b/tests/src/python/test_qgslayoutitempropertiesdialog.py index e1128d3a53..a71f10e9d3 100644 --- a/tests/src/python/test_qgslayoutitempropertiesdialog.py +++ b/tests/src/python/test_qgslayoutitempropertiesdialog.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutlabel.py b/tests/src/python/test_qgslayoutlabel.py index ac634dd2f3..f604cb3c2c 100644 --- a/tests/src/python/test_qgslayoutlabel.py +++ b/tests/src/python/test_qgslayoutlabel.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '23/10/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutlegend.py b/tests/src/python/test_qgslayoutlegend.py index ff18221d60..06a35a168e 100644 --- a/tests/src/python/test_qgslayoutlegend.py +++ b/tests/src/python/test_qgslayoutlegend.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '24/10/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QRectF from qgis.PyQt.QtGui import QColor diff --git a/tests/src/python/test_qgslayoutmanager.py b/tests/src/python/test_qgslayoutmanager.py index a385044cc1..1f28ba1fe4 100644 --- a/tests/src/python/test_qgslayoutmanager.py +++ b/tests/src/python/test_qgslayoutmanager.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '15/03/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutmap.py b/tests/src/python/test_qgslayoutmap.py index 6ec05bbabb..1bc14c1a9c 100644 --- a/tests/src/python/test_qgslayoutmap.py +++ b/tests/src/python/test_qgslayoutmap.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 Nyall Dawson' __date__ = '20/10/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutmapgrid.py b/tests/src/python/test_qgslayoutmapgrid.py index 431b46a5af..279018769d 100644 --- a/tests/src/python/test_qgslayoutmapgrid.py +++ b/tests/src/python/test_qgslayoutmapgrid.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '20/10/2017' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutpage.py b/tests/src/python/test_qgslayoutpage.py index 61037fecb7..7e27b27bc3 100644 --- a/tests/src/python/test_qgslayoutpage.py +++ b/tests/src/python/test_qgslayoutpage.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '23/10/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutpagecollection.py b/tests/src/python/test_qgslayoutpagecollection.py index 89e3897df9..79eac47cf1 100644 --- a/tests/src/python/test_qgslayoutpagecollection.py +++ b/tests/src/python/test_qgslayoutpagecollection.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA from qgis.PyQt import sip diff --git a/tests/src/python/test_qgslayoutpicture.py b/tests/src/python/test_qgslayoutpicture.py index 8f15437d2f..00505fa513 100644 --- a/tests/src/python/test_qgslayoutpicture.py +++ b/tests/src/python/test_qgslayoutpicture.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '23/10/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutpolygon.py b/tests/src/python/test_qgslayoutpolygon.py index 12931a1e6a..c280d537a9 100644 --- a/tests/src/python/test_qgslayoutpolygon.py +++ b/tests/src/python/test_qgslayoutpolygon.py @@ -10,7 +10,7 @@ __author__ = '(C) 2016 by Paul Blottiere' __date__ = '14/03/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutpolyline.py b/tests/src/python/test_qgslayoutpolyline.py index bcfd05218c..6c2d46cc1a 100644 --- a/tests/src/python/test_qgslayoutpolyline.py +++ b/tests/src/python/test_qgslayoutpolyline.py @@ -10,7 +10,7 @@ __author__ = '(C) 2016 by Paul Blottiere' __date__ = '14/03/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutscalebar.py b/tests/src/python/test_qgslayoutscalebar.py index 0589924771..5bef50523b 100644 --- a/tests/src/python/test_qgslayoutscalebar.py +++ b/tests/src/python/test_qgslayoutscalebar.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '23/10/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutshape.py b/tests/src/python/test_qgslayoutshape.py index 33f7271b24..85dd779870 100644 --- a/tests/src/python/test_qgslayoutshape.py +++ b/tests/src/python/test_qgslayoutshape.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '23/10/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutsnapper.py b/tests/src/python/test_qgslayoutsnapper.py index e929d779d5..f485926254 100644 --- a/tests/src/python/test_qgslayoutsnapper.py +++ b/tests/src/python/test_qgslayoutsnapper.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '05/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutunitscombobox.py b/tests/src/python/test_qgslayoutunitscombobox.py index b1b9366c3c..017344dba5 100644 --- a/tests/src/python/test_qgslayoutunitscombobox.py +++ b/tests/src/python/test_qgslayoutunitscombobox.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslayoutview.py b/tests/src/python/test_qgslayoutview.py index f588bfcd19..794119e82e 100644 --- a/tests/src/python/test_qgslayoutview.py +++ b/tests/src/python/test_qgslayoutview.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '05/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA from qgis.PyQt import sip diff --git a/tests/src/python/test_qgslinesegment.py b/tests/src/python/test_qgslinesegment.py index 5cae5a164a..6934ac3b79 100644 --- a/tests/src/python/test_qgslinesegment.py +++ b/tests/src/python/test_qgslinesegment.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '13/04/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslinesymbollayers.py b/tests/src/python/test_qgslinesymbollayers.py index 9d2d68d56a..d95c603e05 100644 --- a/tests/src/python/test_qgslinesymbollayers.py +++ b/tests/src/python/test_qgslinesymbollayers.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2017-01' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgslocator.py b/tests/src/python/test_qgslocator.py index 2314ee5d37..0e39e81fe9 100644 --- a/tests/src/python/test_qgslocator.py +++ b/tests/src/python/test_qgslocator.py @@ -10,7 +10,7 @@ __author__ = '(C) 2017 by Nyall Dawson' __date__ = '6/05/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgslogger.py b/tests/src/python/test_qgslogger.py index 29f9284a0b..a19b26fb46 100644 --- a/tests/src/python/test_qgslogger.py +++ b/tests/src/python/test_qgslogger.py @@ -10,7 +10,7 @@ __author__ = 'Tim Sutton' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmapcanvas.py b/tests/src/python/test_qgsmapcanvas.py index 9a194b094a..c656c311ed 100644 --- a/tests/src/python/test_qgsmapcanvas.py +++ b/tests/src/python/test_qgsmapcanvas.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '24/1/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmapcanvasannotationitem.py b/tests/src/python/test_qgsmapcanvasannotationitem.py index 2e5a07a2f5..47fbed7c59 100644 --- a/tests/src/python/test_qgsmapcanvasannotationitem.py +++ b/tests/src/python/test_qgsmapcanvasannotationitem.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '24/1/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmaplayer.py b/tests/src/python/test_qgsmaplayer.py index 9a79e7f14a..6ebfd57f0b 100644 --- a/tests/src/python/test_qgsmaplayer.py +++ b/tests/src/python/test_qgsmaplayer.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '1/02/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import qgis # NOQA @@ -22,6 +22,9 @@ from qgis.core import (QgsReadWriteContext, from qgis.testing import start_app, unittest from qgis.PyQt.QtXml import QDomDocument from qgis.PyQt.QtCore import QTemporaryDir +from utilities import unitTestDataPath + +TEST_DATA_DIR = unitTestDataPath() start_app() @@ -116,6 +119,27 @@ class TestQgsMapLayer(unittest.TestCase): self.assertTrue(result) self.assertTrue(os.path.exists(style_path)) + def testStyleUri(self): + # shapefile + layer = QgsVectorLayer(os.path.join(TEST_DATA_DIR, 'points.shp'), "layer", "ogr") + uri = layer.styleURI() + self.assertEqual(uri, os.path.join(TEST_DATA_DIR, 'points.qml')) + + # geopackage without and with layername + layer = QgsVectorLayer(os.path.join(TEST_DATA_DIR, 'provider', 'bug_17795.gpkg'), "layer", "ogr") + uri = layer.styleURI() + self.assertEqual(uri, os.path.join(TEST_DATA_DIR, 'provider', 'bug_17795.qml')) + + layer = QgsVectorLayer("{}|layername=bug_17795".format(os.path.join(TEST_DATA_DIR, 'provider', 'bug_17795.gpkg')), "layer", "ogr") + uri = layer.styleURI() + self.assertEqual(uri, os.path.join(TEST_DATA_DIR, 'provider', 'bug_17795.qml')) + + # delimited text + uri = 'file://{}?type=csv&detectTypes=yes&geomType=none'.format(os.path.join(TEST_DATA_DIR, 'delimitedtext', 'test.csv')) + layer = QgsVectorLayer(uri, "layer", "delimitedtext") + uri = layer.styleURI() + self.assertEqual(uri, os.path.join(TEST_DATA_DIR, 'delimitedtext', 'test.qml')) + if __name__ == '__main__': unittest.main() diff --git a/tests/src/python/test_qgsmaplayeraction.py b/tests/src/python/test_qgsmaplayeraction.py index 207d790d65..e3c1611da3 100644 --- a/tests/src/python/test_qgsmaplayeraction.py +++ b/tests/src/python/test_qgsmaplayeraction.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '24/02/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA switch sip api diff --git a/tests/src/python/test_qgsmaplayermodel.py b/tests/src/python/test_qgsmaplayermodel.py index d8d7e798ba..376c5d86db 100644 --- a/tests/src/python/test_qgsmaplayermodel.py +++ b/tests/src/python/test_qgsmaplayermodel.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '16/11/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmaplayerproxymodel.py b/tests/src/python/test_qgsmaplayerproxymodel.py index 3db3013973..d4f5a3ea99 100644 --- a/tests/src/python/test_qgsmaplayerproxymodel.py +++ b/tests/src/python/test_qgsmaplayerproxymodel.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '22/08/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmaplayerstore.py b/tests/src/python/test_qgsmaplayerstore.py index c9fb683b11..9222d46976 100644 --- a/tests/src/python/test_qgsmaplayerstore.py +++ b/tests/src/python/test_qgsmaplayerstore.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2017-05' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsMapLayerStore, QgsVectorLayer, QgsMapLayer from qgis.testing import start_app, unittest diff --git a/tests/src/python/test_qgsmaprenderer.py b/tests/src/python/test_qgsmaprenderer.py index 09b74aa2d7..97cd65773a 100644 --- a/tests/src/python/test_qgsmaprenderer.py +++ b/tests/src/python/test_qgsmaprenderer.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '1/02/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmaprenderercache.py b/tests/src/python/test_qgsmaprenderercache.py index 21b521be73..143fc8af77 100644 --- a/tests/src/python/test_qgsmaprenderercache.py +++ b/tests/src/python/test_qgsmaprenderercache.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '1/02/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmapthemecollection.py b/tests/src/python/test_qgsmapthemecollection.py index 8b27c28cc3..3654e7f3e8 100644 --- a/tests/src/python/test_qgsmapthemecollection.py +++ b/tests/src/python/test_qgsmapthemecollection.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '8/03/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmapunitscale.py b/tests/src/python/test_qgsmapunitscale.py index 3d6cee5d52..92b4d569d8 100644 --- a/tests/src/python/test_qgsmapunitscale.py +++ b/tests/src/python/test_qgsmapunitscale.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2015-09' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmargins.py b/tests/src/python/test_qgsmargins.py index 1171fc5ac4..8f26ed408e 100644 --- a/tests/src/python/test_qgsmargins.py +++ b/tests/src/python/test_qgsmargins.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2017-01' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmarkerlinesymbollayer.py b/tests/src/python/test_qgsmarkerlinesymbollayer.py index f13658f190..d2c588313b 100644 --- a/tests/src/python/test_qgsmarkerlinesymbollayer.py +++ b/tests/src/python/test_qgsmarkerlinesymbollayer.py @@ -21,7 +21,7 @@ __author__ = 'Nyall Dawson' __date__ = 'November 2018' __copyright__ = '(C) 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmessagelog.py b/tests/src/python/test_qgsmessagelog.py index 32e79df404..6499e2ad11 100644 --- a/tests/src/python/test_qgsmessagelog.py +++ b/tests/src/python/test_qgsmessagelog.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/06/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmetadatabase.py b/tests/src/python/test_qgsmetadatabase.py index 5e5d29ab95..5831aedea2 100644 --- a/tests/src/python/test_qgsmetadatabase.py +++ b/tests/src/python/test_qgsmetadatabase.py @@ -12,7 +12,7 @@ __author__ = 'Nyall Dawson' __date__ = '19/03/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmetadatawidget.py b/tests/src/python/test_qgsmetadatawidget.py index 50280e03da..54071077ea 100644 --- a/tests/src/python/test_qgsmetadatawidget.py +++ b/tests/src/python/test_qgsmetadatawidget.py @@ -12,7 +12,7 @@ __author__ = 'Nyall Dawson' __date__ = '20/03/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsmultiedittoolbutton.py b/tests/src/python/test_qgsmultiedittoolbutton.py index e5d7dde741..f1a11ef90a 100644 --- a/tests/src/python/test_qgsmultiedittoolbutton.py +++ b/tests/src/python/test_qgsmultiedittoolbutton.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '16/03/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA switch sip api diff --git a/tests/src/python/test_qgsnetworkcontentfetcher.py b/tests/src/python/test_qgsnetworkcontentfetcher.py index 6fdfefc23c..e5b1df6d79 100644 --- a/tests/src/python/test_qgsnetworkcontentfetcher.py +++ b/tests/src/python/test_qgsnetworkcontentfetcher.py @@ -13,7 +13,7 @@ __author__ = 'Matthias Kuhn' __date__ = '4/28/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsnetworkcontentfetcherregistry.py b/tests/src/python/test_qgsnetworkcontentfetcherregistry.py index bb96dea0d6..39d92edd9b 100644 --- a/tests/src/python/test_qgsnetworkcontentfetcherregistry.py +++ b/tests/src/python/test_qgsnetworkcontentfetcherregistry.py @@ -14,7 +14,7 @@ __author__ = 'Denis Rouzaud' __date__ = '27/04/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsnetworkcontentfetchertask.py b/tests/src/python/test_qgsnetworkcontentfetchertask.py index 50e3c125e6..451c700fca 100644 --- a/tests/src/python/test_qgsnetworkcontentfetchertask.py +++ b/tests/src/python/test_qgsnetworkcontentfetchertask.py @@ -14,7 +14,7 @@ __author__ = 'Nyall Dawson' __date__ = '29/03/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsnewgeopackagelayerdialog.py b/tests/src/python/test_qgsnewgeopackagelayerdialog.py index ff4ff10bf2..c31001c0e5 100644 --- a/tests/src/python/test_qgsnewgeopackagelayerdialog.py +++ b/tests/src/python/test_qgsnewgeopackagelayerdialog.py @@ -10,7 +10,7 @@ __author__ = 'Even Rouault' __date__ = '2016-04-21' __copyright__ = 'Copyright 2016, Even Rouault' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import tempfile diff --git a/tests/src/python/test_qgsnoapplication.py b/tests/src/python/test_qgsnoapplication.py index 61680c5a1e..bc98c7feb8 100644 --- a/tests/src/python/test_qgsnoapplication.py +++ b/tests/src/python/test_qgsnoapplication.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '1/02/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import sys diff --git a/tests/src/python/test_qgsnullsymbolrenderer.py b/tests/src/python/test_qgsnullsymbolrenderer.py index ac3db0c293..f95aaf7b53 100644 --- a/tests/src/python/test_qgsnullsymbolrenderer.py +++ b/tests/src/python/test_qgsnullsymbolrenderer.py @@ -21,7 +21,7 @@ __author__ = 'Nyall Dawson' __date__ = 'April 2016' __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsopacitywidget.py b/tests/src/python/test_qgsopacitywidget.py index 59b5a6a9c0..75a0211115 100644 --- a/tests/src/python/test_qgsopacitywidget.py +++ b/tests/src/python/test_qgsopacitywidget.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '30/05/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsowsconnection.py b/tests/src/python/test_qgsowsconnection.py index 1a4304596c..071823cec2 100644 --- a/tests/src/python/test_qgsowsconnection.py +++ b/tests/src/python/test_qgsowsconnection.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '12.09.2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspallabeling_base.py b/tests/src/python/test_qgspallabeling_base.py index 68f6994702..670834ce5f 100644 --- a/tests/src/python/test_qgspallabeling_base.py +++ b/tests/src/python/test_qgspallabeling_base.py @@ -17,7 +17,7 @@ __author__ = 'Larry Shaffer' __date__ = '07/09/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspallabeling_canvas.py b/tests/src/python/test_qgspallabeling_canvas.py index 1bc8f8c038..7c31b16902 100644 --- a/tests/src/python/test_qgspallabeling_canvas.py +++ b/tests/src/python/test_qgspallabeling_canvas.py @@ -15,7 +15,7 @@ __author__ = 'Larry Shaffer' __date__ = '07/09/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspallabeling_layout.py b/tests/src/python/test_qgspallabeling_layout.py index 207b3dba4a..0e5151d5c4 100644 --- a/tests/src/python/test_qgspallabeling_layout.py +++ b/tests/src/python/test_qgspallabeling_layout.py @@ -15,7 +15,7 @@ __author__ = 'Larry Shaffer' __date__ = '2014/02/21' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspallabeling_placement.py b/tests/src/python/test_qgspallabeling_placement.py index d9926ee73c..df133f1e69 100644 --- a/tests/src/python/test_qgspallabeling_placement.py +++ b/tests/src/python/test_qgspallabeling_placement.py @@ -14,7 +14,7 @@ __author__ = 'Nyall Dawson' __date__ = '2015-08-24' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspallabeling_server.py b/tests/src/python/test_qgspallabeling_server.py index 5e7f643910..4cade319df 100644 --- a/tests/src/python/test_qgspallabeling_server.py +++ b/tests/src/python/test_qgspallabeling_server.py @@ -15,7 +15,7 @@ __author__ = 'Larry Shaffer' __date__ = '07/12/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspallabeling_tests.py b/tests/src/python/test_qgspallabeling_tests.py index ee4fa78499..bbe5223fab 100644 --- a/tests/src/python/test_qgspallabeling_tests.py +++ b/tests/src/python/test_qgspallabeling_tests.py @@ -14,7 +14,7 @@ __author__ = 'Larry Shaffer' __date__ = '07/16/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspanelwidget.py b/tests/src/python/test_qgspanelwidget.py index e194805aec..e0506e45dd 100644 --- a/tests/src/python/test_qgspanelwidget.py +++ b/tests/src/python/test_qgspanelwidget.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '16/08/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspanelwidgetstack.py b/tests/src/python/test_qgspanelwidgetstack.py index 5ae0ae810c..9c9d93cd4e 100644 --- a/tests/src/python/test_qgspanelwidgetstack.py +++ b/tests/src/python/test_qgspanelwidgetstack.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '05/10/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspoint.py b/tests/src/python/test_qgspoint.py index 266de03097..9f350e0164 100644 --- a/tests/src/python/test_qgspoint.py +++ b/tests/src/python/test_qgspoint.py @@ -10,7 +10,7 @@ __author__ = 'Tim Sutton' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspointclusterrenderer.py b/tests/src/python/test_qgspointclusterrenderer.py index 6ba22bf543..1ec17b6d85 100644 --- a/tests/src/python/test_qgspointclusterrenderer.py +++ b/tests/src/python/test_qgspointclusterrenderer.py @@ -21,7 +21,7 @@ __author__ = 'Nyall Dawson' __date__ = 'September 2016' __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgspointdisplacementrenderer.py b/tests/src/python/test_qgspointdisplacementrenderer.py index 5c72678912..d10b802aae 100644 --- a/tests/src/python/test_qgspointdisplacementrenderer.py +++ b/tests/src/python/test_qgspointdisplacementrenderer.py @@ -21,7 +21,7 @@ __author__ = 'Nyall Dawson' __date__ = 'September 2016' __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspostgresdomain.py b/tests/src/python/test_qgspostgresdomain.py index 14721b74b9..533c9a5dd0 100644 --- a/tests/src/python/test_qgspostgresdomain.py +++ b/tests/src/python/test_qgspostgresdomain.py @@ -10,7 +10,7 @@ __author__ = 'Denis Rouzaud' __date__ = '10/02/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgspostgrestransaction.py b/tests/src/python/test_qgspostgrestransaction.py index 8cdf74ac42..0fdc0ce5ad 100644 --- a/tests/src/python/test_qgspostgrestransaction.py +++ b/tests/src/python/test_qgspostgrestransaction.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '11/06/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsprocessingalgrunner.py b/tests/src/python/test_qgsprocessingalgrunner.py index f03624f647..4c607a70c1 100644 --- a/tests/src/python/test_qgsprocessingalgrunner.py +++ b/tests/src/python/test_qgsprocessingalgrunner.py @@ -10,7 +10,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '2019-02' __copyright__ = 'Copyright 2019, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import re from qgis.PyQt.QtCore import QCoreApplication diff --git a/tests/src/python/test_qgsprocessinginplace.py b/tests/src/python/test_qgsprocessinginplace.py index 2136141c44..f669027320 100644 --- a/tests/src/python/test_qgsprocessinginplace.py +++ b/tests/src/python/test_qgsprocessinginplace.py @@ -10,7 +10,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '2018-09' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication, QVariant from qgis.core import ( diff --git a/tests/src/python/test_qgsprocessingrecentalgorithmslog.py b/tests/src/python/test_qgsprocessingrecentalgorithmslog.py index 07db344948..0751c776c9 100644 --- a/tests/src/python/test_qgsprocessingrecentalgorithmslog.py +++ b/tests/src/python/test_qgsprocessingrecentalgorithmslog.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2018-07' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.PyQt.QtCore import QCoreApplication from qgis.core import QgsSettings diff --git a/tests/src/python/test_qgsproject.py b/tests/src/python/test_qgsproject.py index 77f7339ace..0af1e76113 100644 --- a/tests/src/python/test_qgsproject.py +++ b/tests/src/python/test_qgsproject.py @@ -12,7 +12,7 @@ __author__ = 'Sebastian Dietrich' __date__ = '19/11/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsprojectionselectionwidgets.py b/tests/src/python/test_qgsprojectionselectionwidgets.py index cb79a339b4..8f79ba931a 100644 --- a/tests/src/python/test_qgsprojectionselectionwidgets.py +++ b/tests/src/python/test_qgsprojectionselectionwidgets.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '12/11/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsprojectmetadata.py b/tests/src/python/test_qgsprojectmetadata.py index 63c500ed84..f2b3b0e3d3 100644 --- a/tests/src/python/test_qgsprojectmetadata.py +++ b/tests/src/python/test_qgsprojectmetadata.py @@ -12,7 +12,7 @@ __author__ = 'Nyall Dawson' __date__ = '19/03/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrange.py b/tests/src/python/test_qgsrange.py index fad429a922..bd7d9344bd 100644 --- a/tests/src/python/test_qgsrange.py +++ b/tests/src/python/test_qgsrange.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '11.04.2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrangewidgets.py b/tests/src/python/test_qgsrangewidgets.py index e231f14852..62245e8b16 100644 --- a/tests/src/python/test_qgsrangewidgets.py +++ b/tests/src/python/test_qgsrangewidgets.py @@ -10,7 +10,7 @@ __author__ = 'Tobias Reber' __date__ = '20/05/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrasterbandcombobox.py b/tests/src/python/test_qgsrasterbandcombobox.py index 08df6143a9..f0df0c4344 100644 --- a/tests/src/python/test_qgsrasterbandcombobox.py +++ b/tests/src/python/test_qgsrasterbandcombobox.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '09/05/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgsrastercolorrampshader.py b/tests/src/python/test_qgsrastercolorrampshader.py index cffe8ced0b..2186d032e0 100644 --- a/tests/src/python/test_qgsrastercolorrampshader.py +++ b/tests/src/python/test_qgsrastercolorrampshader.py @@ -11,7 +11,7 @@ __author__ = 'Nyall Dawson' __date__ = '17/08/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrasterfilewriter.py b/tests/src/python/test_qgsrasterfilewriter.py index 7ccf60c549..af28845362 100644 --- a/tests/src/python/test_qgsrasterfilewriter.py +++ b/tests/src/python/test_qgsrasterfilewriter.py @@ -10,7 +10,7 @@ __author__ = 'Radim Blazek' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrasterfilewritertask.py b/tests/src/python/test_qgsrasterfilewritertask.py index 6611c40997..5f5e47a858 100644 --- a/tests/src/python/test_qgsrasterfilewritertask.py +++ b/tests/src/python/test_qgsrasterfilewritertask.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '12/02/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgsrasterlayer.py b/tests/src/python/test_qgsrasterlayer.py index 189b80b123..a6a64bd123 100644 --- a/tests/src/python/test_qgsrasterlayer.py +++ b/tests/src/python/test_qgsrasterlayer.py @@ -11,7 +11,7 @@ __author__ = 'Tim Sutton' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrasterrange.py b/tests/src/python/test_qgsrasterrange.py index b817063e59..3912a188d0 100644 --- a/tests/src/python/test_qgsrasterrange.py +++ b/tests/src/python/test_qgsrasterrange.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '07/06/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA switch sip api diff --git a/tests/src/python/test_qgsrasterrerderer_createsld.py b/tests/src/python/test_qgsrasterrerderer_createsld.py index c2f22cb2f6..0fa9cc4e6c 100644 --- a/tests/src/python/test_qgsrasterrerderer_createsld.py +++ b/tests/src/python/test_qgsrasterrerderer_createsld.py @@ -20,7 +20,7 @@ __author__ = 'Luigi Pirelli' __date__ = 'December 2018' __copyright__ = '(C) 2018, Luigi Pirelli' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsratiolockbutton.py b/tests/src/python/test_qgsratiolockbutton.py index c45de7b5a3..0c9ef88d2f 100644 --- a/tests/src/python/test_qgsratiolockbutton.py +++ b/tests/src/python/test_qgsratiolockbutton.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsreadwritecontext.py b/tests/src/python/test_qgsreadwritecontext.py index 71a11abd62..5e3e5c23a6 100644 --- a/tests/src/python/test_qgsreadwritecontext.py +++ b/tests/src/python/test_qgsreadwritecontext.py @@ -11,7 +11,7 @@ __author__ = 'Denis Rouzaud' __date__ = '28.02.2018' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrectangle.py b/tests/src/python/test_qgsrectangle.py index 7416846a1a..e078ae7d87 100644 --- a/tests/src/python/test_qgsrectangle.py +++ b/tests/src/python/test_qgsrectangle.py @@ -10,7 +10,7 @@ __author__ = 'Tim Sutton' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsreferencedgeometry.py b/tests/src/python/test_qgsreferencedgeometry.py index 9ecab36d8f..181179d9c8 100644 --- a/tests/src/python/test_qgsreferencedgeometry.py +++ b/tests/src/python/test_qgsreferencedgeometry.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '31/08/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrelation.py b/tests/src/python/test_qgsrelation.py index 5ac6eb4457..a1e8bac85a 100644 --- a/tests/src/python/test_qgsrelation.py +++ b/tests/src/python/test_qgsrelation.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '07/10/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrelationeditwidget.py b/tests/src/python/test_qgsrelationeditwidget.py index 5e985a49a6..5afd651680 100644 --- a/tests/src/python/test_qgsrelationeditwidget.py +++ b/tests/src/python/test_qgsrelationeditwidget.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '28/11/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrelationmanager.py b/tests/src/python/test_qgsrelationmanager.py index fee7244bea..b5490c8f37 100644 --- a/tests/src/python/test_qgsrelationmanager.py +++ b/tests/src/python/test_qgsrelationmanager.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '17/05/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrendercontext.py b/tests/src/python/test_qgsrendercontext.py index 9bc2a068d5..59ae2f0195 100644 --- a/tests/src/python/test_qgsrendercontext.py +++ b/tests/src/python/test_qgsrendercontext.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '16/01/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrenderer.py b/tests/src/python/test_qgsrenderer.py index e32a5c4b1f..df13ab0a56 100644 --- a/tests/src/python/test_qgsrenderer.py +++ b/tests/src/python/test_qgsrenderer.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '07/06/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsreport.py b/tests/src/python/test_qgsreport.py index 207dfff751..0e5038c77b 100644 --- a/tests/src/python/test_qgsreport.py +++ b/tests/src/python/test_qgsreport.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '29/12/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsrulebasedrenderer.py b/tests/src/python/test_qgsrulebasedrenderer.py index a538ba5226..7145e28754 100644 --- a/tests/src/python/test_qgsrulebasedrenderer.py +++ b/tests/src/python/test_qgsrulebasedrenderer.py @@ -21,7 +21,7 @@ __author__ = 'Matthias Kuhn' __date__ = 'September 2015' __copyright__ = '(C) 2015, Matthiasd Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssearchwidgettoolbutton.py b/tests/src/python/test_qgssearchwidgettoolbutton.py index 0cf3657d32..6a8db4cfe6 100644 --- a/tests/src/python/test_qgssearchwidgettoolbutton.py +++ b/tests/src/python/test_qgssearchwidgettoolbutton.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '18/05/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA switch sip api diff --git a/tests/src/python/test_qgssearchwidgetwrapper.py b/tests/src/python/test_qgssearchwidgetwrapper.py index c662f2eec1..235207c254 100644 --- a/tests/src/python/test_qgssearchwidgetwrapper.py +++ b/tests/src/python/test_qgssearchwidgetwrapper.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2016-05' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsserver.py b/tests/src/python/test_qgsserver.py index 4aebb50276..f6af5b294e 100644 --- a/tests/src/python/test_qgsserver.py +++ b/tests/src/python/test_qgsserver.py @@ -26,7 +26,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '25/05/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserver_accesscontrol.py b/tests/src/python/test_qgsserver_accesscontrol.py index 0e1e6077c1..63de1861d3 100644 --- a/tests/src/python/test_qgsserver_accesscontrol.py +++ b/tests/src/python/test_qgsserver_accesscontrol.py @@ -10,7 +10,7 @@ __author__ = 'Stephane Brunner' __date__ = '28/08/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsserver_accesscontrol_wcs.py b/tests/src/python/test_qgsserver_accesscontrol_wcs.py index 530dfe5d8e..d08d8bf775 100644 --- a/tests/src/python/test_qgsserver_accesscontrol_wcs.py +++ b/tests/src/python/test_qgsserver_accesscontrol_wcs.py @@ -10,7 +10,7 @@ __author__ = 'Stephane Brunner' __date__ = '28/08/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' print('CTEST_FULL_OUTPUT') diff --git a/tests/src/python/test_qgsserver_accesscontrol_wfs.py b/tests/src/python/test_qgsserver_accesscontrol_wfs.py index 17023f09c3..5d253232b2 100644 --- a/tests/src/python/test_qgsserver_accesscontrol_wfs.py +++ b/tests/src/python/test_qgsserver_accesscontrol_wfs.py @@ -10,7 +10,7 @@ __author__ = 'Stephane Brunner' __date__ = '28/08/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' print('CTEST_FULL_OUTPUT') diff --git a/tests/src/python/test_qgsserver_accesscontrol_wfs_transactional.py b/tests/src/python/test_qgsserver_accesscontrol_wfs_transactional.py index 6916ac766a..90ea996a53 100644 --- a/tests/src/python/test_qgsserver_accesscontrol_wfs_transactional.py +++ b/tests/src/python/test_qgsserver_accesscontrol_wfs_transactional.py @@ -10,7 +10,7 @@ __author__ = 'Stephane Brunner' __date__ = '28/08/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' print('CTEST_FULL_OUTPUT') diff --git a/tests/src/python/test_qgsserver_accesscontrol_wms.py b/tests/src/python/test_qgsserver_accesscontrol_wms.py index 58edb4be0e..2b33beb69d 100644 --- a/tests/src/python/test_qgsserver_accesscontrol_wms.py +++ b/tests/src/python/test_qgsserver_accesscontrol_wms.py @@ -10,7 +10,7 @@ __author__ = 'Stephane Brunner' __date__ = '28/08/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' print('CTEST_FULL_OUTPUT') diff --git a/tests/src/python/test_qgsserver_accesscontrol_wms_getlegendgraphic.py b/tests/src/python/test_qgsserver_accesscontrol_wms_getlegendgraphic.py index 3b38829ecb..68ab037a95 100644 --- a/tests/src/python/test_qgsserver_accesscontrol_wms_getlegendgraphic.py +++ b/tests/src/python/test_qgsserver_accesscontrol_wms_getlegendgraphic.py @@ -10,7 +10,7 @@ __author__ = 'Stephane Brunner' __date__ = '28/08/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' print('CTEST_FULL_OUTPUT') diff --git a/tests/src/python/test_qgsserver_cachemanager.py b/tests/src/python/test_qgsserver_cachemanager.py index 88db3ae470..bb740ae321 100644 --- a/tests/src/python/test_qgsserver_cachemanager.py +++ b/tests/src/python/test_qgsserver_cachemanager.py @@ -10,7 +10,7 @@ __author__ = 'René-Luc DHONT' __date__ = '19/07/2018' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' print('CTEST_FULL_OUTPUT') diff --git a/tests/src/python/test_qgsserver_locale_override.py b/tests/src/python/test_qgsserver_locale_override.py index 6f87d185f7..09328fbd28 100644 --- a/tests/src/python/test_qgsserver_locale_override.py +++ b/tests/src/python/test_qgsserver_locale_override.py @@ -18,7 +18,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '01/04/2019' __copyright__ = 'Copyright 2019, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserver_modules.py b/tests/src/python/test_qgsserver_modules.py index 17a8ee4ffa..d1794de4fc 100644 --- a/tests/src/python/test_qgsserver_modules.py +++ b/tests/src/python/test_qgsserver_modules.py @@ -21,7 +21,7 @@ __author__ = 'David Marteau' __date__ = 'December 2016' __copyright__ = '(C) 2016, David Marteau' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' """ QGIS test for server services """ diff --git a/tests/src/python/test_qgsserver_plugins.py b/tests/src/python/test_qgsserver_plugins.py index cd741a5ab8..7f424d5183 100644 --- a/tests/src/python/test_qgsserver_plugins.py +++ b/tests/src/python/test_qgsserver_plugins.py @@ -14,7 +14,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '22/04/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserver_projectutils.py b/tests/src/python/test_qgsserver_projectutils.py index 18da34809c..1fecd14871 100644 --- a/tests/src/python/test_qgsserver_projectutils.py +++ b/tests/src/python/test_qgsserver_projectutils.py @@ -11,7 +11,7 @@ __author__ = 'Paul Blottiere' __date__ = '26/12/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserver_request.py b/tests/src/python/test_qgsserver_request.py index 3b952e22f3..e3da6dcf5c 100644 --- a/tests/src/python/test_qgsserver_request.py +++ b/tests/src/python/test_qgsserver_request.py @@ -14,7 +14,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '29/04/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserver_response.py b/tests/src/python/test_qgsserver_response.py index 4538f7002e..58cb8cc6cf 100644 --- a/tests/src/python/test_qgsserver_response.py +++ b/tests/src/python/test_qgsserver_response.py @@ -15,7 +15,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '29/04/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.server import QgsBufferServerResponse diff --git a/tests/src/python/test_qgsserver_security.py b/tests/src/python/test_qgsserver_security.py index cdf1971d7a..162034afb7 100644 --- a/tests/src/python/test_qgsserver_security.py +++ b/tests/src/python/test_qgsserver_security.py @@ -11,7 +11,7 @@ __author__ = 'Paul Blottiere' __date__ = '31/01/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.utils import spatialite_connect import os diff --git a/tests/src/python/test_qgsserver_services.py b/tests/src/python/test_qgsserver_services.py index d1b0158e7a..cec2e1d179 100644 --- a/tests/src/python/test_qgsserver_services.py +++ b/tests/src/python/test_qgsserver_services.py @@ -21,7 +21,7 @@ __author__ = 'David Marteau' __date__ = 'December 2016' __copyright__ = '(C) 2016, David Marteau' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' """ QGIS test for server services """ diff --git a/tests/src/python/test_qgsserver_settings.py b/tests/src/python/test_qgsserver_settings.py index 1a82e95cc4..87a93f3a4b 100644 --- a/tests/src/python/test_qgsserver_settings.py +++ b/tests/src/python/test_qgsserver_settings.py @@ -11,7 +11,7 @@ __author__ = 'Paul Blottiere' __date__ = '20/12/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserver_wfs.py b/tests/src/python/test_qgsserver_wfs.py index 93217b4a3b..ffe2d8237c 100644 --- a/tests/src/python/test_qgsserver_wfs.py +++ b/tests/src/python/test_qgsserver_wfs.py @@ -14,7 +14,7 @@ __author__ = 'René-Luc Dhont' __date__ = '19/09/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os @@ -456,6 +456,13 @@ class TestQgsServerWFS(QgsServerTestBase): self.wfs_request_compare("DescribeFeatureType", '1.1.0', "TYPENAME=does_not_exist&", 'wfs_describeFeatureType_1_1_0_typename_wrong', project_file=project_file) + def test_describeFeatureTypeVirtualFields(self): + """Test DescribeFeatureType with virtual fields: bug GH-29767""" + + project_file = "bug_gh29767_double_vfield.qgs" + self.wfs_request_compare("DescribeFeatureType", '1.1.0', "", + 'wfs_describeFeatureType_1_1_0_virtual_fields', project_file=project_file) + def test_getFeatureFeature_0_nulls(self): """Test that 0 and null in integer columns are reported correctly""" diff --git a/tests/src/python/test_qgsserver_wfst.py b/tests/src/python/test_qgsserver_wfst.py index 7a73fb3c2c..89d3da79d6 100644 --- a/tests/src/python/test_qgsserver_wfst.py +++ b/tests/src/python/test_qgsserver_wfst.py @@ -32,7 +32,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '05/15/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserver_wms.py b/tests/src/python/test_qgsserver_wms.py index 82db0d22be..3183445e1e 100644 --- a/tests/src/python/test_qgsserver_wms.py +++ b/tests/src/python/test_qgsserver_wms.py @@ -14,7 +14,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '25/05/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os @@ -110,8 +110,8 @@ class TestQgsServerWMS(TestQgsServerWMSTestBase): '', 'getschemaextension') - def wms_request_compare_project(self, request, extra=None, reference_file=None): - projectPath = self.testdata_path + "test_project.qgs" + def wms_request_compare_project(self, request, extra=None, reference_file=None, project_name="test_project.qgs"): + projectPath = self.testdata_path + project_name assert os.path.exists(projectPath), "Project file not found: " + projectPath project = QgsProject() @@ -137,6 +137,10 @@ class TestQgsServerWMS(TestQgsServerWMSTestBase): self.wms_request_compare_project('GetCapabilities') # reference_file='getcapabilities_without_map_param' could be the right response + def test_wms_getcapabilities_project_empty_layer(self): + """WMS GetCapabilities with empty layer different CRS: wrong bbox - Regression GH 30264""" + self.wms_request_compare_project('GetCapabilities', reference_file='wms_getcapabilities_empty_layer', project_name='bug_gh30264_empty_layer_wrong_bbox.qgs') + def wms_inspire_request_compare(self, request): """WMS INSPIRE tests""" project = self.testdata_path + "test_project_inspire.qgs" diff --git a/tests/src/python/test_qgsserver_wms_getfeatureinfo.py b/tests/src/python/test_qgsserver_wms_getfeatureinfo.py index 84d1b9f9ce..d51a129d7b 100644 --- a/tests/src/python/test_qgsserver_wms_getfeatureinfo.py +++ b/tests/src/python/test_qgsserver_wms_getfeatureinfo.py @@ -14,7 +14,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '11/03/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserver_wms_getlegendgraphic.py b/tests/src/python/test_qgsserver_wms_getlegendgraphic.py index 0846336da2..ec29ef3e7d 100644 --- a/tests/src/python/test_qgsserver_wms_getlegendgraphic.py +++ b/tests/src/python/test_qgsserver_wms_getlegendgraphic.py @@ -14,7 +14,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '25/05/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserver_wms_getmap.py b/tests/src/python/test_qgsserver_wms_getmap.py index 8cb17dafb2..edaa976818 100644 --- a/tests/src/python/test_qgsserver_wms_getmap.py +++ b/tests/src/python/test_qgsserver_wms_getmap.py @@ -14,7 +14,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '25/05/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os @@ -850,6 +850,26 @@ class TestQgsServerWMSGetMap(QgsServerTestBase): r, h = self._result(self._execute_request(qs)) self._img_diff_error(r, h, "WMS_GetMap_Filter4") + # test that filters with colons in values work as expected + projectPath = os.path.join(self.testdata_path, "test_project_wms_filter.qgs") + qs = "?" + "&".join(["%s=%s" % i for i in list({ + "MAP": urllib.parse.quote(projectPath), + "SERVICE": "WMS", + "VERSION": "1.1.1", + "REQUEST": "GetMap", + "LAYERS": "points", + "STYLES": "", + "FORMAT": "image/png", + "BBOX": "-80000,25000,-15000,50000.0", + "HEIGHT": "500", + "WIDTH": "500", + "CRS": "EPSG:3857", + "FILTER": "points:\"name\" = 'foo:bar'" + }.items())]) + + r, h = self._result(self._execute_request(qs)) + self._img_diff_error(r, h, "WMS_GetMap_Filter6") + def test_wms_getmap_filter_ogc(self): filter = "<Filter><PropertyIsEqualTo><PropertyName>name</PropertyName>" + \ "<Literal>eurasia</Literal></PropertyIsEqualTo></Filter>" @@ -1427,6 +1447,29 @@ class TestQgsServerWMSGetMap(QgsServerTestBase): r, h = self._result(self._execute_request(qs)) self._img_diff_error(r, h, "WMS_GetMap_GroupedLayersDown") + def test_wms_getmap_datasource_error(self): + """Must throw a server exception if datasource if not available""" + qs = "?" + "&".join(["%s=%s" % i for i in list({ + "MAP": urllib.parse.quote(os.path.join(self.testdata_path, 'test_project_wms_invalid_layers.qgs')), + "SERVICE": "WMS", + "VERSION": "1.3.0", + "REQUEST": "GetMap", + "BBOX": "613402.5658687877003,5809005.018114360981,619594.408781287726,5813869.006602735259", + "CRS": "EPSG:25832", + "WIDTH": "429", + "HEIGHT": "337", + "LAYERS": "areas and symbols,osm", + "STYLES": ",", + "FORMAT": "image/png", + "DPI": "200", + "MAP_RESOLUTION": "200", + "FORMAT_OPTIONS": "dpi:200" + }.items())]) + + r, h = self._result(self._execute_request(qs)) + + self.assertTrue('ServerException' in str(r)) + def test_wms_getmap_root_custom_layer_order_regression_21917(self): """When drawing root layer, custom layer order order should be respected.""" diff --git a/tests/src/python/test_qgsserver_wms_getprint.py b/tests/src/python/test_qgsserver_wms_getprint.py index 70370723a7..b49b80e56a 100644 --- a/tests/src/python/test_qgsserver_wms_getprint.py +++ b/tests/src/python/test_qgsserver_wms_getprint.py @@ -14,7 +14,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '25/05/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os @@ -28,12 +28,18 @@ import urllib.error from qgis.testing import unittest from qgis.PyQt.QtCore import QSize +from qgis.PyQt.QtGui import QImage, QPainter +from qgis.PyQt.QtSvg import QSvgRenderer, QSvgGenerator import osgeo.gdal # NOQA +import tempfile +import base64 +import subprocess from test_qgsserver import QgsServerTestBase -from qgis.core import QgsProject +from qgis.core import QgsProject, QgsRenderChecker from qgis.server import QgsServerRequest +from utilities import getExecutablePath, unitTestDataPath # Strip path and content length because path may vary RE_STRIP_UNCHECKABLE = b'MAP=[^"]+|Content-Length: \d+' @@ -42,6 +48,132 @@ RE_ATTRIBUTES = b'[^>\s]+=[^>\s]+' class TestQgsServerWMSGetPrint(QgsServerTestBase): + def _pdf_to_png(self, pdf_file_path, rendered_file_path, page, dpi=96): + + # PDF-to-image utility + # look for Poppler w/ Cairo, then muPDF + # * Poppler w/ Cairo renders correctly + # * Poppler w/o Cairo does not always correctly render vectors in PDF to image + # * muPDF renders correctly, but slightly shifts colors + for util in [ + 'pdftocairo', + # 'mudraw', + ]: + PDFUTIL = getExecutablePath(util) + if PDFUTIL: + break + + # noinspection PyUnboundLocalVariable + if not PDFUTIL: + assert False, ('PDF-to-image utility not found on PATH: ' + 'install Poppler (with Cairo)') + + if PDFUTIL.strip().endswith('pdftocairo'): + filebase = os.path.join( + os.path.dirname(rendered_file_path), + os.path.splitext(os.path.basename(rendered_file_path))[0] + ) + call = [ + PDFUTIL, '-png', '-singlefile', '-r', str(dpi), + '-x', '0', '-y', '0', '-f', str(page), '-l', str(page), + pdf_file_path, filebase + ] + elif PDFUTIL.strip().endswith('mudraw'): + call = [ + PDFUTIL, '-c', 'rgba', + '-r', str(dpi), '-f', str(page), '-l', str(page), + # '-b', '8', + '-o', rendered_file_path, pdf_file_path + ] + else: + return False, '' + + print("exportToPdf call: {0}".format(' '.join(call))) + try: + subprocess.check_call(call) + except subprocess.CalledProcessError as e: + assert False, ("exportToPdf failed!\n" + "cmd: {0}\n" + "returncode: {1}\n" + "message: {2}".format(e.cmd, e.returncode, e.message)) + + def _pdf_diff(self, pdf, control_image, max_diff, max_size_diff=QSize(), dpi=96): + + temp_pdf = os.path.join(tempfile.gettempdir(), "%s_result.pdf" % control_image) + + with open(temp_pdf, "wb") as f: + f.write(pdf) + + temp_image = os.path.join(tempfile.gettempdir(), "%s_result.png" % control_image) + self._pdf_to_png(temp_pdf, temp_image, dpi=dpi, page=1) + + control = QgsRenderChecker() + control.setControlPathPrefix("qgis_server") + control.setControlName(control_image) + control.setRenderedImage(temp_image) + if max_size_diff.isValid(): + control.setSizeTolerance(max_size_diff.width(), max_size_diff.height()) + return control.compareImages(control_image, max_diff), control.report() + + def _pdf_diff_error(self, response, headers, image, max_diff=100, max_size_diff=QSize(), unittest_data_path='control_images', dpi=96): + + reference_path = unitTestDataPath(unittest_data_path) + '/qgis_server/' + image + '/' + image + '.pdf' + self.store_reference(reference_path, response) + + self.assertEqual( + headers.get("Content-Type"), 'application/pdf', + "Content type is wrong: %s instead of %s\n%s" % (headers.get("Content-Type"), 'application/pdf', response)) + + test, report = self._pdf_diff(response, image, max_diff, max_size_diff, dpi) + + with open(os.path.join(tempfile.gettempdir(), image + "_result.pdf"), "rb") as rendered_file: + if not os.environ.get('ENCODED_OUTPUT'): + message = "PDF is wrong\: rendered file %s/%s_result.%s" % (tempfile.gettempdir(), image, 'pdf') + else: + encoded_rendered_file = base64.b64encode(rendered_file.read()) + message = "PDF is wrong\n%s\File:\necho '%s' | base64 -d >%s/%s_result.%s" % ( + report, encoded_rendered_file.strip().decode('utf8'), tempfile.gettempdir(), image, 'pdf' + ) + + with open(os.path.join(tempfile.gettempdir(), image + "_result.png"), "rb") as rendered_file: + if not os.environ.get('ENCODED_OUTPUT'): + message = "Image is wrong\: rendered file %s/%s_result.%s" % (tempfile.gettempdir(), image, 'png') + else: + encoded_rendered_file = base64.b64encode(rendered_file.read()) + message = "Image is wrong\n%s\nImage:\necho '%s' | base64 -d >%s/%s_result.%s" % ( + report, encoded_rendered_file.strip().decode('utf8'), tempfile.gettempdir(), image, 'png' + ) + + # If the failure is in image sizes the diff file will not exists. + if os.path.exists(os.path.join(tempfile.gettempdir(), image + "_result_diff.png")): + with open(os.path.join(tempfile.gettempdir(), image + "_result_diff.png"), "rb") as diff_file: + if not os.environ.get('ENCODED_OUTPUT'): + message = "Image is wrong\: diff file %s/%s_result_diff.%s" % (tempfile.gettempdir(), image, 'png') + else: + encoded_diff_file = base64.b64encode(diff_file.read()) + message += "\nDiff:\necho '%s' | base64 -d > %s/%s_result_diff.%s" % ( + encoded_diff_file.strip().decode('utf8'), tempfile.gettempdir(), image, 'png' + ) + + self.assertTrue(test, message) + + def _svg_to_png(svg_file_path, rendered_file_path, width): + svgr = QSvgRenderer(svg_file_path) + + height = width / svgr.viewBoxF().width() * svgr.viewBoxF().height() + + image = QImage(width, height, QImage.Format_ARGB32) + image.fill(Qt.transparent) + + p = QPainter(image) + p.setRenderHint(QPainter.Antialiasing, False) + svgr.render(p) + p.end() + + res = image.save(rendered_file_path, 'png') + if not res: + os.unlink(rendered_file_path) + """QGIS Server WMS Tests for GetPrint request""" def test_wms_getprint_basic(self): @@ -107,6 +239,22 @@ class TestQgsServerWMSGetPrint(QgsServerTestBase): r, h = self._result(self._execute_request(qs)) self._img_diff_error(r, h, "WMS_GetPrint_Basic", outputJpg=True) + # Output PDF + qs = "?" + "&".join(["%s=%s" % i for i in list({ + "MAP": urllib.parse.quote(self.projectPath), + "SERVICE": "WMS", + "VERSION": "1.1.1", + "REQUEST": "GetPrint", + "TEMPLATE": "layoutA4", + "FORMAT": "pdf", + "map0:EXTENT": "-33626185.498,-13032965.185,33978427.737,16020257.031", + "LAYERS": "Country,Hello", + "CRS": "EPSG:3857" + }.items())]) + + r, h = self._result(self._execute_request(qs)) + self._pdf_diff_error(r, h, "WMS_GetPrint_Basic_Pdf", dpi=300) + def test_wms_getprint_style(self): # default style qs = "?" + "&".join(["%s=%s" % i for i in list({ @@ -312,6 +460,24 @@ class TestQgsServerWMSGetPrint(QgsServerTestBase): r, h = self._result(self._execute_request(qs)) self._img_diff_error(r, h, "WMS_GetPrint_Selection") + # Output PDF + qs = "?" + "&".join(["%s=%s" % i for i in list({ + "MAP": urllib.parse.quote(self.projectPath), + "SERVICE": "WMS", + "VERSION": "1.1.1", + "REQUEST": "GetPrint", + "TEMPLATE": "layoutA4", + "FORMAT": "pdf", + "LAYERS": "Country,Hello", + "map0:EXTENT": "-33626185.498,-13032965.185,33978427.737,16020257.031", + "map0:LAYERS": "Country,Hello", + "CRS": "EPSG:3857", + "SELECTION": "Country: 4" + }.items())]) + + r, h = self._result(self._execute_request(qs)) + self._pdf_diff_error(r, h, "WMS_GetPrint_Selection_Pdf", dpi=300) + def test_wms_getprint_opacity(self): qs = "?" + "&".join(["%s=%s" % i for i in list({ "MAP": urllib.parse.quote(self.projectPath), diff --git a/tests/src/python/test_qgsserver_wmts.py b/tests/src/python/test_qgsserver_wmts.py index aadd962088..9801774cf5 100644 --- a/tests/src/python/test_qgsserver_wmts.py +++ b/tests/src/python/test_qgsserver_wmts.py @@ -14,7 +14,7 @@ __author__ = 'René-Luc Dhont' __date__ = '19/09/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgsserverlogger.py b/tests/src/python/test_qgsserverlogger.py index 48f4333fee..bd61767a2a 100644 --- a/tests/src/python/test_qgsserverlogger.py +++ b/tests/src/python/test_qgsserverlogger.py @@ -4,7 +4,7 @@ __author__ = 'Eric Lemoine' __date__ = '11/09/2018' __copyright__ = 'Copyright 2018, The QGIS Project' -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os diff --git a/tests/src/python/test_qgssettings.py b/tests/src/python/test_qgssettings.py index c43a522746..c6b97dcc03 100644 --- a/tests/src/python/test_qgssettings.py +++ b/tests/src/python/test_qgssettings.py @@ -20,7 +20,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '02/02/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' start_app() diff --git a/tests/src/python/test_qgsshortcutsmanager.py b/tests/src/python/test_qgsshortcutsmanager.py index a5b4a21a32..a62acd37a0 100644 --- a/tests/src/python/test_qgsshortcutsmanager.py +++ b/tests/src/python/test_qgsshortcutsmanager.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '28/05/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssimplelinesymbollayer.py b/tests/src/python/test_qgssimplelinesymbollayer.py index 0dc304f619..d8fc176eb3 100644 --- a/tests/src/python/test_qgssimplelinesymbollayer.py +++ b/tests/src/python/test_qgssimplelinesymbollayer.py @@ -21,7 +21,7 @@ __author__ = 'Nyall Dawson' __date__ = 'November 2018' __copyright__ = '(C) 2018, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssinglesymbolrenderer.py b/tests/src/python/test_qgssinglesymbolrenderer.py index e9c1b8f788..2ed8e4d22b 100644 --- a/tests/src/python/test_qgssinglesymbolrenderer.py +++ b/tests/src/python/test_qgssinglesymbolrenderer.py @@ -21,7 +21,7 @@ __author__ = 'Matthias Kuhn' __date__ = 'December 2015' __copyright__ = '(C) 2015, Matthias Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssourceselectprovider.py b/tests/src/python/test_qgssourceselectprovider.py index 7003ede347..39a55004d2 100644 --- a/tests/src/python/test_qgssourceselectprovider.py +++ b/tests/src/python/test_qgssourceselectprovider.py @@ -22,7 +22,7 @@ __author__ = 'Alessandro Pasotti' __date__ = '01/09/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' start_app() diff --git a/tests/src/python/test_qgsspatialindex.py b/tests/src/python/test_qgsspatialindex.py index 2623531167..8003ac5840 100644 --- a/tests/src/python/test_qgsspatialindex.py +++ b/tests/src/python/test_qgsspatialindex.py @@ -10,7 +10,7 @@ __author__ = 'Alexander Bruy' __date__ = '20/01/2011' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssqlstatement.py b/tests/src/python/test_qgssqlstatement.py index dc2f1f50fb..430e649ac4 100644 --- a/tests/src/python/test_qgssqlstatement.py +++ b/tests/src/python/test_qgssqlstatement.py @@ -10,7 +10,7 @@ __author__ = 'Even Rouault' __date__ = '4/4/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.testing import unittest from qgis.core import QgsSQLStatement diff --git a/tests/src/python/test_qgsstringstatisticalsummary.py b/tests/src/python/test_qgsstringstatisticalsummary.py index 3748f0a320..d707226942 100644 --- a/tests/src/python/test_qgsstringstatisticalsummary.py +++ b/tests/src/python/test_qgsstringstatisticalsummary.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '07/05/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsstringutils.py b/tests/src/python/test_qgsstringutils.py index c3891875d3..7ac47fa3a9 100644 --- a/tests/src/python/test_qgsstringutils.py +++ b/tests/src/python/test_qgsstringutils.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '30/08/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsstylemodel.py b/tests/src/python/test_qgsstylemodel.py index 4fd03fb9e2..c4b0d07aa5 100644 --- a/tests/src/python/test_qgsstylemodel.py +++ b/tests/src/python/test_qgsstylemodel.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '10/09/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssvgcache.py b/tests/src/python/test_qgssvgcache.py index 283db70f3d..b7ab630bb7 100644 --- a/tests/src/python/test_qgssvgcache.py +++ b/tests/src/python/test_qgssvgcache.py @@ -10,7 +10,7 @@ __author__ = '(C) 2018 by Nyall Dawson' __date__ = '29/03/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssvgsourcelineedit.py b/tests/src/python/test_qgssvgsourcelineedit.py index f62cce352b..01ae065a23 100644 --- a/tests/src/python/test_qgssvgsourcelineedit.py +++ b/tests/src/python/test_qgssvgsourcelineedit.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '19/07/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgssymbol.py b/tests/src/python/test_qgssymbol.py index 7838eccba3..51a091bf3a 100644 --- a/tests/src/python/test_qgssymbol.py +++ b/tests/src/python/test_qgssymbol.py @@ -21,7 +21,7 @@ __author__ = 'Nyall Dawson' __date__ = 'January 2016' __copyright__ = '(C) 2016, Nyall Dawson' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssymbolbutton.py b/tests/src/python/test_qgssymbolbutton.py index 8f9742dd7f..4efacf78c8 100644 --- a/tests/src/python/test_qgssymbolbutton.py +++ b/tests/src/python/test_qgssymbolbutton.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '23/07/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssymbolexpressionvariables.py b/tests/src/python/test_qgssymbolexpressionvariables.py index 66fa690664..bf08c9c76c 100644 --- a/tests/src/python/test_qgssymbolexpressionvariables.py +++ b/tests/src/python/test_qgssymbolexpressionvariables.py @@ -21,7 +21,7 @@ __author__ = 'Matthias Kuhn' __date__ = 'January 2016' __copyright__ = '(C) 2016, Matthiasd Kuhn' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssymbollayer.py b/tests/src/python/test_qgssymbollayer.py index 4bfe4635d9..1a70c89223 100644 --- a/tests/src/python/test_qgssymbollayer.py +++ b/tests/src/python/test_qgssymbollayer.py @@ -21,7 +21,7 @@ __author__ = 'Massimo Endrighi' __date__ = 'October 2012' __copyright__ = '(C) 2012, Massimo Endrighi' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssymbollayer_createsld.py b/tests/src/python/test_qgssymbollayer_createsld.py index 0f5dd4778e..af09b60c6c 100644 --- a/tests/src/python/test_qgssymbollayer_createsld.py +++ b/tests/src/python/test_qgssymbollayer_createsld.py @@ -19,7 +19,7 @@ __author__ = 'Andrea Aime' __date__ = 'July 2016' __copyright__ = '(C) 2012, Andrea Aime' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssymbollayer_readsld.py b/tests/src/python/test_qgssymbollayer_readsld.py index 024c227378..8a85c058a3 100644 --- a/tests/src/python/test_qgssymbollayer_readsld.py +++ b/tests/src/python/test_qgssymbollayer_readsld.py @@ -21,7 +21,7 @@ __author__ = 'Jorge Gustavo Rocha' __date__ = 'January 2017' __copyright__ = '(C) 2017, Jorge Gustavo Rocha' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgssymbollayerutils.py b/tests/src/python/test_qgssymbollayerutils.py index 31b818d4e7..155152b917 100644 --- a/tests/src/python/test_qgssymbollayerutils.py +++ b/tests/src/python/test_qgssymbollayerutils.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2016-09' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgstaskmanager.py b/tests/src/python/test_qgstaskmanager.py index c84f195f4d..57a77b7136 100644 --- a/tests/src/python/test_qgstaskmanager.py +++ b/tests/src/python/test_qgstaskmanager.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '26/04/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from time import sleep diff --git a/tests/src/python/test_qgstextformatwidget.py b/tests/src/python/test_qgstextformatwidget.py index ebd8f7a9a3..106ed1bc67 100644 --- a/tests/src/python/test_qgstextformatwidget.py +++ b/tests/src/python/test_qgstextformatwidget.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2016-09' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA @@ -43,7 +43,7 @@ class PyQgsTextFormatWidget(unittest.TestCase): s.setOpacity(0.5) s.setJoinStyle(Qt.RoundJoin) s.setBlendMode(QPainter.CompositionMode_Difference) - s.setPaintEffect(QgsBlurEffect.create({'blur_level': '10', 'enabled': '1'})) + s.setPaintEffect(QgsBlurEffect.create({'blur_level': '2.0', 'blur_unit': QgsUnitTypes.encodeUnit(QgsUnitTypes.RenderMillimeters), 'enabled': '1'})) return s def checkBufferSettings(self, s): @@ -58,7 +58,7 @@ class PyQgsTextFormatWidget(unittest.TestCase): self.assertEqual(s.joinStyle(), Qt.RoundJoin) self.assertEqual(s.blendMode(), QPainter.CompositionMode_Difference) self.assertTrue(s.paintEffect()) - self.assertEqual(s.paintEffect().blurLevel(), 10) + self.assertEqual(s.paintEffect().blurLevel(), 2.0) def createBackgroundSettings(self): s = QgsTextBackgroundSettings() @@ -85,7 +85,7 @@ class PyQgsTextFormatWidget(unittest.TestCase): s.setStrokeWidth(7) s.setStrokeWidthUnit(QgsUnitTypes.RenderMapUnits) s.setStrokeWidthMapUnitScale(QgsMapUnitScale(QgsMapUnitScale(25, 26))) - s.setPaintEffect(QgsBlurEffect.create({'blur_level': '6', 'enabled': '1'})) + s.setPaintEffect(QgsBlurEffect.create({'blur_level': '6.0', 'blur_unit': QgsUnitTypes.encodeUnit(QgsUnitTypes.RenderMillimeters), 'enabled': '1'})) return s def checkBackgroundSettings(self, s): @@ -114,7 +114,7 @@ class PyQgsTextFormatWidget(unittest.TestCase): self.assertEqual(s.strokeWidthUnit(), QgsUnitTypes.RenderMapUnits) self.assertEqual(s.strokeWidthMapUnitScale(), QgsMapUnitScale(25, 26)) self.assertTrue(s.paintEffect()) - self.assertEqual(s.paintEffect().blurLevel(), 6) + self.assertEqual(s.paintEffect().blurLevel(), 6.0) def createShadowSettings(self): s = QgsTextShadowSettings() diff --git a/tests/src/python/test_qgstextrenderer.py b/tests/src/python/test_qgstextrenderer.py index 9498690822..7ea87bc695 100644 --- a/tests/src/python/test_qgstextrenderer.py +++ b/tests/src/python/test_qgstextrenderer.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2016-09' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgstreewidgetitem.py b/tests/src/python/test_qgstreewidgetitem.py index 35ef815a18..8e9ff9a8a5 100644 --- a/tests/src/python/test_qgstreewidgetitem.py +++ b/tests/src/python/test_qgstreewidgetitem.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '12/07/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA switch sip api diff --git a/tests/src/python/test_qgsunittypes.py b/tests/src/python/test_qgsunittypes.py index 854aecf4c7..bd1130db66 100644 --- a/tests/src/python/test_qgsunittypes.py +++ b/tests/src/python/test_qgsunittypes.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '03.02.2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsvectorfilewriter.py b/tests/src/python/test_qgsvectorfilewriter.py index d3a351c76b..06cc070e05 100644 --- a/tests/src/python/test_qgsvectorfilewriter.py +++ b/tests/src/python/test_qgsvectorfilewriter.py @@ -13,7 +13,7 @@ __author__ = 'Tim Sutton' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsvectorfilewritertask.py b/tests/src/python/test_qgsvectorfilewritertask.py index 7b3d94082a..5985ad3000 100644 --- a/tests/src/python/test_qgsvectorfilewritertask.py +++ b/tests/src/python/test_qgsvectorfilewritertask.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '12/02/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgsvectorlayer.py b/tests/src/python/test_qgsvectorlayer.py index 527566eba2..a56e637b34 100755 --- a/tests/src/python/test_qgsvectorlayer.py +++ b/tests/src/python/test_qgsvectorlayer.py @@ -10,7 +10,7 @@ __author__ = 'Tim Sutton' __date__ = '20/08/2012' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsvectorlayercache.py b/tests/src/python/test_qgsvectorlayercache.py index 2dc048eba2..91d2157dcf 100644 --- a/tests/src/python/test_qgsvectorlayercache.py +++ b/tests/src/python/test_qgsvectorlayercache.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '08/06/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsvectorlayereditbuffer.py b/tests/src/python/test_qgsvectorlayereditbuffer.py index d06989ae20..d93d9e9824 100644 --- a/tests/src/python/test_qgsvectorlayereditbuffer.py +++ b/tests/src/python/test_qgsvectorlayereditbuffer.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '15/07/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsvectorlayerselectedfeaturesource.py b/tests/src/python/test_qgsvectorlayerselectedfeaturesource.py index 17b82ec180..4ef1c9d61e 100644 --- a/tests/src/python/test_qgsvectorlayerselectedfeaturesource.py +++ b/tests/src/python/test_qgsvectorlayerselectedfeaturesource.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '2018-07-05' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import ( diff --git a/tests/src/python/test_qgsvectorlayertools.py b/tests/src/python/test_qgsvectorlayertools.py index 39952e2b1e..2743515107 100644 --- a/tests/src/python/test_qgsvectorlayertools.py +++ b/tests/src/python/test_qgsvectorlayertools.py @@ -11,7 +11,7 @@ __author__ = 'Denis Rouzaud' __date__ = '2016-11-07' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' from qgis.core import QgsFeatureRequest, QgsVectorLayer, QgsProject, QgsVectorLayerTools from qgis.testing import start_app, unittest diff --git a/tests/src/python/test_qgsvectorlayerutils.py b/tests/src/python/test_qgsvectorlayerutils.py index 0d078b97b4..e0c62904f1 100644 --- a/tests/src/python/test_qgsvectorlayerutils.py +++ b/tests/src/python/test_qgsvectorlayerutils.py @@ -10,7 +10,7 @@ __author__ = 'Nyall Dawson' __date__ = '25/10/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os import qgis # NOQA diff --git a/tests/src/python/test_qgsvirtuallayerdefinition.py b/tests/src/python/test_qgsvirtuallayerdefinition.py index 9021ea4f88..9c0dcee4eb 100644 --- a/tests/src/python/test_qgsvirtuallayerdefinition.py +++ b/tests/src/python/test_qgsvirtuallayerdefinition.py @@ -10,7 +10,7 @@ __author__ = 'Hugo Mercier' __date__ = '10/12/2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_qgsvirtuallayertask.py b/tests/src/python/test_qgsvirtuallayertask.py index c92fa0d09e..213fddbc76 100644 --- a/tests/src/python/test_qgsvirtuallayertask.py +++ b/tests/src/python/test_qgsvirtuallayertask.py @@ -10,7 +10,7 @@ __author__ = 'Paul Blottiere' __date__ = '28/02/2018' __copyright__ = 'Copyright 2018, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA import os diff --git a/tests/src/python/test_qgsxmlutils.py b/tests/src/python/test_qgsxmlutils.py index 866aee8002..83e12291cb 100644 --- a/tests/src/python/test_qgsxmlutils.py +++ b/tests/src/python/test_qgsxmlutils.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '18/11/2016' __copyright__ = 'Copyright 2016, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA switch sip api diff --git a/tests/src/python/test_qgsziputils.py b/tests/src/python/test_qgsziputils.py index 8c07b1651b..fc00819db7 100644 --- a/tests/src/python/test_qgsziputils.py +++ b/tests/src/python/test_qgsziputils.py @@ -10,7 +10,7 @@ __author__ = 'Paul Blottiere' __date__ = '06/7/2017' __copyright__ = 'Copyright 2017, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os from qgis.core import QgsZipUtils diff --git a/tests/src/python/test_qgszonalstatistics.py b/tests/src/python/test_qgszonalstatistics.py index 5652b35307..03c092002b 100644 --- a/tests/src/python/test_qgszonalstatistics.py +++ b/tests/src/python/test_qgszonalstatistics.py @@ -10,7 +10,7 @@ __author__ = 'Alexander Bruy' __date__ = '15/07/2013' __copyright__ = 'Copyright 2013, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/test_syntactic_sugar.py b/tests/src/python/test_syntactic_sugar.py index 3df6b7422a..fbea742462 100644 --- a/tests/src/python/test_syntactic_sugar.py +++ b/tests/src/python/test_syntactic_sugar.py @@ -10,7 +10,7 @@ __author__ = 'Matthias Kuhn' __date__ = '12.8.2015' __copyright__ = 'Copyright 2015, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/src/python/utilities.py b/tests/src/python/utilities.py index 9fc4190be4..c3b8056c44 100644 --- a/tests/src/python/utilities.py +++ b/tests/src/python/utilities.py @@ -9,7 +9,7 @@ __author__ = 'Tim Sutton (tim@linfiniti.com)' __date__ = '20/01/2011' __copyright__ = 'Copyright 2012, The QGIS Project' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import qgis # NOQA diff --git a/tests/testdata/control_images/effects/expected_painteffect_blur/expected_painteffect_blur.png b/tests/testdata/control_images/effects/expected_painteffect_blur/expected_painteffect_blur.png index fae81fcbdb641367e4faad9ebf32bd6b977f5665..c108bd3198002022e1c6199b9013af03e2c00ccf 100644 GIT binary patch literal 6008 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 literal 6302 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 UVLhQ@+5i9m07*qoM6N<$f*j`<GXMYp diff --git a/tests/testdata/control_images/effects/expected_painteffect_composer/expected_painteffect_composer.png b/tests/testdata/control_images/effects/expected_painteffect_composer/expected_painteffect_composer.png index f1a360c7806f1138fd9b1db514a0d06bc1a04091..ecc82055e7f0a9c28e15bdb2a2cffc9d24b4bdcc 100644 GIT binary patch literal 50665 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 XE+VO+i{cCSlk^nilx54MO#=Q8K`G0O literal 48589 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 diff --git a/tests/testdata/control_images/effects/expected_painteffect_dropshadow/expected_painteffect_dropshadow.png b/tests/testdata/control_images/effects/expected_painteffect_dropshadow/expected_painteffect_dropshadow.png index c4eabd3be9253939c2177597551f12c40cf18297..a45f9c67de1719695dd11ce34e795ce830734ef9 100644 GIT binary patch delta 4967 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 delta 4187 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 diff --git a/tests/testdata/control_images/effects/expected_painteffect_outerglow/expected_painteffect_outerglow.png b/tests/testdata/control_images/effects/expected_painteffect_outerglow/expected_painteffect_outerglow.png index 65f970c1586940e107c87a066ba0be4c052cf04a..c3396b3e134e26b337e361c2125952418c847f03 100644 GIT binary patch delta 2444 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 KPDHLk0$_r{631Hr delta 1738 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 diff --git a/tests/testdata/control_images/effects/expected_painteffect_stack/expected_painteffect_stack.png b/tests/testdata/control_images/effects/expected_painteffect_stack/expected_painteffect_stack.png index a5c6b6978fab04c5924f702f4c8b3c65b596c161..d223cfbf1773cd736837b4b9a674eb893d57f50d 100644 GIT binary patch delta 5413 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 P00000NkvXXu0mjfB-NYA delta 6051 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 diff --git a/tests/testdata/control_images/expected_pal_placement/sp_label_curved_zero_width_char/sp_label_curved_zero_width_char.png b/tests/testdata/control_images/expected_pal_placement/sp_label_curved_zero_width_char/sp_label_curved_zero_width_char.png index 555b8a814e1a2404bb8c5eda78d8b2cbf1e094bb..7537a97469253c2bbd51b7407b0bab85761888df 100644 GIT binary patch literal 8529 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 Uv}Rcd1Y7`8lvR^KNtu25UmF@0>;M1& literal 8497 zcmeHN=R2G6*H1KBRlC%xRY5~lYgBDjE7TUTQ!Pboikd-())u2wQJYv5d&THNT53h@ z4x6A<%<$ZPzqijH@Vt0l<Z@l^lly$nIiK@6<C|B;hB}P&JoF$Ch!L)<X$k^?3xN+8 z-C5v27d4}lfIsKGb*=nBpbKoLAMnt0_z?&s2!d<gF@N%wJRKC8I^Vwg*NdV~$%N3s zBLsiOz|~XkkBY}2tm>k1_a$9&CrH+1#G29JKSLz5`kV)8!v#hm=+zpz5xp?;iVJAY zA}APc$)2hLW@8hbbevt-7rw_JMEp9JlNs_zb>k#7b82_=IJvrGcBi#kVr^W7j|mL= z>HO>19ylCZBm{KhJk5E~eR>ERsFR%z3W|WS=z>6If=M7yvAQ4_bT3k!29!Z_DoFeP zf}qYH3YTNtUHONFuP|EEg9KA=U*<s}U~X1574stabdGWnzc(?MzvmJK;DGbA7rk9V zM;)w)u}%uC>VMEUD4eofYaTX8!>6{9f3rOb@GXO@?GCFI@m8<3#TB=pn$LVn;&60- zPT3nNTTvVPJa>itm3s|5TdIKb1>roXFwOL>2UbKqN0=08Z$%hexZo;dF5^XT52D2p zVa7T!H^H)8K(vI=Q#A$nbWUPReN#1!BC9&3tYrB~mk55IW9f-uo}%Q;`FCAFyy;kh zV;#I;=`(~Fk2=6j{YZ~T=TKWgw2lTl#Dh}-)0+CxGsQn|xgHJb!A<oo8qoc%mi|Gs zz?(`xU>6qCC_+gfLEVr1Y9s;mbo_%)d<sxFy7z7IAHNR4NqKrFqNH)Oe^f3~Q5LX) z#yqZap>QMOH<LgrwBGR^!p=TV_3$7Y2S|miXr5dj(E^~DE3Ri#G+%FY7{U#P6<1N_ zKsaSVI67NdtD#MUY!wvk9`qb-lr^`Q7A*Q7Ok<>I)HiLiYt*r+UZ|?R3}202+M5l3 z!UXbj_L!~`d^@0J{=Vt%&CdZnNs`sZ9v6qGZKe;6g}|F{^6L<|m>H2Wsh2nKONv>h zjT}V$jwT4PmIAFWa_&pFDGful8u%;FqO((f0UFOmLOQ+s1^XJMkQO@Yu#*{X)4c1& zGor)>EP>gCcnkK+7zL^~>@&9W%%g<u*x=_c;Usm>xZJP~05SaXlw*(aXk9v+RWYe| z*g+ek)`Y~4+!C^DXbZxBgE5qWc;e{KcV@&{Ffxj<;|iBPD_Rlt4-@{tq)fVx2cU4W zYs%x$er2*v!0IBH{nEnX=z#zS8z_<CvgxMzdjx#YU<aT2n!@+R%p(68HCGQiVJ6mh z%Q?rr8Hm_7Gq+$-uq;Fz3c4;6tSj`ryzpws(+Z~|DpDG{J}C)DHyS2+^egjOwwU?@ zF3wbb4)O&@LhhTF%UmiIMOR-MRrzUQbNz?rIIkmYb_xX+S)Y|uxV-Yduouw56t?dM zzyc@oP#io52F!gSYc5wevvpAt7t;BCH>25u)5$B<=`j6RDUxlMymCR%4d>q6f5|q_ zTDpW){p>pp8gDkEXm(|%;s!fMzm$qed7?FG_a=I1#t0gHH~Ug~!s0ixPxV9qQ|5k; zZh_}$A#4$5I3ZNS{1%x=4R~wp7)zZ4O>Fz1Xj31gNj4g%>3c3+cvrCuNn&QvRj2c7 z<gqs2jX+KW5OCNlHf#8`A43>^+uzOt5*3Ze>|Tp;-wWo=n~LLG3uQs{;5lXp8%xyL z1ov~>Ng9s&+l%13O3hcf>uVR@LG@7}yM2!FE&5UA9a)+l2p1Zp@hn+*@)4isOLq^8 zK1$+2$xke0&D_!`QSqYLf#=<C<W}a=pa}+r?hlOC3UM0GArJ*;xw*@ew<L@v0+Kx> z^~P)JG4$7$Yx(F`mralwcp$44eLvNordrU%J({Z^zy=l`Pshoxw%mXgH<PV?>7sNG zY*B?~Z?2~Ri~7DI{%7<l##KTtf!QNm#=&<Se<pPs$GO)B6?h=u7#FrCx-Xq9zNA<b ztzBDn>++Da7+NROZ!B8`hUU9B?}wekE^zeZgeijAA*D$Xpv8e?kAfWpJa9>AqjIDU zdGhXG$FY_}Kd4Uu)#}x{u?>oOxw-4>a6=p_s2&f1_DcoARMR;cs|FjZAqDPyB%4lt z>^(ICcl<jI{U-b@n4RYI#TVU$Cu{1zq*~io%q0>zW=6}Hy%L7fbui^`qV(zVSndjf z!JQSz$dH3P_a{b)Y-)#=W%HkSFnjM>9)2OFBL!^?Bm3_e4oX!8A&72L+e0`93kci& z2jwzV#s(w&ca6p=B-aa7FFnyo^=+CkB~?>Lw_0nNVw~@<9rRoOgkWK{6F<k|ZSqeg z;A_%auCu(xjFK|cCW=dUFrVJ-J*$)F{_Q3vI5i0)|Db)ezP`X#;875P?<iWG=3Y0q z=03%#Z>8t&N^4vN_C<(=qg(7Xr2|8QmuU1U-6hx(EE%2WabltYBa5aY&-rQ2Zx(co zemA}|H*hIS?03RtEO0D%YoM-gsVhlAk+69{P<k4{dV|8a*VT#c;h3R^7Ub{_j_2+4 zGP{jpO5AKc>RZ@SoQS>1>9y@qKF-Cze&0fa1mbj_L-xL}#7RIIQUCS6JGq7+^xUZL zA4$Bm<&V)=S8Ua7AK&gDMgzqjoYr*EPU6|dc^W%QuSBdW)snRJ;FE$*gWrXbOxubx zsOItSfj6gEtO4ZMOTXulj*-Vfk-6N{BZ9;RQ>zBAW!~|eQx@({(QXLyA@D_Ua<JVO zTs&9tsAHuI;lLFAn|Up{zQXdAn05nie;<&7>K+$g@Q<HW)_M-%y1&`%`$#~8i`+~V zo}AQUAGNGzT7>{Phrm#lfYfPkV_pF4dE!!N*3d5Z>?irx3n86`YC`{p@Fau$v$Hhk zy@xx|SGkzv<Cj*<HABiD9j`AFlF84Ye23jmxZJRumfydr?aFXKnBF=dBKB+!o-8iY zxc(q<tOr0^Y9f(+W;{=9-D}LhwF7qeuO`u5W(s5k)B)ietFXzOgHXp-O`mAyfAQ{% zbHsF;cU2!zIM>hI$M(P9mtvy?A|VVyKPG(d#=9f!!?Jmda;Mes<k)SpvI&q{|N3P_ zUfrPgg|OX-sFhqiI&<6N__8OR-)(k`cXfr+C%qpXHVHkta&OZ(ZwOEJ3+5YeD$+sK zOV*hgkE*xSFOHMs@gCzAxTP10{+42;=;H^kwHxB+T)B{+Q}x;Iut#yB)pdDYjq{|7 zj|#nFKX-F}VD!<EaFmoV87fhN>Uhoe1b9YT<MGr63uLaA4HFv&n?_RkQ+mW;>sOSB z!ezXtL>fR9f6(Oz+6__}Ubtj(vN5BBpg8ndTvrLK={I#w?#--sw9tk;e(PoZDB!aE z*>4z~-6Q9ywQ(6IVs^>Ga_tB&zv{wbNUdHzPq%kz63f5O(l<G0Q*cAiu9(GzM(<Fr zF4r0Xhq9RZb!O!iUo{6Sa&=HgukQWdOBg9Ha|YObSqNKHI%~n?K4m^wEhxTA!q4cj zS;4hQJ;(7Htz^k>Xalt%$4S<jPn&@}a(tG6Yu~1S!o|VFUfvL=Ie+KNlGn>P9Cm77 zcvcN>XJ7FwOgPa!>+hB-PUuOLx`we;c1@>*K<xp#NeEx51ygG51MC2tT5mIaB#kG- zUa;S|#2_bF%3f5t)z?cu!w*g@$E6lkSoXFa0;qM)5w^(*5uQA5X-gEM<$6wk9_-=& zIV$DYEi{NcOhsUm+kB{ZG?66$$Gt9UGyj85$l)3%nD5jMI6LwRy;9fc^gTQ9^Nf7^ zpuLQ5lTby84fjTSRcf{k$IQ4;2<0B%(H8v&AhNPgFfnMl8BHP+*wvduc2C>H%N$;G zUJI+Nw4+qfr~?l%jB`iwe;?TJAjNdp6}3#!_(N?NYzi7D0xq^Zy4t>dPlL{0>-n<? z=_wPnr#9$EW!QXjJW&4o@DI1)!jpWk>hcwAIRmO7`R%B&A@M;Jo$4Jx{HFD&%pQ$A z1_A#N?>;uaQ10J7cbqG;Iv>_Ac;(qoH*;M&x~gZypHwIc2~Q?h0(A*N+WHL^o{Tle z1n>(_MqHqSW=yQa(c)fBtZrfcI{VKBQ!NHbn=ew1o4tS(>TPY@O>`F^_?EqyR(6^c z;4+QK{EmO>%2*LI<$9OVeHy4nV(?Y7@QO4{t6usR_Bh$Y#*;7!cpW{dP%flF_XsGD zW;~an>z5N#yihYIVc0>BR!f`8iuq45nW*x(KzoIoc&eP7k=pcQ;mM~aj9qJ`N%zHt z?J~rgktVlwy1rP80K6vY^eLu#P06X%lVVF9kQ1@~vG@MVfd5uN+Q%ds8d?svdmol4 zZ~WAHhs9l+lF6Tk2TZ&iQ;~+_xAa`Qt>^2m{Yv$Ku!}=8qLduwdc(2h1I(xS?2=pI zl%;)noZ=`cd~-#i=)9Ye`CX&<eXEFS6QQnZZMQ+jPbt*GL0n-E#X@9bNy$m6xT}~c z)(r^CugdGylUd>q8{pV=)vbhFB+Ziq`t#v3q)XYYhw!`EBo)HJ`%}7@8I{LR%Wk^^ zJ%%0s_;mwIiQbzF76oD)*jgT}rq;7}>dzq^o21(mZ@i*!z4O#L>dEDq(W1CO6r!)c zGOWaXpw)b5u?5o?KnTku70ql66Aw#YuvE}N_eMG=ZNKzQXPIWpci4w+`Wl3hwY0|g zkfS2V-dnpD9`cO$uk_rU(;f%-L5LlQ+`tpEFhX8q`CF5~%FM}2(}BI)eAZitdP7Bj z<F1RVrW<2Je-ab+6`r0n-YASP27;Hn`6#wOO%K-As-H58xvTbL;rqptM`NSkcDaKI zwhsm%cgvv@zH~sl--f&Dk=F33eLam?&5py&Yd95&GOr+KB-pnY!)iDt*big!z?mc2 zRiArsH&qH`^K=y?V-ei7@iBBluhRM2J`dL}Da(y0Vb!MdzBV3L<oxi#S>kOam#wgI zZZ(W`Li2DDe<NR|rQ1lRrHAVu8d=`IP>Su(I!h34E73X4O;|NYnTU){h(&m#T3jLF z&ND`s5zoPK;rip(m<B*!+Rb_D7hYCvkfajV*B+Rn(KTF%`f7>*$<A$v-NvkFMasTx zVp|F;d~K~Tm)IyZ{32D1aeCLs2{IK_b@|Ias3cz_%E7|<nlUgjyvHPknTUw2PZwpJ z&ALK1n819f#PxRUrQYz>TQPiH6ry(``Ci*QA%a=<Jx|MF&sm(%eJ*p|8y~}l@pco! zzPpn`$mcs0aq5N_%%2#2K&n$#`TIdn5|^v^d*gOFv_MYVLO-8}W(r`2n=n0_Q4D`} zd0bU$eio1aL~I9kryw3jaEW9JoxdcB!}JsdLj6l5T2*G>-v>q-vuDCsG~FgB5|YU1 zKDeLHC!hL}nu}i8c4MD5FF7-IA~4EsKQWu{=VSmhK#D9jxHZbr&Bpb&9?j<@`sl87 zo{0<lAp9Y0X~j^<^IB!==8V0;k@wRfz2mBd3U|bHd(}0C#|7;rvJREkro%2i@lWQ6 z^EeaU&CfO^J;9!>6r!24E~ZugLvFtQ$|pY6!Z$(N{%cXhIXZ!0?=Fu1_Ci42F*SG4 zoA360W$OU%aTl}4Io^$<uf1KWA02zfKX9*C^q!W)5jM9>KJ;V<#x>;5z0L4jXJ*xo z@S%e?eax<1YOBd*C#`<}7{4KYSTu_p#^O}uXN3;yxUZiaySVY}nXDQg!k<2+i}?HF zZg;7&3fE{UwXi4sl7Ur+#b1s?^DImaPO3$NiMcwKYgwhgA=}K(@i{d6wnr8VO<TMQ zl!2JC`stkX12q_7E26l~zVLkxKi|=74zwbfA(8YuCK55U?z16L;&k&4WRE5Cnb7`$ zHgb8+nBMPps>N2|slO&fop29&ef>p6c@Gl0-hN<YP0&>d*zC-hrR`K%6Z!>J%fULk za0TIW*~dxwuB$m?h0HU_9{scvfq&!~&kG|-kF{5eg5T$VeIE$+=8Jq54h(Qt31SF2 zlMu$RDy6)~9}+l%{f?+HN~U>t$EFGkwmJJ)`5l&mUsw-!rZj^0&PgiiD%NW`{|oY~ zS`#bsI5ti>{+mun325ODd2bQRGa$W26&894@_VPzog}G<;-_UFoGEt2gx^`l9LBEn ze;Xt4b`)vFGat?!7w)Evv1muYjfI}SuQ42Kb}JQk4Mh|cw^<bSG~7a5v#)v~^XSk~ zvj0!`4=I|jPdAb@Qp=xSm}wI4-v2sMnU#7xCO_ht{VqmC9`^yelCnFTf9C6}bUQk0 zpwiEG(R$UbSCzFOy>zAvdVy>{@LNF78Z<I;YtKAUbAV)UMzU)Fxwq+3IN4*&g;^_o zbi9Fqwbh!XAyFkCPzU&6;exi~@Zu%V_CscvCIizIujwg8w$%nUgYdw1MY9TP+uaEJ zrlk|KiCxavtUe1kGE$|G<%TI@F7`0?ilS2L-+l?bnR>e&=YhdwTKy4T4sy!wMQ!z; zf=N*s<z|m(7@qsokG|PjiH-3@e@~_zD+Q`iZd<PYc0}g~e$ymh3oY%$$E~%w56Ax| zKWf{Y#TK@s4*QcF=GJBG_N|-|nq1(>=j!wt>rB_VRC+G~!%{^@TgBH#Qkf6QYNGXb zKz)&c^xD2~p4K_Yb?bmTj&-Y_bRKH1UL#o)lvNW-mx8kr><PLJZ)tMdW`l}uJ3t`U zX<)is{u;ZM8bb3azD{l1F)e@C%xmVf>kZ$orR<t<fV(2o?N~OyOlu7-RuVSXuR9T_ zG5DD$aEfbfo%5$a75ak6fyX<}3b9Od{Grk8ou4Q2d1G2<#h&jxUagx|E3mYQPq1&W z{Id8}#$8g_r(x;#sbt+6%}8R&oNM?8KKl@YL|*FAGLsWw$GMVFYdB^xT~2~$ss^b^ zDhl2n#9vScQ0oFno_2|2GdE3FubmP$ul;c9Sj@=V%*yf!{$YJ*DoJcZEH2`w)^qmz zZDGkX_n+npOdD61Rd<yBcq5KL9f<(zHVuXD?zV<Yi!zz{XQBi`biogr%s53Ke=~N~ zNH%)GgH=7$wDKZU<Se<6Q32)F(#65lY*Q5C@oqAsY7i&rBu|4LRA4X|)S-7!L)hQ4 zEefwQp{!-%+75#K6BD<4tz8Dec~4cKDSl3clM2UcjDrU8E!)eoDwyRg9ASx`&o+4b zy~CVsENh8sswg|Fw))FF4QZHB6{mcQB7Ewk3_r7%a+&oP&a%zc%`bdoC#6dScSX>= zCfZRWCwvJ#5^iegRV^B}nJ}bxlD7aWDSI#|?f-=l#lijR28{-%q*4kuvFrlSQeQ_I zsJ<;-5Y481IWe(bKBpMa70TDNzDjj){8u)0W-$MZI<X%br|ka=X!rTUWV5`ztMQ~0 z6Z#8g^ZBbzxrz^aa%B#VuSC&BXbNUV$@k~`t?uR8M~ixfA}_|A6sLbJJ1wtvKIdPk z<eG7Unxa&oYTKl)(yCMDmX&a$T7N>WAw9Y{{nxr_R~UB<#9rT^xxo^m8$S2Vti^8J zD5m;Hb>@ItrH|aGV$<Uy-1TED(LpwyS_mxey6HM$F5~-flL>LB)2>qGZauO4GE))9 ziNQsALU{w+>Qs65EBFf)OkwUfSF3w0U@o@ExrhB5vFob%E~z~B@ritx*OAHJbGs{h zL7cdiSQJ)Rx%>TM;ximwr|yrtTX~U^Eu-8Q{uA3~+ktWER)<4+gP?X@*6eJ>Cu9Tk zo1k>$?5a7p*>(6c)(BP;q5U4?u0IuAZG3vbh<hx393FO(tXprSJC+Afk__zA_do`u zhzSSSn<H}Wj4*9NZSbbW>UDfO!pf_y;u*Ddrxvp@G+LQhCjY=)vgH>8lSnsRgc2Q8 z%CG3)uf^3*2n4#%O)JL5YxtMMi56qY0Hv1-2f7>)AX-29X?kO)Tt9L1>6O{sIxYLS zX+;x`v8mDocDIv`?MGJu#hdK2LP4iaYYd;^)&z!#hrwQ&I<3XW9cnIHs99s`+IHPW zu~#m;_6$HKTo-71_0z{xD}j-98d$zA*`4+oiFaK?cTBzohsU!qt((kuuln!BxQ+61 z`}YlS`#UFJ6lkHjK_jUo<+p2701SIYfjP?otNqp%6}=lBd4~EpCdp<KGO5l4^W`Op z?+&E%Dg?{?L?-o$qGIYkK#&vdb~}q-2a}1fOXbBU<^z3_`9ZaUNueK8jIr8;n*p{S zX~k^^`T1)Giun7lRt7RxDJ^;zNqW9bJACYb?#;85q)^Ax5e(B~_lx1>FG|X_NqM)= z7Y20c$7Zq!e@wV`+MP3PULPowUjf`ZNCy?zf~KC0)_Q_0!5?ploe~(2b9QCB1fhUZ z_v)ebSbod7y6Zc~CYXdvd?2rUr^R#Y{2X&_;9K}2t?||Hk{=V|eC?sHfF=BkDz_#o zbTQ|W1Ee#H4yxuOpGp!_s|d-_H3r<wBx#qI{_om{G1-xDHUujOmFKi5wjSywTh(Aa zd*WJ03a!;R^gK#OcIztos{#4?Qy+pAXlBy`Rt+n4oS33@A0KO%lUJl~Pd=Bs`L2rr zt!8Mv`c`eS2Fz!}(*U!q05JRzVSd&e8JZ8U*5&QL8p369u(6cG#8cS>b?L~w1TMYt z{p4c8L5Q4DcHWt>>3pCQ#vV+dO*4=huW)n`YOK1VH=bM$)mT<b-C0ls77^u7Q3QCq ziCC`AYcEuBUk3R_RU~jauY2Q}x+W`p;!j!u%&D4__c_aeK~no@-@k0vZTYXxmw$$a zcA)#0%ymUsNyC+2))Pz+Ur-4DUPQr*WGIlhE_eG<_&ZVnddN5*=}5y$_E6lIC7jMC z!;A(UL!=8AZ4cT*52Z!?OG4Q7>XtwmjFEHBCX}-rQ|%gMHuB2_Iyr;CBwn}pe>9#= zdTPs51RxFwDy$}YP6xP=5Z@b1i&3#J7}CL19{3F?Ezh?4z4-vN-Dx8#t{-#7UV<{X zIk34Ok?Ui$ji{2+Vr{D5w+XXuUEdAaXxg2?vYYteAGu<2pbWmqxpVN=2DcfqJb+7U z-droO!+*okRI5M@SecSt`Z}!SNZA1*$nqV(T{9xd>p#QXQMphyT)+Q!aU}VH|MIS_ z$84HtMOu-PKG4ll1*X`vK{VjVxw|Q|Hq}!nO*#!zp<(}eWLEeEHb@(-JbJvQIp)uV zO_?oHgIdf%n+nzes?y{EsjC}efw+Ti+KHn*uPG+s-W|#`cjfETml+mzaI*Zn%=GPm zZ1!gVhzDW2jUXS*-1XJed~(#3*Wb?jl6nOc8AIP2+Z`PIxPL%k<m=*?%fPqtx<6F{ z@vykU<mx+stq^G-?YmnQ({>9GZ(0btN*f2ss;%=Orj{8(1N`Etbi$y>1of?`p7cla zvmvpfVS815{K0zBRqef-feZ`)XQ|&1Ok%iX=WO<C*VBBfiYy-XTY<0rao*U>{C^+c zUz=3_gJUZHnZpr-ZYclfJW%#GZv5Du4Fq8*USq&Ec{Ofr*p=m!a#6QmOO=U8OwQ`l zL_}y1`$6gCEV+#Yr<Hqnmtm<BfTbeN(G}i&)AUz`W2)BFVAyD^xMU2c;-BB~8Ug~p zQs;U4RUSo}I_Ek3SAnzipBkp5>KPOx1>7-R3enB+zWsP&0<{|FEHDPZ2z|JV5!Zp7 zAZa=+H<2R-4(;uV+nG9P)FHo#jy2wi9r7W=;ZF{b26yD#i}yL6*@t^!eW8aO<QB5( zX+LnP^3GFrUlYxctOezNc0fO@KDmC9$%JYiIW^#&hG4T`-^{yhjCVPf5?YbSAEf=| zdehhcJi99xf2E<pn)al{wC0PO`O)?Xg4(>e9|8xlq|z0#0vJUet4IJV@FGl=l>`7j zYCCZ6W*r(W8&_yIDYrr41v<*g_<;)HI8Y~%u287ZbG$StFdX5LBI-7bX)kPm0}D#P z!zwhcNxd7D$m89Ps)JfT#8IqTsqm+j4H2-qu3*yH49X&B>TZe>BJ3B9NBEKaDIiau z_1rJLgZ*F8wHJZ_v6yP8CY{2HlEUn^vMPlJVD)eOTlsBzI?$0|;Tc$4xmmMXv;OkQ z6Pr^&G1-NroVrU$!to3YUu5NXLY>5WPFCQfbA|@>IS)?F9@3Cb%3pQwJLwwZK-Hj% zjFd}&+rpp!In0G-bsnU@CGBp7v3adsR!*=<yz^JeE*1o$uTj^VYP8wktui+<k2~Hc zz8=A*k%2FP4CyjAl1_`k3?FeMEhFEc<LIIT1SEQqEmGF!Pl$MvbJ5y(?Y{vzx6vHM zK_Dm~2DX2Zsrw7WH;0`bimHn=X-7vv{vyyr;B*l}kPUw9hrD6Zv9+`EVG|Hz^U01A zGleTryO`@BNXxsU3w)%>a+%z)d*hg+c#72Fi-530RYMdAlyad(9k{z8H7CxNd~HMx zR!y!CA3HUk8V%xvAOy7@*SYmSZItlXJ_o7%ZUNlEkDdM&U?SjT;PGBx(P<PrweE1} zwwnyD+=GwmBq|p?<g{Jbm<NHTSSV{bOwk>jV37Lv#IQ3Unlt}rZ{;^nz|giKZ-Pv) RFkm7Gu4SlMrEx#%e*m|g03iSX diff --git a/tests/testdata/control_images/labelingengine/expected_label_adjacent_parts/expected_label_adjacent_parts.png b/tests/testdata/control_images/labelingengine/expected_label_adjacent_parts/expected_label_adjacent_parts.png new file mode 100644 index 0000000000000000000000000000000000000000..6dadd1dc8ab6efb20372f00d02818fc26e381683 GIT binary patch literal 2115 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A1Qgk|*?TjP;w<opEM{QfI|9OtQ?>b| z85r2Vdb&7<RLpsM!?5tRgM{0~Qn!>VZH@&q8X0Fc7Pd6rI&jlnVd|Pa(np_v`G4;E z-I;sOSh6#GsNZ{)nc;ybrvU>Civ$A`6AuF;BU?iQ1G9re1EYe%0R{nq1O^U{QR&fO zAtyOBE|p`bd2E&!|2X^mPpfOccgXKxx0u6lSie;E`rYlfZ}7!1{b7l}FfgesVI@1m z{oBXF{2A&lq@Ih+XK0xIm|JQz6O3m5AzJ8dxWe49|AASa|GonG@6OW>L~<Au^nCxg z?{}H>?MCkhA~lW!Q>=qZfj@%%A8*v|?)!Q`wSa57W%^!5hPXcc3@X+wAY10#KK`TP z*`MMXxvebcTpJqGV~>~Kf0%637t5snXrS`8&R2#9cdl*BOTJxO{YJuK;^{e??=djw h9~U>Fw9@^@C{d)`Ym&Wc1F%)V;OXk;vd$@?2>@mSZhim& literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/labelingengine/expected_label_curved_label_above_1/expected_label_curved_label_above_1.png b/tests/testdata/control_images/labelingengine/expected_label_curved_label_above_1/expected_label_curved_label_above_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c50a2687330cb831a8b01f09cfbcea72cfac5f39 GIT binary patch literal 6701 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 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/labelingengine/expected_label_curved_label_below_1/expected_label_curved_label_below_1.png b/tests/testdata/control_images/labelingengine/expected_label_curved_label_below_1/expected_label_curved_label_below_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6421cf8527d6a1bdb5c0400281b8679ab7475df6 GIT binary patch literal 6612 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 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/labelingengine/expected_label_curved_label_small_segments/expected_label_curved_label_small_segments.png b/tests/testdata/control_images/labelingengine/expected_label_curved_label_small_segments/expected_label_curved_label_small_segments.png new file mode 100644 index 0000000000000000000000000000000000000000..f2d06b1b21cf7142bb724ac657906f6962f93e0f GIT binary patch literal 2860 zcmeHJ`%hDM6#w2^+LaCz5uB*A2%=6JYOJw1+gb#N$YV?=MV_4~7#NgM(@|*P%AABO zlPFPEfm;?9F_8j_8(_g+Ruvu4%VVHLD0LgXyaeQ;P-t*>|HWeX;hXc#dFSMlb3R3p z5y8%^O)LO_bI8%4;{d=20FZ?VQ=0n?p$(L9%shHZ4#1j+|2^oM@0!g3u*@Mr0bgd9 zzZ!1+G4AYU<mCtRN6zf1f<hGxdUO`u&9Wx!SjLHq;~2dgFj<}tdlg8~Vfspe`|Y0W z{KpMEIetJMZ!$FmFQ=B|q6hL5RrbYi0MfT~Hvxb+FNlF4fF>3rkf$dGTwJ7p$=m}R z95w<Nb^_3<d37xB3mmX_6Z9>;9m?ir+t+A%#){yOMsWaSR-dG2Cnt2>)+wIy0Fjgq zJ!luEqv}#}F0~dl_DzN>8J1fE>n+d7rIm-~nbg|68=C3Cv>b+|p3+wB71A=JVHK#e z_LnK;l3&7cpgM*WPq&RLlQS6Sl#C`9c#F<R#?$VNdq}lZ$XfEH&Q_c7=)$YLLOh># zPe9{5$$?cDGUim1AU%iSp8~gJ%dA~mexw?OjB2njy?g8n>Kj9q2?;1pZKqP#S|^rm zdGa~|ZR)fSl=n|k{eYyqYS1pxtNF3d9#GzjJ6C~Rq|l%#R*j8#)Y4>9@n<go%0YPE zSoxn(=!o%!jCfJjrKRRTl$Fgn)f55wXQH&6JQ1F+8Idv0C1%h%yfDt=D74Wyba26m z({T)L`J-K0p$|@Id8;r#sAw#V=}Za7ajS_<7LI!`wcD{NBFpdH%067*$>p;L!*Fce zarSO}L_qO`yqZuqdsL2kJTC_AZu9ox8$=m2IPWwSjIcukxI<g}NIPHL!He4qMMYj7 zs}&@!?Y^1PbS8~C>#YfN+^HbdGQAw<HP{yG(^8#(Xt)FnMHSZAl33C{Y5$a`F`sWd zIT;(@)!!+os9x3*OI_ENKh}*IN_BH@XGd#Q$!J%@detp=sb9~M@!-^)PxrD?|F_IM zF~FB3{Qj~dUYWa?B@yxRjhbAxPRIRxmT$2PNFpu0HQO+@HL&$!==rGPw)?wAI{9y0 z5n6O0Vk+L|>bV{J@Mb0G@WFiO^rmRozKg}e@&+<D_sYl@lgd_GiMHeJbo0jefK%7? z#0;Bg&vC~fDka&SgiJpr_2kT*0f)xd>a|V3T?Heu83FE%#$Yj@?8<ccXq{zQxC7^0 zDS!zv!k(3)d`)z6j>wrljQ7Xc^ldg5OK|h^aZ^(L?!+z$)s?};;+->lc2gN`zNk7S zaJx7Z30-hoY6~^Exk-B*7Q=*#qi;);$0?i&P{8f=#)ZE7#1V+(T&WyqjQM1lp@ATT z+cQnOx1W8z0OmXVl&*{0q!5Y|rKr1`zZ+!b)mVN;S*&tL$SPIfWQlSv&n%lB7UC>c z&38cVwLsVkZC}aBI$N5Y47*7TQRTRh|3=8lX({`5VQRROd`7-8_wg{Bi*$o!MZo=Q zh=*-}l3$A^d+XJvEfhv>G57d3UL&;OeZ0tZQoq5i{HS54?wv+*S^4gCLirpQ4)(z^ zs}1Ib@)7Z<SE|1+?35eRJ?~V$4Z2hn-FCu&RJlr-Qx$|Zx3bQ0Kj#WCn3S{MUyT*D z_D}fnXDWvbR$mTxf&xa1P}S^vNX-@H*`w<q;Abp-0|Sez<NLDsRuB9tvH718Iy?Kx X$#S%BaOVb!{(_Jr5ka+wr3L>2W}-nH literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/labelingengine/expected_label_curved_negative_distance/expected_label_curved_negative_distance.png b/tests/testdata/control_images/labelingengine/expected_label_curved_negative_distance/expected_label_curved_negative_distance.png new file mode 100644 index 0000000000000000000000000000000000000000..144725a46cbb8973459319f804993953125c7149 GIT binary patch literal 2950 zcmeHJ`BPI@7`-nbpg<CrK_F406)m!hK#&li;DBRUs$vijGNpi4Hbs_52u}qp%2J&{ zQWAoWtqh~G7)t`OyeSom0a6-eUt(hj7z9~T2#}<&{n5XHAMV`w?m2V6xo6Hd_Y{T( z2bgZN+y($JJrU@C3IGfY03<cSpeN1zlYDgBni_a64FK%#|1GG@7E1uYn0&(D_e>V| z<G6DPA<hbU=iX1-R}pl}pA+bNl=O{3;m%ZejDB$@vk5XCLkwYKl6}sF(EUkR{61j^ zE8ki)l1Qxks1nC|hm;k%a0EXrizb))dLD5&90<$~%C12m^|rn_z+g-O1R20E(DU(u zArc7zcsv~#894#{O?Xq5O*?!(2GT4HliH`W21xVX@v*TtmxhYxJ2M3=g*vN^xvE@E zFBL&>n3m>9FOM!Mx23j*U0@iHuAYISlhS$Kd#YG2ZRd!uT>$Pw9;W5DSHe}sM$6wg zHV+zl_QlpuYI2O1H2I<mr(-g;S1IR-Ea$dx?Q;2o$j{yw?ml)8D9-L$8(6jz0~2WC zW@)l%w&#R{0osDR9Yf6ah>k81;f{|io1{K1Ie?^ea_YJURfjWDDhW?&yHxyz#34%q zC!2sBQpr*A(kr2mFUd&OBOZaM5swpKzk^7F=rY5@!JVr4HfrN2YeecVaq&3`3x19B z#Yrk~D(?JbqpJyB57VN?GoG6<+R}85m7_pOE&$%kvGu}oRZQVRMvI2UY~QG%=vB+i zF+F*93iXvJmTOyt_RX>h7Yj|nW6Jz{x?){)(e68bksa{G?ev4O9^(0!CP5m3Z3aDV zSQ?kDRPc0rbS%%d^Qc<&xm|c^Yz|g_oim`J2^N{o4)=AvY~FQ^X93__ti;%lUAo4i z@^l{BD3d=M3n0#R=_!@D-JD!Q(NS43vy+W!grOpk5*HEEv522@^%5^JU2CWGUQjx0 zJXL_OpAnilr4}rVGGRBb4jT>=_A<CL(>%Y7vO3L0nckD#wa)CkZbS3OaT<}?yh5$Y z(j>R6PxEw<a^B0mgRw>G(L?U_S!wc`O6qu-pgJT|9$Tc4sae|Hwg{JNU*}2G=IcBS zmBZ|u=|}0z>E5z{+_kH;2_8x>b&f8k5vsBsOIMZ#5p3mb*?Okze5*b^L7$Dh!`(Gh z@)ypbrTalEsk<zwHShG#4?tuE6CUpAX5BGPCFzr8&f%bX)*M42@YPtc*OIFpAaFL4 z0&|PJr`pL@3Q>Ema^zEG<X@(D!5Q?L{I@GXxnGJSCx~0um&L1!u7%jvZFKjNL&%e) z`w9<6JT0mbm<3y-C08-b?p}I9)Wp`qHF#-hWTnEY6DPV=*QJ#EF(y1{bJt}gWHdt4 zCw$AG1{M5KoO6U)Qx0Z}fcMj+MP|K(e<QeGCH$usBJP45!X*5Z%g_}JQ+QUPW^x_d zT||9Js0pMsBU7D+0Sa(YK(z47jKu?Mq<VUOVdZv+*ZucSy`8heS!e4oLl)3fV=1dC z$E{CmncIu2exA0DPi)E_bBiY*!SrapUTZk8_vRKN7K$$)XlnT0*(c@41ou!Vzz-g- zdc?Hro}gHSe6R*D4<N+b>5CiRQGWX0*X(0Zyd`xl{2ux$18fyYGZ{e1!{lt&=x&!( zBYn0^(0jV$y+sxY(^C`aEl!Xny2XpCP<uK<1!36tZKzJI=8hRE3G7Eg>YG$4Pn#`i zAzczVgihq4VEElb;k-q-FZ}Rw9Ys9ejLE6Sm8~aopEWtrz4gtp{U0cGsh3W#JeOyN zP7H2fYj;v|nr%};s^(s=%=Gv62DKUhvPY?M3qWjkY<|+4*<~}ceU??P>-3nQ5}{N} R3eaE;P8<*Rul<UC<6kd#XO92? literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/labelingengine/expected_label_multipart_touching_branches/expected_label_multipart_touching_branches.png b/tests/testdata/control_images/labelingengine/expected_label_multipart_touching_branches/expected_label_multipart_touching_branches.png new file mode 100644 index 0000000000000000000000000000000000000000..05319f20735e92a77779538f6d0059290d18eb6a GIT binary patch literal 2939 zcmeHJ=~I(;5dOVMI1)}_6c7XvtF<6R8LkpQ5egJJ>H%mqiLDYUhp9S1AcPmOI(RXo zMGXmW(mFtE5U3~+An+<x1_=p;qJ}7k2q6TG7$8IfG<@m5(CG{xc6VlXXZM+%XJ((G z_}B;w!g>M#z#=L#Y##s^7yxM46l2IV)kW7C0-hdu=nMdsf36r*;%?~(fZ6t_u-yl; zx$j=@$T&c=gGX#<5|w*z8R76>_SzP$Jq}HQff@hHk(nqa(k0wAZ{pnX1nX@v2`DA$ z{#Q?(In&vL>_F-MA03LvZ*X2HBw6ak$-c@sESP#;m;(X&6`Vc5V9Wso8N)EZ?%D-I z8#kiB+L{VXO^E=vT3$WN|A!9C0=wE6sX{k7GRkPlneWoymyZGT;kvcMY{m|+>f9&< zdg&5v_F;YM0Lk0XC*uZ{Mkp?RG)F~;V_}M<Yqsd9I!(eV<yGhQ&zPf`+qa_H$)`%) zC{v%=8Wh6Z8J9p=WUyL0N+9}eT(%ime7P?`<k@?xg2phW;<8OLxCm|hJNPCIc5_Al z(2yv8yEq7R^JD<DM09E8s3#Am$<iwn?0})R^i+EkIur{R_k<%9sY<#(UEzxc+YT3M zbI241RHAgC^6+%^+1NP6*$$VJImRjY59>A?i4q%Db{G&HV<qMFKPSTSq)1qu?O3If zyg6OoPnlJ6gUc!fH3LEmx}zDMxG*}`rxEJ|msuf06sKq2bQ11%S<}yoXzT-}gTFII z?5z7$sp}-^zF%sz=cij>EiZ#JM9(o@ub(zE1AFm=D@1;qUOP9mp&|cNmUiAQMp~?x zZf4MOj6)6MIRVJKA)Z3_u0=F|r+dbH3IQ(lquVA#pL&&y<Rxy1)FkEGcDUP=p2qN- zPD0!@dX+w>HD4}Cr+Q<UiG-ZDt!EW;x)4cQ!A+WfGG@xdQ#;W_YAb7qQ~a)UxF)l~ zFgq6FA74Al^^s9?Sbpl{aT%$3rakl0qeq8A;bR?{8c}-*V=0}*VN1Q5nh&Vl%erM^ zQfUO|o<iSQ!VzitL##&kQ!9?g?$BhL<o`_|cBC+d0$+`9?%^=bbn#kxOX8|Y7aCmN zKa;OG+IWpFbyPbzSh#^{oc8)7f#AgX3^(7-{OuO~%G{)HQp6ZXS3$<q8bzBDIXl8I z=W+A!w$ITKo8jwywICuIR)_6|UW#oz_k7A@<p+2rE-QNLt9&?rl|31&)q5}N{X?D$ zKs^-?A)E~CgDukK?tJaTEsdAzwxGhFaM_}(8d6qcDimGLM-!aF;TO%(NI+O?7MLpl zL)1Kk(k;+xmfn0&>vCrg_GyB?>FMTnvxgj~tf1B#vsPDfeQFY{yvB5Vp+&-&O4nq7 zx&gy1&R`;{Ngx_k%B=A{Hp9K8p*1{&A~rKJ@=w9ERA!Kbi*#o)iP$AchYQ_MlOOVs zQ?G>gdO!d~=FbK;(8kAFNNii|%%f=$)}six+>uj0RdvfxEcnrP!@{%}#A|@LbE{gh zxQ48);-mGZM9T0}`SmL2_cWyJiP7A7Q0LRow!O2H+rst})C>ko2?UQqQ0JB<Onr&$ zl?pFvY7JO@Fk*6J9^xWtzgkIy7hO>&xcP|ILyEF&sFs6vLGh=P6HHPV#$RB>kB>gn zl<(>Dj$cE)Heg_<g3)Tv&*CclGzOl?$F^d$U&AAZ<)ZfiZABfO-19ukBb(6LUo1SU z?pDyKR(Rqovll^F6`qLmm1xRS`BJ>E(<bPGs4iH_ThQ+lsE&{dPh$newWPcM(j#kJ z5XTGdPX+KD4WA5vliTV8T@?<ig6Y51kp;`xC>i(q#B9NUK~00G@Yt~GQ0lpV0J?H= A2><{9 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/labelingengine/expected_label_multipart_touching_lines/expected_label_multipart_touching_lines.png b/tests/testdata/control_images/labelingengine/expected_label_multipart_touching_lines/expected_label_multipart_touching_lines.png new file mode 100644 index 0000000000000000000000000000000000000000..d60f3febb2f8e8cf256e477e50370b497b83ee14 GIT binary patch literal 2761 zcmeHJYfMuI6h3XQ2#j`2oZ@4x%UqfXzQ!hKDWI?bGx0GWAV>?VvWZO43bf_XizcEW zvu1A8rnQ}Jj%{odgHS4rUdJLhpm)<%U|1-yQn4V#jy}Al?D~7Z_h;e9$;tUnPEO9r zmwexaJ-d?W!7GCSfS#I?^Z@`B1)x|0sU&i{ac3i$f(la(2>}?tya>t{5sXy;!KJB5 z+xLr9Q|9;+`_oooBl5>}_xIlaI%&uC^Xaf8qKn#JSvLts!v^j|qIBe5*2=V$l%a&r z*JWkYhL;Df=+P*0Duj3OeFHVdN4n8k;k3TztWv3@z(sqN1fWHRgaeft0u)LBiUKVm z0i~>2gF$F$HUtK40%W1R@Rt8O9aNd9#`vIG|7|Ux8%2de;Xb@@({kZVzPh(3cT1G> zh&q4XPxyEj7Xi!5=VB!@r+5_}d$oA8Bm{eFYaJMrC4;Xy)|1tDWF@`PDk<A4$8CBh ztq^f<#&m7dGj{P@zIuQ~0=6(qwZ5gP$^0o{g4K7th-kNV+*IHk?3DHipuNf&<j7(- zFuI)rV2qYgRSsV`Y7TU~uIJOSv~8Dx^#pmCGqD*;wqAzmiTbegs#yh-Z?q1IiJumO z<+Lgll?kc#4Xv|82h*VLb9I9IR|O(ErkT_+X{u;S++H<{rqT%m9mmwzwjb~|X>1gU zMA}wU+iJ&DB;@A$1%A;xvS#j(#ITdO>L?mk%%JdQ$i?O&nx*{8ffbfNREenEl|{_m z+hn-1yiYhc?c+qn<2a{ma`te%x|6f})eZcTXT{#zmv!BJSIZ`>r94UQP>-^_M#`n| z`g6Ak-7fcrjW%oUmiXS?QlqAo%aOjTb%`G{|2;@dKRM|uycJQ-c8?&-!1j@synU(K z@^tL?*zc1edwKU_kGbt7?U0MmdXH<Yqx8^>IBaKT`8*vnBBC5AKCG6~BJ-wzQ@IGc z{*d8N*R<2x6ul=3W=>4`7)xOB&0=)g859XM&Bdtvn_+M(K>I{eZ%zzI@B5k3Zeuqz z&nuk9HYDV?j2NsmV~*jFIR#uQv}O|B;q~Kre(6$sSL=w0peGz3f#K)8!D@ZK|I*){ z%!z1>t1Cnc4&Ck?&ciGCc$1HI%gDxbkLsAT22~^7v0f+fomTtbHXQCXUFTNBylj63 z`n$`69P0~gQ&olvyFW&HhQNJ|_^G*oF7pEzKJ^!25*sL8K@PUc;~eYFXX0bU0pMDT z@m(inEMrHJhGbhX;!#?OF}CxFMqBx3&$u@>-VzIw38=fs_kuK9r~OX+GE}g{LL)wu zUB#%`h^Lg}aSEa@QH*DSW!nBUjbt}IK46TBRj@hQMV38C%dJG2JC^+8g-}b_XBusQ z<zvKi+H4wA4D{p@XV=jp-$&&q>pC-82fcGYPT>2+QOaoNc*g-)i-<nq^Q||t0%G2z zmYs_`WL4;|RJ)VE)Q;!b@Zt8<rqO3b>;k!#BW^7--;?v&Z8v0Ib=M2Y`YI~~`k!B8 q0z7?VL97-;dcmChr=G2H9t4%=?j|3+mQH$8NPTZtQvHtXGyede@)Gm_ literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/labelingengine/expected_label_rotate_with_reproject/expected_label_rotate_with_reproject.png b/tests/testdata/control_images/labelingengine/expected_label_rotate_with_reproject/expected_label_rotate_with_reproject.png new file mode 100644 index 0000000000000000000000000000000000000000..7a615c3aed586c74d8368a2c7aaaddd5926a4315 GIT binary patch literal 2110 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A1Qgk|*?TjP;w<opEM{QfI|9OtQ?>b| z85r0<c)B=-RLpsM<6z+<2NBnc$CjpSDP`+x=Hc*=oY1$8Z~0v2jAu#~>Gxyv%UAzP zJ!i?#@c;E{IR=LL9u15N3I`Yj1QHlHI1CtASR@#jn0Oc%8QB^d7?>R#Mx_U9utdCK zEXdnlSpBIzH>X{P@tkYJL(Tn<zgw;2x4(b9?t#PumpKatCT<S|@i$!F-T(V={`HM= zJ6J3xo}RP$9s`5?aZahx#5J0!s9)9q6WoK^JICIhl;5^db`#5kubc+%zvS-o@88@1 zyV08=ZjP|Yz?5vjJi2G<?;Y2L8O}X4dcMY-;lT02CTf+e8?G={_}f2zKJ)qOi0vC? zP1zo>avJ<URT?8-x4ZxE0aXV569bjubiOj&yKHr>_RUwWhU=v>i?2yDJa}y3I9i`j dr<(o8px3B0{c9BiJFr2(;OXk;vd$@?2>_?-Z&v^S literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/labelingengine/expected_parallel_prefer_above/expected_parallel_prefer_above.png b/tests/testdata/control_images/labelingengine/expected_parallel_prefer_above/expected_parallel_prefer_above.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6a7d1920943e01febf8e7d900cc05e6605d1a1 GIT binary patch literal 2175 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A1Qgk|*?TjP;w<opEM{QfI|9OtQ?>b| z85lSWJzX3_D(1Ysd$9Lb0E6pA`@mU=*0MgbB@dcjG+1dg7oBLjsG=>>-<h9tF0z)B zd+*(;6Laq6ZNJUHaP8}2IR=LH9u15N3I`Yj1QHlHI1CtASR@#jn0Oc%8QB^d7?>R# zMx{rCWtb<21Lvz4Y>t~O`~A?w@2yb7e#HZCj{mNZPp;|dXTL6U?BT)Xk9gO(HQelc zz2hEpjm+`<`pydG)q)8>eD^e7<uI^muVCKHVesXMble1n!`nK|bEYsHel3*G!D;Y8 z_7N{Pr@@A8=|_JX>7Ad!%*)8O?TPli=Y@IG4>;Xp<pt)mH2!6Vx<5mO6KYYiU88T+ zpB)B&{$tILZw{8myyj&1jGSTrv-9MfubiX*IB0!?>m5ccS$D?S*~dy`j#sfBu#t04 z;y?Ge#$Lm4gDBIPXLFCed~MVF^5E3|cuC!R2WGL%i2Z4Nthm#BgBoL-|D(N%?S(7U z4+Jss_$%By5W~b{__6J}%7G1uk9cpZ9{8~6h;$Sa&l$CQ8|E-Dul`m3u`Rc9_uag& tYz!5a5I>HVC8I^`Xw@<Zs?-PKWq-mWGv=DC2DT^|JYD@<);T3K0RUiRm<|8{ literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/qgis_server/WMS_GetMap_Filter6/WMS_GetMap_Filter6.png b/tests/testdata/control_images/qgis_server/WMS_GetMap_Filter6/WMS_GetMap_Filter6.png new file mode 100644 index 0000000000000000000000000000000000000000..164a35467b165c14d3c6cd27ae37f53dd2077662 GIT binary patch literal 2831 zcmeHJ{ZCV86ut}{Lxh=h4waRfu;C)6PP9xYts*cqYH?!&r9fc{sDK4lJ_@Bpof2fw zIpP2Xj5C822Fef$()P-SAQY%l5rJMn`>D`E3vDm<YqxX%!G7h3larkDzUMqS=XsyJ z#V1H%t{b*(006-C$l;Lh0Kj3zZXbPsL_!`Mh7jkRe)!Z+NPgLF4!bP`D*$ZhJ`xi2 zeQvcH60&dTw?4}F<V195U&5wuQBdXCu+Zn{-(D%X`UZ@D-~vTnP8+MlnjIw#X|e6z z>V^_ObzQ)hnVhzrJqPDgV^oI@`fs0ez33df?@e8m!^-eehG{jGC88_-63~|wHO81s z!@}fx;6Y4Y3kU$cJ2XJhYqw3Guer4mtg&G2A^cA*D8U-s0T}e#vay|XjK@{h@XO1K z*o?g1AG|P(OxpO6&tgXbG%~M|1QLn9zB<<zadthr!-@h%&)KY&-F&zNO*N}8;)H&s z*l6Zt&vl`D8TQn^{d9$DLcD`?oa#|MlQGv?YJ^NLQRM#qe(c%K4#${v;Z%C&TZmix zP<xHs9OG+}3A`u-o3(-~$r81S_~};DV|08RIxu~%NP6pbXVw|Z%|Dekj=D&YYrxzV z1h(iK#v4V+aS{iGD0zTgN}XEjGTpOk{%~Q|%9q7r_Cg>$RTg`+;@*Dc{rW^eG1%?s z)c<uF+}ocb2%2=?b@Dz<+jD@B3k7?4!ZIma<i9Y4j<1zu3twU|Jk6~emIFjQ&ayNb z+_l3vLR270VxZ-Dxk%EkBmZ8|eQCWAONLu-MVZa@<RlC#r_i6vvROG0wF!K8?M~`6 zZDec^1oz-@IN>iHj>DZ5ag0|SkD>?z%QRSelw}brleTWkDeS~;*_h4KD*SIJgWFT0 zn96Z<R~Z`bCoV)TH8r77^Ao!~-c9Kznk#eVH>ya;SS}n_L;Q^KC5o&qgZ3<cQ9uxL z?1u^YMl6Mwu1bm8C7_99vSanH-M-?wVOD7}-K&8D+Td%pQ&>{KW~6Brvf;Z&ud>KV zw85VFs1evNKEtV!Y+ri1Zuseh8;Qiqg;nn>L^kns$Tov1`LOKG_+6jme@nD!4AbG& z+nADY27!M;J@p=10Tqg!{;<ACkUf2U@9CVG|DcUXrFb`n-%1;v7|=pzFzO=g?Yz9a zJQllhbWbXRC7sDja=1?K6FCewq7mFm&-@>SE{iN&-xU#Plb=3Nt8N1AafCzt0+z@S zOxc(?o#F&`NS%xjO?<p{82-Y$kp8!(oy-CgM#iYdotLEbbr>j1Rl{c%JI}Ftg(xxx zqA!uL^fRW56<k5~=$<GIu&i804Pc^ekEn}a-ejUX!@@K_Utwo^G72Ur_fEE(t9zU6 zG#iuqSk1b=Ui`;t_}m2JECmlgzT4$yk&mY-BMj>iY@+69ex6Y#C`frhuqs{+dMTMd zCyC}72WCGrFW<z^Om<P_Diz(jnVSe;%Qzg)toiL~({xTVnEkl!S*XyR67cYhR`uJJ z%jM#t@LD4C{5ySj6&h3Xl9yqThNo6pCM#{;8o*uLa(ci!jxOit%+BofU)9b%(KmiW z3}n#ss-diui86?8RA{xQtP$rvMHE6-i$C~lhvT~9HMcebI}4tIKqa2cI|MJdAU|B- NNGK_!`B40&e*oA8v?Txl literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/qgis_server/WMS_GetPrint_Basic_Pdf/WMS_GetPrint_Basic_Pdf.png b/tests/testdata/control_images/qgis_server/WMS_GetPrint_Basic_Pdf/WMS_GetPrint_Basic_Pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..10c23f0d8ea82f1423bcdaecbb48ecfd74c689fb GIT binary patch literal 262127 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 b6Mr#YTf^WsvF#?gU>PaJV^9A+bL0O2D(F!0 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/qgis_server/WMS_GetPrint_Basic_Pdf/WMS_GetPrint_Basic_Pdf_mask.png b/tests/testdata/control_images/qgis_server/WMS_GetPrint_Basic_Pdf/WMS_GetPrint_Basic_Pdf_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..37a8e472cde2232ba8a562b74025981127866aac GIT binary patch literal 53038 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 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/qgis_server/WMS_GetPrint_Selection_Pdf/WMS_GetPrint_Selection_Pdf.png b/tests/testdata/control_images/qgis_server/WMS_GetPrint_Selection_Pdf/WMS_GetPrint_Selection_Pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..e13ebf39fff892092e6e55132f44bd19c400ba83 GIT binary patch literal 301478 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 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/qgis_server/WMS_GetPrint_Selection_Pdf/WMS_GetPrint_Selection_Pdf_mask.png b/tests/testdata/control_images/qgis_server/WMS_GetPrint_Selection_Pdf/WMS_GetPrint_Selection_Pdf_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..dab52d6367ed829c1c6beb6fe2eafd2df6dd3ee3 GIT binary patch literal 396418 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%0AU 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�*or>Y!_3?2oj!!U&(KmKn}QKL&csoOx5L11KM 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 P8)S&5tDnm{r-UW|CnYfO literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_curved/default/expected_inverted_polys_curved.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_curved/expected_inverted_polys_curved.png similarity index 100% rename from tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_curved/default/expected_inverted_polys_curved.png rename to tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_curved/expected_inverted_polys_curved.png diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_curved/precise/expected_inverted_polys_curved.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_curved/precise/expected_inverted_polys_curved.png deleted file mode 100644 index 3cc7263ea6ac36767d27397aa229158b878a993e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641536 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 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_graduated/expected_inverted_polys_graduated_mask.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_graduated/expected_inverted_polys_graduated_mask.png index 6d00d4bad2293bcd9d465baa90a61de2c40f0253..43a3a411d45c546a47ea0a9b0141242c351886d6 100644 GIT binary patch literal 48719 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 H9{qm+^PeId literal 48333 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 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/default/expected_inverted_polys_preprocess.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/expected_inverted_polys_preprocess.png similarity index 100% rename from tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/default/expected_inverted_polys_preprocess.png rename to tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/expected_inverted_polys_preprocess.png diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/expected_inverted_polys_preprocess_mask.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/expected_inverted_polys_preprocess_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b417a6fb16e9ee7a4c92a31a3a89693019b4ce GIT binary patch literal 21576 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 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/precise/expected_inverted_polys_preprocess.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_preprocess/precise/expected_inverted_polys_preprocess.png deleted file mode 100644 index 2f8a909b1b415c4618432ceea7797a3cf7501f5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25224 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 OC|_ihrK=^4ga03ZRdr4P diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/default/expected_inverted_polys_projection.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/expected_inverted_polys_projection.png similarity index 100% rename from tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/default/expected_inverted_polys_projection.png rename to tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/expected_inverted_polys_projection.png diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/expected_inverted_polys_projection_mask.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/expected_inverted_polys_projection_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..243ae3e1088d585f6df174585f61abd78c0cf3ea GIT binary patch literal 18581 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
SVKu7Lhr_n=NNTDm>1w2f2yrm^6U=QR6hB@y1 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 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/precise/expected_inverted_polys_projection.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection/precise/expected_inverted_polys_projection.png deleted file mode 100644 index 99879aa41ea6eba3aa7c229c30878c56f2db6430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21778 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%0AUtOg#%G;vgqE#wk5>E@ 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 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/default/expected_inverted_polys_projection2.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/expected_inverted_polys_projection2.png similarity index 100% rename from tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/default/expected_inverted_polys_projection2.png rename to tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/expected_inverted_polys_projection2.png diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/expected_inverted_polys_projection2_mask.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/expected_inverted_polys_projection2_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..5193c3ff55c301662ebc305b4cf032b42b7bae9d GIT binary patch literal 17782 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 AQUCw| literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/precise/expected_inverted_polys_projection2.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_projection2/precise/expected_inverted_polys_projection2.png deleted file mode 100644 index afac9cc314e116f8397877823556dd78db10a8a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20737 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 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_rotation/expected_inverted_polys_rotation.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_rotation/expected_inverted_polys_rotation.png new file mode 100644 index 0000000000000000000000000000000000000000..67cdd40a34ccdaee50fd80ab6c5747bc826b2594 GIT binary patch literal 32877 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ⓈPN9dbbg9*0}&Qe6L*q$WJhi9F}#LxM@K2 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 literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/default/expected_inverted_polys_single.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/expected_inverted_polys_single.png similarity index 100% rename from tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/default/expected_inverted_polys_single.png rename to tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/expected_inverted_polys_single.png diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/expected_inverted_polys_single_mask.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/expected_inverted_polys_single_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..88a23f12decb3c90ac217a428d6e64bb533644b9 GIT binary patch literal 22492 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 I*rC(^0)gNu`v3p{ literal 0 HcmV?d00001 diff --git a/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/precise/expected_inverted_polys_single.png b/tests/testdata/control_images/symbol_invertedpolygon/expected_inverted_polys_single/precise/expected_inverted_polys_single.png deleted file mode 100644 index 229dad5406df7e6b6e0d2685247fc157e69f9084..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26407 zcmeF2^K+eV)b3-ujqS!Z8yk&n+jf(7H+JL3wyg$@c5K@=&+~oHy#K@b;mq90%+5?^ zKhKSIuXSCY1yWIxMnxh(f`EWPm6ehB1_1#X_umf!6z~`HwcHE{2r>v+iLdJ3nWt+O z+UiFe@RxiuvM6h7WYZLKi>3$5YmJ_jcGYeB%XVJ5b|Hvxp%hGOYi!Un9158S;U7aD zsCdR$=ioi$>aDSWKqUWz%$HS2R1sHvNC=2OXmKOV!1svilGQ*!s1W}D-~aE=fVBlK zL<uBFW;QNWCnsJ%1w(#*YKE12hPAQb2p1_=WrP{^&`{JEQiK{alE9VYg#DW>$2XLU zQ-A4K_KR2!3KMxnlZl;f&w@G4R^=>o@~@VVzo3ErptHmUK`-57nljW``G{BPV7zK~ z%UMlsR!XyPL^|2GLz2#qVP$SA;vQA^3#N_SIULr%T#%Vx=rm#Duylu6h|TNjaf?kG z%H`^)T_D2exV^<LO^=~P?9U2RNTE9Gm_r^Lz1;8QJuzm&&_6jOKZEZwS5Y(9FhxY9 zXe9g%-|Jsa&N~{fZk^s_n4otMGaf{EJD7~;G&#{&7Rn$tIh^H7L|GLWM$FWcuQCop zE%{T|d&<gtHxVr-&Na`4(|x6^8Skx}EN17ZBvvsgF}R^42wQHGjO?*HfAw7J;pB8N zjQ6sl<QNFImQ_sJ-Mh|$BjF)*AVUffu;OdzpUiX=k|e%3BcshV*GzFW&ayR5vei<l zdFZv)JS$V0x?I=$#m1h0?ynhbu}QboWUu~&6Pe#ssqc4^oR-+0<b)ad-AYTLw36{E z6P6u0P5?vudalnhIlx=(eJi>)>n0A?&LAv8bXX}mAo1rwtrzpENXr2GpPaKl@pYZE zw!@>0L2vdeiAkQFCvKK=>Pf*TjH2s3J*urCTiZNfqYK^qkin|1XaBXz1xNDSECmJ_ zs1S)<sA9%Nf_VL_D}%dYm^AfgNdw=yi=RfzFU+3_>Ngh^8L@Oo9;BM?AbNO2jsJy9 zP|0<>fl`v6{Uoke`?bb0{YIJs%4(OkXH4+Ds%uW{%oiD(Yn8;MyP=&Va@oZ9s~v`w z5>413E`>0(>u8PHKD`Tz_I~1dyIJoUF;uduy*uadd?O`QK26;6NU6%#3pBMKS}!-V zCC5av&_JAIV?~LCc?Abina0<R#tX4ld>w3Qh<KcNfgV&M?X=|iHo>7KR>V~6e#hVF z4OQH<>^OWl!BcXv9q;Wc!Wi%VK98+}2h#rgg{2VpfNdnwM$!ig?d7H!Jw>KLk%?1* z=}dfR>kGjMvl=(>dI>Fs)ORDLaW;`ZSY8y_tQwAwnqOb@#b@A_(Fm5FlE_a8^De(n z-%6Bc2c8A6<mW0e+8>!i1}8~C1*+MYsJTGqcl^}U|Kniqc(Jk&wC}2SA*^mz4<15z z>KIwQT@ld4mXzd;P0L#iwSa|5Iqh-Y?_|)d%I;5bbX<6$GFA0FEidbc8d*gl`C+lY z*uOaOuk!<eG33km%D92xurB{NHuW+NH*wjE$Ze+Y>SMrC-A!x*N>pJ`YKbI9pnY+z z*Tn=bg#Tb!X@$&B%-W@m4rZ(-gx}*)W$fa5R`A_D?`B0S-cN~*9^FomVYJ$Jw|cJo zIhA4hm0}SX4JAl)`dz>@DA*_@)qsR=#9ESe%7jOKK91)nk_EZt!Bf%Z#^0$hkZw4P z4EVAi*nF4I)xL3W<6!9~W{@ZL)Dg3Gu(JD`k(P(kI{KlccxG>k1UV-BVM_@K<2MrJ z0hZr(I?-0`lXnAL_2gBGP)GNN%QQD<{q^Mlrpz>FNvYGU-B?5B4;~>a=Hv%XL|BNO z8gp?9tghuQ-@8U!97n@%UExdGK|cK*brqj~nCwLRJqNz^QyH`6Jvc5ug8j?{tZdRp zVn7|WcF7+|X=^{`t%?f`U;F~J-7_d<Oz>h}4o21j2w$q!K-6mH8lqk|e8mLpB3#MX z0`O?JgnUa(RG*{c$Nz9M=O1m(LV81+9ZV(83DpCWBBe1hv_Gay*q2urH2P0+hk)?J zS1IkIzc*!|I%lrPU*GGbu_@jrLlF`7wXth3hBAol2H9SEs<KSx=QuKYM%zmgxCXJ3 z$n&FTpJzeIZ(O&`?t-FR&5M)*vYY+r?ZdU~0%8L*Q9l$;-sfnRnF#J}ayG<(tX}25 z&btj}SGa@A`&{l5ycS)oawJla*GtDmU!w>iL6w6A?Pd*y^7##sV8rA+CCO)kN;A{! z=i6-1sc$@|;#g@DT5QwDhy`~(8*g3_&VD=o1in*_kZ>D^^O|Gy$HgIR0gU`#Y?moI zEhSZig0J;KS@%PwhWSMVOZ@+i%Z>@P1$+G#zc1Pq+ttswpJl3E^F=}hGcYdw)aE)7 z^`{OmqaE+{N3%N-)he!4yCYiD6{%xo?+|8^O+R6j5<g1`j0wBXwADh_%^<jDKjBc* z(ZE(rE=+%x0*(d?GDi=V?D~&|cX^(}MgD)6Q3j+a3kR0FBCW-xW~@gK;>6x$D<=ME z4E7J{yH+3C_r%uw3%J!0YnOj!47gSBP>`bIuQz$Llqn_;xo40<L>JMBLPW`$&^^!% zI@pZ2Pf3MQo)y%<7?HH>^m2`37JPKN;9d=IFLsEi%wGym2d?5;l91qT|HkT|xT4Z< z6y=4zUMv@>#l51uSGtwhdm>KVrW|I6zQiva_t~iFb(iCJGZ*(CRR^1<%M2<D>yo_| z?r<&CNzr}7mtSu*gMwym#hC=pi%Xm%*LyK$?}zEiqQi<xC6yF*Z$1U#=?LIyf4CnC z=I7F|&`b~aE0c%>VPJt~CJXQg)KC<=UVH7V|Gi2W;4xwrZ*={{mgimzays6vs`x$0 z&U()0Y(AL;8z+(Q3~t;$#5K*0D{u<#+fMqX+#cMM5bX(@lHKa@+JC|dC(gzhzwezF z(-q&2zBIYJ)LY44ghO*La!%)Vi2WJY6Vz{=r@Pdc?=DLIo~p@eI#7r}6kl=bih(EC z+g9u}d`q2Dm5ohD`l;$;ys~;AfeS%*xonjI-4QVvBJ|H@DRPdHpzY~7<s15s?6C5U zyvF9H4<vH3oUKpYA`sC7OoBdELl|BNpavv@3aN!B`VwxALN=b0n;`P<61um<qSIW5 z&URSwU*6_@1d%#lx6OP6VNO{QLQmhI&fcKXP(5nBSfn-tk#naAXmE_OVRN0m9T)_N z^`x<N)N$O~MhENfZqWTJsN@17|5|Z8C?kDU<z#wBBeS;IDF~#jFMD0<tqcmV{hJsl zcv#xRdvW@U4(s#CS?ba>53+x>st%6VYiu08d?Shi27-j@^^cD4c-;dhKii0PM#Oq7 z1KV76H~yOTUS-fHYi<D7tqvQ@i9B+5hgdZ;I5O7p3&VYO_ct2KL;*yY6#E9A8Vm%O zA74cptp)3At6GZ^Dx72*J*FGIigX1UTHy>=r`GBpvVptqrXE^?DfGvW=B{qPC67J@ z=mpXX3dmQK?zH!<#cafk_ghkqv(d=v>TGXU+nkL&Pb-}ABKD{0D?>`!Sc7Ki^~9|` z+NULv1#Xr)QtpWktvFW($N=rS_=nrTjej>Q*xK5H<i@XKfgCAlhBfme<AnPzk?WE) z8~iN$SMJ36dab!;>M2+?-!-{GqIr`O0dTr)KGGyB12!dv%e-V$o9jmOQ6qJKIet8Y zwWpo->#B{KT^|OFU8-ZwxNlAv-pFV$a~`%9N%K=aNZQO3by<Q<><><Hu%5T8iStr$ z${N}IWO}hv>~{sb6s1gXvye{A!I+(G+qVgb<Ix`6Z{mspf&Qo($+x+MW&TgC(hg07 zCX-GMMrpXDYi@(4tnYsmJ<>|?O;U?adCvt*r_s@Qn_UUy7b)H}qxjIBRJlss&<#>_ zKys4RRlKZpe<xQqii}F?Y*lt<wdn4}2XTr9vyAwn4K>!&JWB>GfoNT9FLZsh|CCcn zBgf57CmWqw#Faqfu^wM8j$8TR{ub3DIhoei))BE9wL40ik`?e+-ylYYk*{^Z82F-3 zwJASi?B?TgSNt86fj(R%MV(KOQQ3XdbltyVdldM(3kfX$pPI$>?)UYvom0Gh7r%qD z3C8=MgWG~|(Iic$&9B7|LEaFt>(;Z`Aip<D#zxNvI`64_Y#lGn<jcVAl>Vl5$V#Go zD@O<Gli6F1oLg`Ymdkvn-Ol_)?x76V(^ms)!Zc=~7qXXkR4I+LZ%7a!)EvCOB4&n- zpm<LI{fus_@wKGIEg|N0N)Db^NxR+3SfHj*{kM|JeU=GkGw)q~u29Y@Ew=lF_~^lB zlPx~j<Wtb8oKut#%8j0ny-)FXJNT;JTqW~Y?dg`#RdX0!suH~gq9ukldqlqVBeSlW zYNlV{T-1cW^cB@eUZR)q8gGWjgYDAG!d&SUFf2&dB`#JftjzhH&&xa;Ezh@m9r8er z9cT+PjdNDTY3;tYGFLE@ixX)Z3QjjQ5t&hj`Nbt3(tZrSu{k!zHfqU_hF8Vs=^wcx z;eFd3mMqnb|4z&;)A$}%-v!6>FUU$-WmOC*zOcm4F5KmGJub*AFZ<<(h?$|-6X7Qp z5;GUsm4jvO2%l!E%ByYg(~<BL9f)B1@0M)N-+qk#Vb|a~UO1Di&gsJfg@Tc@Jx2!) z#^k!({Z}?gp!Z*o*{sJ>m7SRDpJw}NqXyfYvT6IUWP2WU-mI90HW7^sIU8JnLBv@d zu%ISVkXsIRay;RwY~SXb#nTm#b1P`dMQjGmKeL@a6M$+4`ZSgciRR)1s>yyeIR<#9 zhr&OH^d#VZ#yJprSV+I!^+I=AU1{$fo>;2;!Gi^oi)zVtINRh6<p2JtY>cQKWo315 z1}Xqf??^sL6u*Ll1`cGZT3Uu9%fR)I<p`RJHUe#mh&T~qSlz62vP4BU4SbldVf$77 zfls^$6;;rn!QbBZ>{qAMSeGYm(}d~P2rzw~!+2^r!K7#lKz5eLFCxEX0fmq{rADE2 zPAB6lVloqGTONst#ns5<`>0MG#Ci90b@LYotz7VYyk!);t5%A1MZ$e`o_#k~=8F2s zEj+7%Aqb%ajT6mjb!LIayhL$Wg=0flgiv2@cCMOkB2f+X)RG^m8tX<&BQ7MvYBNHF z*K{gIC3Z;KtLd_(l1R{YuW4IL*%<Wr!)QFncf)R&_bByV%LtDsaI<3$7EDTiT|ic& zjvx#EQ`@1f6wQ-_t%_2hJ6_}`wsU!(YX+_9py)^1Xc6r8O#%<4Uqo=a6b!*6)SsuN z-2H)7`K6he!{fAV&6QbG1Lb#TsC2p0@VLq%{#WBt3<`}{RV}83{y2B$`m|Ad3eU=~ zQP-lgQ#ZeB7kyr%g3vzR55D(Yk0o8ihLBmGZ!ruwW%GPI%t#LJ6>PMzIxNU0q{QSM zYp|oBiMZT^tX{U)JPs{nu){;ihm%cNe}-egL9|$Rb+PS;=u%xchf5(h5GY<}2r6C_ zAWq}Ey^io1i)eE~W38#n>DbYp4mUe(I|f(xm|hj11o@%h9bxkuZr#x*4sEiTqmHLX znGa;5Rm}g<MWXD7XVGR@sZ=w@>*}(7YMzS&C-aT3M&Haa#kR_$b=dA#$MK~6P2 zJ&p`|ejraS%_q#3@%6B8mSCh%xkEA(ruf5p^U)Ub`ZUwej2KEr6!QCdH@kL0ITbyg z{4##!PIBWhLsQS<6TA9ScnK*={4S^Mx9UQ|?d<Ok#Je~jmk~0H*H7{oFyRVDb<fN4 zR2gskv3GkeQ<2IMvfY@nTH9Ri`VLCz!2>Eitvxjn%vJO}J6l_of%4p<w(Y)|)A6WL zod@r_saZHKmLFLn^Utwq^H$qLlzOx<P$uWwwcD>|Anhp89wVb54+cEJkUTpwtV@^A ziat5z8Sl8|j3^`<>S{LDlyfB~+*f=RGxD_jC^=vD9C3S;zs7~gD?_JdS1cb-fB*gP zDGZP*LW>wL3HZ^Zsmd?D<=MioVwK?t!8gBt_hPq^`?8s%&l+KEZhN0d9wQ2`f)br2 z^*-%%LT-TGJ#1IJ@X*xK=3`>xyA2)`g{XtAs!@+@YBZQF-02(|m+*3=i4GnW?(~Mz z>ha3yQc3o5_@*Yqxm;2ltEx<D_^Fbe{QhrfEftgP=I&Fclrp(Z*@owcZ2_e`Rlli= zfs$^3B|Qwesx}eQ5AhwukC(81vrCw|5Vn-p9U+6@d0B}(<%Rd6IJ!vXwYQ}%UI%)m zH*b?Wh0rdOSh|}whoN5-y;!nlftnWn3gUs9IUqN<37t|0^Rm;t&$e0Jtq*;3SxbnD za%aelo&gRTruG)wer2_32b*jJ{LlW}kwd1=I^+5@VWYPD^}nMcmW$GV370nki?gTc zsYQbcs(Wu8DXr3Xzm6$2i}mc(`m!m)U&nMmAvqNPNwE{Ur!hIyh44gvy|Y5@d6Uh1 zY*O;XVh*=-8^~!am<isRh*Wxp%}b$>Q+_feZkHtr*PN8SNhu!*n8bkc^%#bRA`Ci$ zoFgy#xX9}HD=5ghSp@A*+eDs~vRTFlacU$IuJ(`4*6f^@)l*$&uF{v0zF<9)Lq_Tl z5NZGtNS5-3i9EON+sAcHjl?&DxGd5SW&!SRixiW9*uvFVK#-vtJzgTUpAIK=%u5dy zu_bS3rImv1J*Hn4-08Q1#%RbP^ft)HiN)uCWcdI|S#YWcY7Kbr-KqqhCQL)^>F62% zghZI*A-gw`t4jnTVykVtqvP=~^P&1ixN87Iwkb@C;Ncb)SF=p???LiVCsQ;?ObjEf z44%^1*8)F9V!qa8mbLzGJlA6sjc^#VG3QOj5s@x*&Opy5Vt>jTxA!}N#lkuo7<?Mr z<u>JX1UF!hx+Y~jcTixp+J(m+@b7X@Z~5gE$6WIO1oL|O!jmqKOykJE$>&al6&`BR zQbi>qBFryvukp1{058<tfw-~a)ZLy~whfM~Og&nH%2YEsATabNr5#3To5%|ZD4a== zI=pm2$*GIf%D8Z>^P@oP_h&!*iQ%pjPpk%P&Vahc9(wQlKkRIt>qZM%z7HqbC!6ak zaK<g%42`_(P~<o#={lNw78Dq9F<JR3dk1mT@Z@vJpF0ET9qqLP?po`R<430W`lp^F zZ~~qgPNPHuzDux7uz;eMv6CxHtroZDUlcOKL`4^x8Jlj=*`05u8{Ob`DpycLQ4EAo z4Fr$tgb}qBHUe|W3ffr9|9l1WFxr<@PHR5Zc6m@gQI}qkcQd%}4CKIRdbqAmhM({! zYUbRf@vcmX@ID=Ne*Y<OWrY^tlVxhWYId#ffSjS!v|%6`7rKxKn*;?CBjjzxrS5zn z5msGlY#_hxGqUUqRrzJ$`!W;)+wW{JPaEqXZQ+V$z){|dynt%hqBKkKC`g8vB7;S7 zzWU*onA_g`Hd%XE-DCg}?5H%;$1lPrH2@vCq=NhLs5$8?$)fSNQ_2_h3rjG~)R=l_ zPG(Y@2=2$w=A|}NE%^JAfT87~^-<S)Blp1-aiRSPf;%Y_QB&J%lxpSa^(WIL14+WZ z`wEU5#2!03U+s_B>YC&F8DBI!x(ik8&t>bY;;G1qrqzzRzdhfgUK+xUwYkaku;NSj z@60s%ULyL4s0b=ej1}0p>+xAbD>jz8(4M9^n{63cwrlZVo>&4W*_LWm`A7}#44UPy zir=TOaZnZl<xZ!Zew)(Q0ELL31beuQY<r-TfiN`W+(MrTwp2v-o0$*?i{0%t(-22` zEY$*&aNx=S!{(cjfZa?&lEJ2OE~~bKTgLXRw*~IC85GIE^1h@}e({$=+5>nk&N&+p z4EsPYi;Rh+vGZf06=|kEYf<Nd&g!5qb7yY!Afg162Ch6+7_HsfcbOg*|ECtgbBEY> zN=?H++w<#-ek5cb7GMbEbm7jA&3d?NjA;*{O*Ygp%S5>#5*3_^1(LlUD&^(Y=4KRs zn|OENl#$2_wR*6+5UAdy4lMY`h!^2=E2Zgx-CmWxqOzi|IcCLqqO<&GQp7+-n*s;1 z<+SJ+2?l2COS(|;!~ztUy1ij}EGZMdndlX&Swuen-Mm{cwdZThJNZC$_VSMy4QHQk z(@k}wk*VYK;&mGFZ*<(J-*UJFk~Dgnp`{}?gmD)ZD!)y)G=k-M_X7OOEnd%J)3q1- z9E!}YV8jWf)!?<v{It}hwd`UIr}blcS;ri0qkw>OR_O*=-kfXRX3GDELYKFq!cVK! zqjAPF$M$CVyP-yx*>9_!vdXg7#JJ#rsP*<MYXSqv`kMmy{>z+CQ2(0HQjmz~o})ir zn~+;Gw-><kYrd5gwyeCb*T}JUNN#~GMCmCZY~joCq$~)bU(`EuBY9E^sBr{?4td22 zN%5eG)v(^MB7?a*WQMSQI*=%Eu{{v67ttSut!=6zl~i^*n<GJmYB#{48U$D@TvsPq zeQ?ek>svCao1%UoR-`vbFnEyyDwKsrm?)WwwSwP*dOQ})*BP&zb&}<oo;kIZ5lxa} zh$OfOV9(&>v@j{^2JEi~{S7mdYj3oHhEctZK9)yTr>*(!Z@9RAr({+nCbx!jD58vb z6y9nmK15gk8Fq4#<9EZIjMO6a)yG8ulshUQdt#vIwZ6!G;0U?dc^Xu{${kZBbg91f z6OL4E8-c+@WQ2Gp%K{9|Q9;niDKdc0lm!j<rIrBp68}9i+zlLhfSzoCKqik(x(=uC zd#x(VR22^etFnzl?<^ul);CaOXI#w!H&m1iBO04pH8qB>MAT@cd&5{t5>ZF`!wOxq zEegyNG562qHUY|F0cseoIJb)VWG0x8VfjT$ID<OY*F5x(<QZSUR@z=-*E))-i7}|4 zwyuGUjfVX7e$?&9eKc|n5>W{f`j_{!en6{tJuCmUBW$iD4mO@{>OMc)K*`4QM3t<j z5G!J_xj08}D@yUkY6VnW3#-kOMP6S8Bci}(aE;K(^E*3>^R!^Aq4G~%7+6rPB%KSa z?8PX10+lJ^Ko3H7Y4qG=0|J3P=43Bdk@-nbKfz<v{$W5yN|xX5q`b?HWHLg;mRjWC z6$Y!fX~}s@^c~xern5+<^Bzwwr>ZPpj~j(*YC?5?6}J4c3JT^ney;Vwa<A?qd3`AO zQUBjmDE+kivCInZ#@lDr7LJt;Hu95sWt&0BoUg+cE|FyKw;_i8G*SAk21|Ee&^p^p z-QpbJxly6i<^HwH<jDv=TqdJ+Xw6bAaxjao^v=<H*Nh=2@?qv^B@=1ke<)2)V{ux1 z%|UeIyfv?vk5=hH7ir?ST6!}a<tcp>f+t9knRd!*_PipxI^nj!%~$zM-068Y1yu%8 z)jSpUl^a@*9NfmqL3!!yR#UTqlm*9?Sc!78&a<+Mn`m66;zZMG!`#*%5>Kn^-X8Ur zTNOVDJP_ltJJf~+Il~X8)*Yfs{&NYJy}0>gR(8YwQ(dT<k3n6q5)gOVZr9}5BDw57 ze3A*&$`M$j4)ZeZTy0RJMy8z%zsJc4N%PEofb3aZB1Knfb}}H2)ATN)#^~ih<t$7U zbR*+_9}$KIRW{~jCZ<Yk+&ov;Lm0B`6`F8lGQfFR8JTza%aSa6!Q%Kkve)=cTA8cK z>*-xvH8L1%a;2?6lGtm)?SiK$XvvW}U|m+a%bxCDamqPf5#<XnpqL#Q@B5nWnoD?7 zH(0qb^DiJ`PSr$?sA}}=p5D=hF7T#-lV)UcFkWKr?O7fh{~w_AX4j{BbdDWU1<30K zj0VADA-A0VI&HYFm~G~HFTytW8#k;9HQ+;lfs&`tgGX&bB9dSjmR0tCpyR%NF(X3| z+q(Qh^d8hstoB7h2pSctH&bDXl~ZHrZiE~qyXL`wTt~0@%&Z*)FXG_?tH9*Kbe=(F zsc{&N5l4$=5JyT%`~EV!<L+lw+8hu3PszS|hN4-`WS<G$<z#k-r`M_YNFHw#63UyD zaR2of6GN%aXWd8m(GHhCW^n|*5o=7qdPqE%{~Ro1SIdF0z@;F(-G227dLJAfHFUlm zymmwHR{qc15;MagYPYdAjrYE<30|srq}coZCqEUFDYf+(PtfG5v?kOFJ$>}o?v(H( z<d^0+mDsQO$p#T($re-}o&E_oi#EqyPk8@5a=<V$I)m?<`$&x0ryzk6JIke!D;cU0 zw@W--9o5q(N+!mlh}zN-W&~=Xx_H^u0kba3K=KijdOIM53b~ye{AfCAZ!wcKsD%DX zoU0!OCjk4!p%!6)K~b5X->T*2kS;=~BgsI1sMplRV*5pT;X~^BN&KKXt@a?QHSz~% ztYVx@lHKGcAe+qXSp~K@N2#igRFoPg;c}ESEP8P1>q1wjt@l~}@?HhcFsb5cYzPvE z(E=*cYgXjDS@EbD$N{iL7~>@gz6$;?3xMb2EubnLn|H0}<l!?3<ed@Kj|NK?U&K5D z=SPvHw@FtoGiw)ts-|xAsHLbbui?b%mdReKdfDb;;Yzq=zwP+%rGUQFr`Z18dL2PD zy&jXRR(r_QnLZ2T7JWyK=#t8O3(G=>6YIr(Wa;_1t!}XhV?3o+@72C_i~TM)SKmeA zK=*^<#V@gGk$Y3TWSv#rN6?J%=0j4Qyg?;`9CICBm%(R0TnKbWn9J1UHUu9C-$%c1 zpn2921Kw`Pjb@{3umocn(*%ps+wb@1e=9<S9*hp-P|x_h?d8jA90;Ml3TY2phv&3I zUZY1dS{u_i&wm;`wu4#PT#bPOvgKvL$UvCpGvYY(b9hvCUOF_?N+GvUD-DCk9G_$b zH(-oLpJf6ANMI>9>poHTW#{mz5Mi4L8Ml-T;6#Yt>UEs2ZNM*$-vUN+{v>->;@mV( z)wlxYm5(vH;-1*j3+yt3b2s8Z$*`=S>vrrY;Xc=_hTa{z2LYSv=&D?A`Ru5;gOuz1 z+lgJ3bfA!<4BI4LMQfz=Wy1i$GXE71IHfCSt#2pK#hXY{TrvSUnij9k&#KcO&+Fk= zVi1CCk>37Mx(>Jc=Yy_5+rx8I8ksMusYr}~Z}ry6pvBGP?YD#SE#sKqv&}~oK~>sF zGBBTCc6jeE@y5+bA;L*^;7A#y7=<FyYG^SNcTIzZW{QPimjTAp??09K6rEGnMC*$) zIivQ09Zva8xuDYg3=~2yG`zU$UB|)x3^B9}d*i6V@;7Kr516}*Mt{>{Kk=k0PNAc{ zr~WjjoFl%rv`3gjzLqau<XS#oqEKkb<8ERNwLHl`LQQySxsO-Nj+F9g@cq6pNp&yi z8xr}MA53u)#K@#Lj5bQPV$!}3zu}#=dlSbmpTV)x6C+892GC4sdg5nceLT(|N$${b zqn)emr#;`2AK{CtXti78Ha8Tk@d}t-;G-HWDNLp!B81*D+Gj#POP{WMpP4Pf^YB;7 zvESlq%=qORT|sOSc%e{q?2CpUDN44UC1k$2U&^d@*@oh7p+u0nq@WIlw*oka#d9vY z_*h?-jf$n?-?AQBm>&~;b81Q}Zte-KkwYU4U^HdI;d~zLAK%MlaM7{C_Sg?yZT%-Z zG{y#($NaQ94=PUyh|!LrO6?qSaImXR+4=KIn`}Q=dSQ=bAsL!I&l*Apwx_+~bLF|| z+T(KAy{;Cqvi~x%C<=Q0-e9c$ZH*hqu{Jy}8+aCL*jXR`uVh>%euFOff;_szPeh>J z=qggm>zj@5G-<v+$TB6{Ev0-FimXoajqdA8&*DULbse%zbXDnIM2+>uJLNj*(o$ST z?yBiuCZ?!#IcNsIr!1)G0mU^JL7`Kuc0-Tm^&?-E_4<@~^8)9i=q!AWN^jhSiRl`T zIzrC66P6v=e*9*ZD8okass&_rNb-2J&QL`n{T$*~1Mn28wCeKk<8qXFlmwQbL%cpX z&&fob%&tqgRcm93SU$n!Likc#1_p*NHjTjNs(N`_&;pmTa`0C|U6i?<hxUBa4W7mx zlYNul2j&Q~gsx++IIW}bZ~r52WN90}X?5BT^t7U%Hk`dPIMMpGTw51mf^#jH=htxv zFrg*+Rx?41$<fHhAc>_r8ES@o>bYgeIUyWkb4{&9U-*)Rl7;mht7jDAkE7*{8tsb5 zdSvafL5cwfL?S^4)r(pV_I_r{P3E@HO8Tb_XyWpokg=k{MFHF-z33z$RZaG8&ow@6 zv*k!b3s#Q;PP?7W$(~?W<)hjRlAC=8biqb_*Ns%=I{AK$-E`t-&q2qNpb%Jc)rp<r zjg@YYp+W9y=(0pL{fF~Mx~!ItU$vqbj<`JP!kJj!B(n0VEi?0%fa*iOe#L>OiC+e6 zh|#?<D>cnu=%L_nbzJW+;_wweAxEyi-N&3{ea57*#r#rRq$%?^ufAKU_EbPrZ!7UA z2_ZlGlcQ|<EcO8@cBj97*0pN<0f0L&yd!=CLsF(SYS6P6<Ria;@kH8tDIMUVecf%r z&+9nK%4a(a)ibwNeX(cTNZ#}0;{WBy*y4mka|?#M!f55P(OP5pCZO-C1}3H#Wxr<v zfK{hrB6bd^cKXmUgcHkC2!H~{Z;d^=>KrM<*Yb<Me9Qsx_)Gk%?sv(;!DJ%uYb%6S zP?`=J@wKzToB%Dt+<kdC97RrGnL_mhX4sx499B1w^fV5D>#qs!hZ0G<zTdg4;Zzv& zQ!@HnR?7HzNpm-zxL@Y_8OgzT$M|^D@_c$`oo8}#P__3-vYK9`-ap~wdzv>N<67m2 zF<!6g4IwIn*G6t6_usY7?Rx91jv#yOMvVyW7+0YI^eKAzcx#m0j5lX`5~?}FGuAP? zqWY6E9gn$+U(<tq`V^9G*G>6Vz2duuWKe*KTxXWgT#;=;GPzL{RAM?&!Y^k=K{%Zd z6qNaA-cMTYZ=R4DbVJq}<L)Z4As)7g%v?^x-A{e+HL9iA8|W#YidP?OgN*I7?ucL^ zBJqpKjSNAYEWsVMfyn{Y&l^arq!Nd#!KdID5NDGcjm^ohQ&OA+qp!F3Nm!WPD$V#A zd%J66WKpY!gQjhONtIn(s4&Sc5VXVn4Na!ueJ<Wq(=c}C+q+xKi-9lIF|#--PDSsJ zJ?m=qD2-7=2grrJT4cD(MzpsNvAFp5*bsRz5Nuv(;XvP+tQm2X^EQV+LrF%8PLX}% z<Z?%iU|L(PJ-EWEEh%j(Yx+{%M)tCH=7xcTTVqRTsK&IAcqoVvs!ux>wf>;@p)-0n zR+(&|G=%xN4hUXN%fk~o>sDXMFaYZkVWn|!wqJR4u<K)9{J2Xsxb5%}9ttbE_8ixC zjpcKMNo_F8u1mOJ)lcxJ>lO-<W-=igGg1b%gX~TzMZ`?O?mHzFDRGCdukEX`PUXmT zM{|2)5xPX6JQH)dSq{!?WX>DZL*MeNM&y`0o2BBQzaSCI3$57rPLaR%6+^>8eZ=)m z$3I?%N9Iq;X|pqz7cQFLBn$$4a*!X>QL2o|5yW;7tp!8=RNm}Ke!5tvfXva1yV?4e zbzpV>kkh!j&VukX$MG4Yy{fH~o^#2}bIw#=tF$mL+rRp4VP!+X4<^2B1=ce%j%l<f zWa@>RE9s-C3s)!E2cIfH+$RS%l<c!^*MkL6MG6VjZ#Yfy$7%ke9dcqK_`&0R$Lf4% zte!+A6+X1uemxGU{VSrWv2*6}D7^@0?UkTRQ5$P%RfKo@@q7uMnZ7+GCfKBfjBVax zo6!PyTBn+s)DL*XuE?*tbU!Gb5xB-H1g%)qdO&U5fO=N#Rdx0<s;}pC=l2-*ybTEz zKHXHK>PeoJ@Oqjf{i7MSV!0?7(xL}F#KqATT0YNP!N}cpYB50>iGYilK@3vlG}a@A zl1A*>$W3hcAo-sI_GI(IhbKNyRssC9oQ<e)=_hC{^wcYkm~p~V!?e58S>e#Cu57XS z%**Wd?bVS|7xdk_W)&T&gf=6pG5}w*9h{t-v3QL#bCbp?rgxWe`9Uq*`trO?Hx%Ff zW#2ubD!U7LVg1Ez2iWfB>%2%|k|V9sq}Id;jCW>-$4BfYgSD-c`OG91Q-nzdN_K$A zthb_do7p59->gbNv;RIC<ma*v(OITHsMuc<2TpX!5cQMcnI=|YGY_ErRqHc<^7B$$ zPt9=kfOAHHNS}>2c_osUjiQ2)WyY~4FKBSmyCZlhiIi}U!#@wjiUm+Qxo3{s=cc8~ z;9yePD2|Q^eI9jSQTtRl-8Q5piPo7vUyfz2YS1<TK1@SkRcR2b4n8u*@go0TcYtAb z_U?L6O9hT<&!>O2JQKfP;KMo*l3@Ysf#)+^`N82nn;B>$0o8_d-5#x}yD>m=eaKp4 zvAMFeEsvjPrl%2*v|<Lg{xeCE;@y4v1wm0MDPBm2=#i3u<dD_?=MK@*cTC}I{>ucN zCBW+8xG%G%J(co(Sv4ii-u^;tYD!I0_Oxj5@#l)>FWu=KKN-%!njc>CH}F2BhJ@Nn z95#1jfV=r#V|^!~=s;(6A&&7~f_x+MS#6;g7M%v2KFob|6yjK_$Da8E&j9CU#A>%d zm7zJl(F5B^Tu15}B)JpHeWvkR+D)^4^NkrurE19jqMz@0qwvSbpc%B4Ui@wSHaI`@ zgNL~~W2f6aKc*53XZ?7;hhw=4u{hU)$2!U9A`XyYns2>GT3z)nXTy;UUkm6()JFBs zZ{k+I4}S8;t#sIf&^2*<yjq*{NlR=dO)TmKik|(Bpn(c{_>e;HKj`HQ{qbD-L*Pq; zmi_TFw|1$=B&$OD>r+|fi+EJU&pv}OQ?(wqdUfRIy&gwAY@2m>e>M#0M2$THfDIEE zxnSmThpu$Q^7#_mZF;x(VWfU$>@5u2txbu-TGgY1_*?cy>b@~fCHcpW9yIQrpu*uk z@W1F7yX=nX*;zOLV9h?q>F8VD3^dmJDd`21C+r3=>#*Hl$HtpdZf(!T1}UL%dOlFo zU)V@_!9kU`1Bk`>3~n7SBdqy+x%|*Av3|p>?Q&L#9r$`|wxQ&bG*DysU_hj;)k{C; z6Y>y&_k$+^hfePvWKKx&_q9j~M!9xRxJU_RftTQd!kK%*WfpsI8&JClS~3>tu8igf zJmumZ6zdBg5%B)BwV$wH({Av^>5QLI*x{U6YJdxX*ZQ;}EG5(tXB}0?a0Z}#9s)HI znS_C<**TrBuasswEJ20|DbCKWAMYz@CbFNGnkw+3eoX^;91M&J$ea-rMXgpt#U3Hi zn=ovhoF+Dz71DEDG_te4FXG4Qao}=cQkUuA<+$gL2D5TcN>dI8xoHP1QU?12`h8~O z?Ric{%s8=ZIensRh9XxozEk$^2c#rfyZ?bf*Kp^SyTIvZSnM_jtknlrXh2ef#zVb( zv#u}H>JeA&Q%%Ozi4QXi)j|z}ar&IzKxn0CpSe%crtrsF?n4SMB2sO8eWN|$^_A4Y z&F%!Uzf{xny8IIaKrREq1-T<;!J6PkT&m3lE^sjM<`%^^`lJ@dj(^OY0D&a5-~lL8 zs72aYLZ}C`-v`&<CCadh7@81qBF)eov9DXGh=qtGp~dt5$eI)BKub^csB*e|MrG82 zmZu6aIXQ-c!MUskTyk#8@RU@5(si|ohC++XEB_dW(!;84DQy!QofR8emjwS)T<Mca z4qA!a5H!Qy0}J_wD>@l-&vOu-=tO%c-f=}m5LlWCMQVa`d45TXg+_22sv!g4mhi<I z3tzry^Go{T2bhZy#8{5q7_0;p0{fcu6TCBdjEVJ+r+TNcq~(5<j~+R7{qg-WM)Bh> z!Eyt)yiU(f4S`6tpc*)Dj*ajn<HQc{j!QvTD0051h^N81)f-i@BLc@z{3Zw_MPWvl zZp1v}Y>o<Rj{rl~V~Z-vFzFpy1PZS!Km39>;p1HYF=kO&j13jigDJzyQLf3|f{XOX zsM~)qQ2#sHgHc!9O`IvetB6e`L$cgzhVY4zCPre=&U%ZJv(_AyF)i<6yUJ{*WMm=R z76}Gtl54Jj7BT%uJk|cxUk#5a+tyx+i~D5>(lkC!(aC)JSj4DQ<G_k~y&I7-e!nv; zy7RU7ry4#~^LJ5Ps_mQgvyHmVYQmUK@uY7+`9I<NKyiFsJKZ3mwjsR#PHz07kp>Y0 z>;82K-SOD^+W|>e-l-Ud2Q{oyRnD{bM|x9XrOpKgpw!_{FdRnoq@Rmw&FE_;eY|ef zxuLtj?6EkC&(FJ{5@4~LArgekbp};Fp1IX(OU(0#nbeFhD>8-jK(&3=W>ji*_rEP8 zZZd=%soFELMwy=;7w}#-MaGS-`@UE}XyvWw9@>N!lb3rsJ&OYD-nJxwzkW)#IC1P& z-4kH(^^m+BuV?d`NJNbqe+@%f6C|g?!zRZDfOvP}4jSF%Xt&Xc^<otbUp^Hm$(d5G z?m&*zc)Ii>Op{hH=`TH9ndb;=Mx~{~Qhp3=Q7y>+qvnYR621Wj_l`RGcqF7~ZjWP3 zPM?r4r;QP15Tcf{3!yC_q<AYjSfm!U0ms8YLeZC<i8kPU>f}p9dNlJaJL?q@JB@K) zCXVIJkX_J%zub3~FLhm*ztL|2YFku`Z2KmGg(SmoGoh=nvd->^j40mxV8*NGbdNuR zrd4$dAKek*Nk1VQ5>8pg(}o_#y$u=xGD9aLdo?a?Szp8PaKF^-pup~+LW*#m4CCkN z4;~Lr58xzMoQjzj(X-s#%_V{`y>5wD$9&-du{#(fi~vl=tiN28P~FVrqM-Rm-yb?; zXBl;!?Uz}BR021S)>|or@IE{1(#K9&0MF{Jhaa5~QV9>ys>{nQzgQ3Qo}3Lw$Yo_a zHTBWwj0&cM8$?>~(whrrsBnzdP{R-M{TLZlX7YRVe`^aKq5}ZkUp{I0Z=tGMg?1NW zjV_aJ?rP&t)J_lfC<YB(8&QQoQEF%mqGF)Ap4&4U$k|p5c>eu>MsrlQ%_9ccgRS{M z?TGm|N0>G6&9FIc(y8nFpz$4(g8?-BLq=`E!tW!3^yO$+K2nyP?~-Bw!>B>HEx|Iv z!CK#RqnR6@R|oqwuB*_YdP=SHM~odkOH8|eUTXnFI4y?9oyM6Txzi?6`3wCA-Z=g6 zk~6LD$c|1!1aMs-U^>VCyHU4=g_5$+841t#TgUb+)a%nk@Xq``)SUCtnWL%0Z~cJC z2&y>!^;x>`g$AOvOvzis``q>@w)pU{vJ=z7)bZu&uP|gJd3WEk{LHLa|1A5x=L+Gt z7pk^kd|o9379v-aLi{mzM1CT0d#C{rkZ}FK%8h28u*&|;OE)xwdwhQGt=q4V^*Tz8 z9>I6PCg6!vAVL5Wc5WMa6ElYA>b5{Xq?!n|aG_Z$ZvcB}cvV3`ML}L%o4p_r)~y%t zh>QTDIy(O3al3c>y^3A92>h3?<o==!?d#;ChaU`)=U|rn`i*AUaJ{DkGGRj3)Q|Sm zup*{!o=n$$RvbXN^Q+VEU(rU5@J_J@cqsf2x_mDE_QsyjQ*rp{{3OrxG|wQ`PZ5D{ zJv)>1@;+mhij-;qaPbwa(!Z#%GA#wy{@&~CASE|lxYNF|dz7y0S%In=X)Ik*Y_kdR z32c~EDJ^v<>62!X`p_{h?bVvBXAIii$<O$BZH>3xF(&0FsV*%%{gqTC5YbSl?jOY* zcxQf9+RknG{_Xvn3%(*(I3F;QpVA6Jq{0R-8GtfsW0LRSV6{I}46ViEFQvA>RxW0F zQ=OXQ$@`zvKoFTx`*1NMPjf8LRyvHKRu&Cy82Nm)6)pV9lA#?(haN1~S?j@9Us^kq z^rUX*XOWt3zKJCNmEfj+x+=$j6vx5*WOhsHFNKMQqm+y7>l<`8U(EBsYIRmdU%&Hq zE9E}7632%iZDKfNm3^j>hR(9tbmjyP^(Ryxou}A~*DL;FyH#eFbejisd)dJE*t0*X zIPbmm!v0!pZG8_KcP=)lHarvKBA)deHsSwSfKfpG35;m33+P0#1}6J25j4}?o!pd? zV<w~Yz#IL2R17*N*!r)Fr8OZ%=_4Y$(+!g(2QP5Q=~g|BXTprlTEn7Ygk4tyza2#L z`4UFZ5jmFj^QG=%&PN|ElDC+!(PAI&)sq;cQO}+=e)@0THr+PwbpCr*kJDTSdz$fK zI*>Mz+skV|<q8l?p%*SvzKQ^Gv8rYlEn+Kn=m9P&9jnbf5hWuUwf*t1n)to@on}v& zqrHp!eDPe8wm%c<d9)@fy)W~v8|LA+pcZ&aF=E_PJHS)-DpFd&$nxD8Y-@AL$EYhw zS6Nn33yi#iu8I=C-fJxq`+^bYaR=h}<yCa}j27Dm_==1`A!Ew=@rDcsdU~Zs`7Q=v zAY;c!nhw;(O>M1ppCS9DJel_=&i5yT6p7XpP7S&*h8PumgUnW3bG1)7Z4-*pEUZ4H z+i)<nUA0I)VzRTZSHgJHjHWl18u@Q_^m1U!mph<M7Zzw<1B`cnRrb1i|4g~rx=SnU zeq_>7W@AtG**SyjCyhBLY4)}9(;7(lIk3bQ@8tBJ^|YT>6i*jl7P&CpYh#01;ww?c z416lI_Vm=|L%G3M97~t8)Zi<wiqJ4v*H?S;^G*PTog7qi9NYEXSAjv%b?C%a+iUIZ z(Wa?z2#ilyh>uR5)p{O#OFW5p=3*2$OfFPUV|q55)Ah;yyXl%aYa*9=zV=BEugR{q z-3GQC2@H9Z%_54)*Pj4B=k)h*yWhf1i+#P}SDN)sHjyA-20iR6ws01bs#cOxCyR&U z>np3``?Tl#T4G)()Rd$r#K|AjMv8@!{4^=oGJwhRwYm!MY}FasHDf|dc<)C3eRb0u zVF5PX_be|_U;BdBWhY!{EpT3H?2Mu0EfH_sc-Sb18t^XFEDUvo?1RH=dcFN4W3SI* z7!7W}X`w<`osYMg-6;nqwc}w+h%Z;acHv=D-**M<PPwWn?&aEq=}Rd)2B?2k)TM}* z!0&L*60}uO#DLMcLk{qFr$y<nB$`(-^!FS{qO2FYvP=n>KjS<;%76S?qpvF-;JJLz ztp|$^XER3wG<OYDma}=BlHXVYHWxtA-1&I}#irxi@UI7_2uAIdHDB?l)d1eHq6#mT zphpdy&aL@-Bd^$7i~j9D(SD3Cw_2~P2rlySy^+!vv8Si_tee`tGiBv0(~g<tit_5t z`2TTlBe=!26Dnw7Z;ltb(NytgaE&gb{Z2(3Wg|jAqLO_e>Cwa}fYu*j;kFrS=g9>V zrcIYT=2vW=EtdRj;gA!rEzTr1bD{`9*u0@Q*KPBCC&>o<FW}e{y@qKS2Kw5c|HNS) zS{2bo)F?#+-U+6^qRloSa{l=@|9-&Y0OU$+gAcM=V)iZpdxIY{lH>MV`4@T$mh(!p z3k)Dh$BbOx=zKk_J_GvUI#Zk|P6+7==`|fZ&hu9&(CqGW4h*2+1Ky~Sd8+Tc@?yvE z7<X$Np3&9fWz+vF(TT3oQ1Bw?+Md~+@Wm(!ec~iohVl7dw9;}6m_%igJci?jhCKNn z;fp21KW+}BVBluVjzi~jREJ}Kf*HJ@S^)0pFb@^lvifmr(EysEJ^H~EU6D}x@wv39 z7C%Ks>J!Ks3R9fSM23nnK8iY?jq3WK`w#1)Bc3f;&F)Vf1IN?NvWj;~yoe)eSWn>q zY-i@&VDzu_3#7K&pDu4F3J31Jfy<^n*9_G_DCwFIt>0N=`UT*@v!I^ALD^Lnle*xx zl#r|WpSuy)rb-;qGZI!jTy+^o_P&&n>pk>Lw)S~$c<v<mpdoWIvhOj4l_|-@bAuta z77L0}VnDkGrIbaQhq8!I1ByHqRy@Ykv93(!GXY~rL1kQTCJ<0VV{9Fo#;VFEg6=nO zHeM>$a{qR2x{+?!jL91L(<_XiqobfX*&nPvv(-rSITmT`7aRomXMB2~*}Fz$Qj;&M z%s=bF9KL74FOX6{SF2^ftV<)fUgB5_=o!A%!_^J4-%!^zKO;|Vc{TKLBv4JhFD`jX z!gF)Z&~iS^{cBqnLy}*opp!gnRXk@w<>Zq|wjytU04h+q0|IWWVZGf<=VHIC$4nEk zS@P$7!7j@F`VulA=E456O~2yVCv7J;=UgbF{WyhSt|aH#u9Dvfx#oT0p)z$*Qb>vb zwL(o$N2e=;me8H5+HX7;>&B^=vdEF=vAccqlH_2<_M>V>-O!B+hY#FNkQqY`7X{4E zDz$E3PtzNyTC?R_0X>VF6HdV7CIsOAk&J{&M-?nIwSW%BuGdnzXAG~?Sd&rihb&Gb z$bpVlPo!$a!m`1X(VUs%g-A@Gb4{chi`PduzvH`V;bA0z9?duzq2P&(mU@W{WX2cB zX0_c&03E3{5*5EW=t&OyziFLAON|LT*HQ`9QV6AK>O6bo@GxSs@CM4Wb<?8m4Qvg0 zJ~1u*K~k>h`XBe28UubpFYA$h)ojpI5=ZU&9u^KV+OS?Np4I~yac*|1TJGKYc!rBd z2s)&&iVWeJP)LIWSwt4-Yh<p>$ft0V3;eB_1FNieyM6i<(BIor&`(gLBxSEMth$AM zs$Key128Z1y7Nahu>n_24^yr`NEc>=`D@I&zQDjA9$olmHX)gPUQ~~NxUoRntx4@~ zRaISrPszS}>dTckBLCAoN~`)juCMucU28f5G#3C#f#UO9O?G&+>BJ)!z*l<T!dZHR zZ!1?q0O?7Lv+lB@hsH>i7_&E{l>OpB(7gl7^5u_EX%uIIW2|>!Yx5lpH*WzL@<zom zd%@SWK?S$BleQSp0C;^aX#V<;Fvx1H`<&A?q2u9t)W>^tLO^sR(nyJ;vWT^~jjWws zq@0}xI>My6=WDk35TUz!FauIFVp<m!`D@HYC|8+t4zr%I5F=k1Sk_4)Mla~45`Y&W z@gn%fIdv^`3}gc}70iz#fB4={XugRxj#YlvflHmo2(tb7xu*v>q}!~AShd>E@Xq>D zGvQqIwxdXE#Vi!xJoeO0JZ$}C&HpwP(|OlPok&}D1bBKrnS&%MY|N#&St*Y3<L;s* znV@`C9StnY^e!hc83K7~j)x`Gfh04!y7pxj_F1Ve$Gckpzexg8Cml&2V3Ks9m<0s5 zk7q`QbZS|;H(2ArmS1J4B*AeqbJQ8X;j1>n7xL)4hSP7U0+3I@c7E}kD_Rh$YJN*g z@GKL=zAo;~Cx3M+t9=*QfP3dYETh{H#fhWx|N0qAZpTn`Z!CBJ%K`vuq7x1Q=iNCI zQ7;_`w93)ctml0A6I*YYP|uoiVtArZo_UIVv?r80p==jjj07FfC5Au$Cxzr0|J$vq z4VQ%nT1T1uN!m-}E10UmHxoOxc&fPX^a^j<nOM?|HB&CmSDBqe@)SXCcvxY*SpVd@ z2gpwF=ZpXLv#!=|NFjiT>YTHpt*QYKgfkU;1s$Kd|3yceLaE!sWOFqc0RI1zOmd94 z)&fR4a+toyk|&(P$2J`cT$V3BcN*}36zBF*T-$%CQ>3k7v6nN{of{-y`k-}+Y2U)( zREDf6>~POK+T*0i^r`)ihyw~GkDr2}h>&=vpZdc43$AR`A@FHw=#!t-si4Wl%EVjC z=fjaA*c?MiUbLJ)`~oOVP$@E|_fBbz4;5|)gMZlxk0)OF!w0NgbDAKer;=nHp1`C( zZK44qzp3j37Nx%!H};?pYY6jGp^fJ7UeaHQlz}c+R04MMEq)H#2ks3D%*d2hYm{}r zwv#vAf1AtF6j(S?5vf7m0<LrSo28LmPmUl-F{Mvgl1|1mgiDIijJ}k><SuCsSyvSA z9n>5}6TxLEI&pg5%zFLjD5x*GF8}(<#;)k&X=DM-AhKnktM0woW>7||k@Hoiz+$t< zD(GYBU(fU;hql|<KtAP)S<I<>4!_aRU~OXf)Gt>Ck-=Az_}P6&Av*9ysyWSrPN(=t zO1Hj4@?aOgU_ec7<6H1jw=W98+(@+iX;vg2RP9M2cHWJac0=B3h2Mh0nL*JRza$s; zi8dt>oDdVe;QQ6tb`r0U-$7N9zP@h%3#CAlkZfVu*jO^lcc}Lm74)0U-oan#u3tWx znvAZjooE^Pnd~!$DV0PugPAL{9HzYfcy#9ypWkA-^40!mR^ITCOV`+Csmkd8+_-p8 zIv?^0VCB=55%);f5tb@8k0M{**&j}<(14rFf{RwL4Li`k8QjN(MCe{5LyXQy9-Hy7 zYbfryyz3y{DK<1(@Z&<{pT$AJ!LiNZaV|6IyGY{0E(vUyp7Uu@9rDxs4&}=KY40kZ z;`o9s5eN>!orGY)-6g={?hA{A;1D3NI4lGR5Q4L?1PSi$1b26WySuyd=2!1;c;8;t zeB7y;nZ4bo`}8^Yigz_$BsVGTifSHepPaoV4M};Pc1fs`0fvs%X8t6Bdz{uPvOY7P z1uo~TnZ0VQ8&u_?H%q55%*TL>Ctusri0`X8XKQCO)75(UGJFwoJc<86>pc9YzlY>_ z&=qO#+4Se>{-KYpwiYO>4*R%Q%ASm(wNP3ecaT|o%a>$q;Gn38F8CxAHxE4iylLEN zN<yUinjMZQ&Q?DZ*1z+5W|w$TSo5~Z1yBw(RDS~lb+|F?F*~lIREdnB8nyiioP>AV zYkEhcTzQ2x!5A4@q8zq(#<+UVs_tu5oEmZ*g9Xwn>h7@Q`KNfs`5F(gV5oCx>-PDS zbO`X-Iqln89*OQVK4bL@V%|-LV-zT0G;SAzYU>~1Ow8dSHh@b2b{GhJDr%A-fKiX+ z=XHSMV8m(1ot0lq{<BlnJgJ!P7X7$39BwyY2L$U04&rP&MH@ot>$F@y@1T^`@a3*C z&TPl;{EVt`PP^LF1{<>jFqD)B*9dwbAGoLFeE-jeN2|P-0XN~ZUpmG)&Qn%>^6`$+ z=eWix=pSHF2+;)OB=EBbvErQeiV;8vHttBD(!`iU#9vz+Ws<bi;X8|aRl>F_1ppRc zu^w8dqcOP~f@bO*M{yN5e~&V}rI9O9yONSo^swqKKCfB`1Lo(qkqJTVjP}}6fP(0X zIz8LrW_PUkq4yh@CWj<3Z@S_aE*^5anqc%QV5I-pKm@{w^!oB-l{*HPFR0oudb2Yl zD4n{nO)%Qhq3YEvo3nRCC0@xWMt``fToC>tVqtC*Vt-?3XSWyv!LH7HMeJ{6EGRKL zwqF2KI-@@%)WHZgOiHM~ZF`d-l4#A28gfA?=rOR~Dc$3cE|@&sFtsVt*kxU$=}kvz zvBX@)#h)o~nOT7$(J0^*_4O;@CkF^mA&l@2c$G_E1r=4uho~*8W-jm3?i<bf0u7(L zM*#jxN0bs^E0PUV{1UiTHxr8oZ}=fIEP4d<hjQd#Uh9yEru)83Uqesa*R$@IM&5fz z0JI^dupMQe<?6is4UG#sW3qxlrbTx+qAgBBnawgG=A(uEfST%v<EuZOZ4{x3sp#wX z7p&$j7}&2RU<^YL*rl}f1ia`T@FkA%zX5h50PLLr`#0w&h<WAXC)Po4CazVN+ifE; z*IIBNyCd#eZ=e{R0zm(dp*L4uL`izH+aiC{51g{h#~M<Na7x8xt^pE6Tj2!<=JHI< zV1}xAf=GsjkiJRDABVIDi$TD02=pm(Ad@xKqxEs}mPVlR21q0r!{E_3{-ZqYd1m-} z^N2*6vIa6y{8DdT{x>W#nq!+eWYr9%WoXbcD3frLsevf}6RsJ*d+cG<Sa2?mP=oi` zqUb&~<r0FDoGv!QSC>A6jjEVwupFBdP)78T7uGLaFhEbuHqX6xThS`lBaTW2?k;Y- z#%tL}QLQHSBG~B^#>dCFxHft6dWQTIq6_{t9X#4Hzu{+}oIj-qku*W;jI13_y1ja| z=x^xHAW7Jp5#;Be;+!3<?;p=PnUBPAV3qq-{p~brUk4c&r34-7Z8v;ljTrBie7TpA zpQQ#-?2#BIZ;-+@+n=28uAC12FpvC|o-A~r-q&<;a{Ev6Xv*mpX;@D{$@Nvt7Y@|_ z`~W2N*U1l|yFUR7s79*z&nIYQvnCF}V|3$lzJ8hbsdEJlXo12zo>_X|p~`3NN!krP z#Jo|~#8Cd{8=r_@_B)$X{Y~!0^2LbPqHBbHtOg(-1ZHER7A!|(`~j(}RaIn#1B6gE zK-1q6%#doxDR@<CSb1$c!CiY~7C?3v<jp2aU+uzd_lBr6Vc5E;_FTIYrJeG7_viQ& zSQLp*(xTEfCn<#me*D;AVWG7Jr^i?N=k1X%H(xC<QVZ=Yq&fMfIe4dessZynvw4Fu zg>=VzXO@>QjF;;VfHIxyIM!s03>ZO~5DOt}*5Az|;zHBpv!A^)xfA}4P8!1w&CTuW z0gYw53c9ycLF;&Bl`Ryz9?#_44WJluSqTRQs%J&2<_RC^c0+a@jLWRC^eqtd%`l}V zPv)oo0sGP3-vRUE#?pUrNZxl?NVEC_tn7|ZL(+Zz&abzWGNV)SN@1)jk9lQ+s&WMA zS#eI)l;D>Zl{wAnFBQ~9Dr!ogsV|0~#aEI#(zd&rU>>WbfHkuCJ}}XfnWqLA+PSoh zZd>B?bCl73IR(m2{mw7bChO*tIeViVd{9d9$IkY03l&kB;)N0oP2Tyby^_TO8NlgK zw?Kpq=`|0%X)LX!2!1CAFr6j?BMSInOuGR4F<!axEI|3T&*`pYv@j2N(Sh3Ip3NY$ zcXcJGgeu{>1pV(<iqm;y@s@5&?tw}%?JaYyEel}IN(P?w!lpW$5#C5rcfu>b8Lt;4 z44nOsn;pOpx$=8A@cn7a#}7#23`7yxYA%$IQY?#&tP72p#gtmNDW4{2dcE%(dp7F& z**1&;Q;5D}O4NY$s#B*(%Fmv+XMZKxWLquJW|ZEi2Ghl$5-4Zn@TGtxV7zZ*M$B{L zh}L+kTn>`+TqEjhRGbWR(+>MaJXD{`-3~a{ri;&*C6U`WC|pi~K_bo_n|^NZpn?Fj zOt$s=Df#om)@9CIK^B9X;y9iHcTB?Nq&_{u>;ryA^Lq)!V8E3;D4!cgu#*T8zC4m0 z8#5i>BkvCljS-8&3ZL{G|9jEdPUPt*mYET&sX1$)-fqbiM!8V5&}1j_2<*p$YgUz$ zS0o}@$MF8F{Ca^<!C3DFLJqL<Fo`z<RDO-q^%!S)n$><xm5ZGI9IY~we5k^B1|Dxd zNV!;t4;=eb+MKjc@YvWK)RNb$Fv(XrUgOBIw=4A@jn`)PMrTTVTI3Z9c5<!4*0v4| zQ0V^>DDQC_(+@O9e4l-I>Q$L;Z3Fg2F*X7KalrFhav4BSV84k3x~|@h`$>8L^E9pB z0=C$|u1;HZG%dr7h?JZV>1zYRw7`xpTCrSAib=mPcIcj`mtaBCj@2-v<v;+}Ck(;$ za?xzkZ_BQ!Oy!k$m}Kz7$->p)BwmVP<=tR^y7KRoMKegd%Gq*o?9hp9ht%s=9$}@( zY8Gy;Gxyhh7#D*u!(Ly@;bds)gIKfQ6ZOz3iJ%^(eM3ra*YWLFvsSmHgdp(ICP6Jv z99?%T1E^e3rellcG=ZZs>CmyBq^6iod{@1@gFK&~eOxd|M<P?{E?sbcy0~?Zn#W>h zA)C>NP?qZHQTFBuaG6f!6*<I~ZFqP%Efi8WnV}4f`=V+CDthD#uJM|wg0QM_*=sr4 zaZAW^YmK3ciD&y0GCW!QX`w2WA;?@Shc4?G)(JhRGJ!VNxL#{_+rOw&O2m6hR^j;+ z<sz&WW}*CW17i=cWcN{zP4(Tc*e^mZsLM#nE~X-4K)Kd2LxCTYw_cORdhMSjU=8ps zv|1Pw_<dsZx-wgCJbkqA_OsKE>l9^dBrm^mO4e9*w}JOI!^Mj~vMV%sF4-<=R8jeO ztsAh+(X&8|;qY1i-5m2#O;E;TuRNCjS>m{)QpvKKcDe7<>tOlHGNAST_?KLrjI!?T zL29ySgoLoMpy^6lr4#vec5MbO*wA!m2P>%|>txBL2;+sQ<ir$T6;!FgL;W(IsG8^S z@e9R>SCq%IUqQ=V3ob1KO%WS6Oc^{FOv(88qE~CKUhy=>M&hndYH>GYCcETS=-}rq z2JyYyxNmkl$=ToFlNf3)mu6h~zu1}L<#AxVe{9UY@OwA@Vt>TTh_Vd&^OZQZ6gzxe zw|$^NWrrle+wJH@qyuG(n_^{JV{oQR(`|ye4Z`#2chAp|JU4}ow_I`b@Sjc@ACwKs zl3_@qT6a4}&tsZ(qGEw3O$N&?)hpI9+uNb#`dGP9eJKynAO5&H$&DfMio$kyeWnux zc6hr-OUjdak+u~nsEVPeuYcqeJ~toRHDI&g#r<L=7&%%#`6E#HhIc)sE_1%x*q6)I zH8;&|?}b`<^3SrdHfHVHF$l!S`^%;G@d_b<g=MH;oGe>(R^S0Y2Zx^11{Yxi{`pT( zMs-r;NN2*<)#F!#CMz=q38f7<M(&R;<Td*DAu_pKvx^D8kEbA#`>oMq!qc1dpvy~) zJ;zP=uF<jcKLV8kdnzrF+n)_FZaz8X$Ck`ZzE6kf>fPY970AoT>YuV45<U3nL$D$w zI5;YKIPPmz`+k`3L&*1`UydzB8sl8OQ(vl+Tpn5;9M~UhO!c8I*2_-js2#{CKSBG# z#s_%_3c6XPn!^$3s>?`unH4k0AIq5<4D9sORTf@B!i4CXl?qpyd<&)Yn?mvjPRWGr zj!H}$))aJ7>JJG8gm!mQhPUhLy=)@bB1@&SWe)VGnTjgU&vZBQ1^3p~cZ^X3@~790 z<eFY(L}8?4iHJh0(m7HGKXY7QaV}ep({Y9Vaou$uWx$A=2H$E=<Je1)U^>Tpx@pSl zJF?mlA3bgl!QSo#$<bC|h1rQd&OwqCx&MVzEO~s@ueE#;0vhm>dZ}YSsNzv&66R(9 zAf<)g72p5x6~Rfo&s4?`|1;F|NapxqReCM697ERwhce#n()*%>8iRU4<GkbZU;CxQ z;vrR<()<<u;_yp#%crUn-LBI=rO}F=`S0)lB5K-No{OKXFAG`|+BW+lg?3$^skZU( zP+#MP54)VxmxF7szUDCvR$rsh+O~Gj#j_pi+wy;D)Zou76n^dD^Xz%IEABE|&+RiK zYCcJ%NX!l?^^@9WDR;VJ@lB3(zl)qIK(B6ErNIlKMd7A90FAP2E}2#HqFwuNs*H3m z6}7aSm7M7~g$VGPiI24NxgP`3L_33qXqM=|<glX;y^KKU920{9$I2(#3gw|e7z$x7 zoxw9KAcZsDa#@v^e`dzUIxk$LrpM$!*5<}5k4u`<jTtXP_X%I{%aYS8=s>)<8%?y; zXZu~=t<3MF=Wjy<F5B}ne#_NqwR3R2SI?W7dLTofm2%u+|LN0N(m0+wTQe3XmEqnJ zQvOrCW{hR+1?fL+ve1E@{MMoDEFMCZ=REd|@Of_CyRkI;RbD9^IuI%7_-=QPH095$ zV9T*ep-Dq)9eovzusUOh{rOoKV46!vXV6LYo#_*zXZmBkFZg+9+Zb|rUgVyLM_rL> zK4_kFrln`O{S!np@WbtRg%87WB&F8ER};v^4yoZh=NJ{#qIzA{boO}k)U$TStNaev zXvsOi9!;a$XY6){<_9}6|0aFU8>mUZlq4uJ-YuW<wVb?`5&jbbik7N~0)4VPBUh!Y zw2a=@|Lh89`US41d+QVpgTfBa9PmOwuecR~={n^b?4~BmfUN2S(|KK(ea9|^6eYB9 zUwAq#Nss;4nf>#v;>^`?viM!{F}GZo+nQbVq<paNC8;=UYQ(F$Odt`7)wzakdTRB` zL7ZH;uBmRTT-Hw-P&9y84WZ1<#%eH+)9OFA1;5T%{)p@d?M<>{5u!~G|04Kh<QgG$ zJ-J~qX_hrS4_j;UA-$;EYKDu+i#+Rk==(=!7Tz@)SdftHo)wpT1siFeHP)5r(?^f$ z2`#2Z5mxg}BM9Rx#D`UX`8cuD9Gxu_*OdBv+l%^<btvLe<JbQT=g~&cQ9ik7o%EwA z`f8=(1mSe=uY)XiMFgrkCb~i&o*SH97I6yiX<3J6b%*8lZ1|-uGI(?DZeT}X3u@UC zh;I=_8<PJ!wEG$ry({SR=|Az6)Pby+N^*obXz}cK1E`n^Cy8mGpfa^eTbEZ?n+L65 zk3!0xngN5st+M&i{c6|%@&+&P*E>0wxwW;0zN3r{a5beB?FN2gBI3jf+qt7iED;MV zR{S?<2^|vPyXqHkK~ra(+q0D;*lQrmm?YlH{v#l;-m|y|<r8MIr&u6zdHQ>-yQ~R* zUbIXn1p?$n^uV#*!&NXdTK{j#)~Uo#klGPq+pWI%xJdZxQ}z80P0tGQqo=-CZ{O5l z8$A7kY}0cD_inQCY7hCJSx87jl(hjA$}UOF?}?VDMGy2hwH{bIofU!R_;D&nN|}^v zfBT?m9GeO|b%rVvCP?B}^B@;3-0V3bD9HwXt>b*XKWn``5-C{6@PC&M(Gd%8K5Vj@ z9N=4KEFF7iV+%EG)Nn8$X|m$2|6r=fWaChf-(Hi;s)JkCxH1(dIRA98y0n-MMes~d z(*6<HIiIvSbmK?uL05+)+1YgS@qTzXzKk`XvG-7yw<sf__=>QK1ueRspd~-8+XqD$ zIe~V>#o14>pROhcV-!18N1l1jHxWzmIzZ--qg8ocokj%JU*NxK+G5|gx(a`~azv0m z->!oug1dBF9AC_jg1GN9<LP9`6Cpy#VLP{K`0>w!)iooS!XcqjB~>4_44Zj7T2TuF zSwI<x{ZU6uO3{~oE22Jkxk=bL6pNa0_}Hmo9VmvZVtH=X^km!EL?Z<qx4LTUNXX)I zC(QH6z2}+q;#DXpea&b57)v{_js>4L(OaFg4y5soe{G#tSl#0#jg2+y3{*iw7jko= zGa~zsXK7t5rE=X$XQppr{eBPK>8Vx~w{*X_UOowA<b2ZDSeJj&rtHu4QgMP-tAqTB z3Xeb}lbp=d5E<o{DUF?|ckv=@j4Z0#j9t{VT0p2m=pIcU;F7N2;@8R&VkUEZcv`_O z2^?x)O3|TYbncG%5D%cq)RuWBHQ2>tmg)mTx)@6h(^+MLOw;+zzKYzuekj#aN`(z` zeFxcDam#`)+wIKK!anh&_i;KI&A*)wTddC?RI7GAGd5qLUH$M&*zCP!W{ROsrvTfz z@P==89d$5d2(xUx9)a?Fn}@DGlG}GMoZJbdi#Zv$qzzqHU^!n<*&E+qEEp47qZRYA zj|$~}!oTqE(m5WmyZI56@iG>_o`!eH_JBuA#Y~I(r=&XMY~hl!fzyjQx~!S!{az?} zWE@ZP`(@9gVbk^a2VA$)jq{!mkJWUI5b*LiqKkK$w{~I^0z@3I$2`4zc)qf6!e7dv zR!Q6}8bQ~!wsXdaeC$1Bb2Bo^LZVvm$Df$jseJJr>&%x-LEifz1N?vn<+a2Qb|wI% z6}bMPQ!{J@1uJxYfhm&nMV6XcytqaFsjrVHS+YXWu`?o)lAZ4E!0F<gl$bm>;M1*~ z3a!z?C`ifiY1*#pFOj3gyHp;!P##(cQhkSuit5j!gQ38sVZ0TuL^HJx5mvdqFbtRV zq<$@txNlolA{qYs(ovGTj48(SF?Z+?raBF*B1|j@SEBEJ|B1(Pnc$2w4Fh2Rq){LF zk!#uR#oI!aEJgsmAx@QEwwAMSyc3|6{ec2IqnirM!(f63Ze@9ernNh+s1dx;!jHSv z!&KJ)rv`_=XYmp9UUDkJxK)+)QP!(AU*q40V?U2;7zVmX7qnhu;Sp>RWm(<jr<F>w zm*HmB)%1@ppjW?`lri_I*(xH73z_3)Pfl#uCsAfq<t7*Lirz9q5QUftJ0HY}l9#c8 z!qbSrYY2M0kc>6%Sgp)@Mq}s{&&H2nAsn(*E|R1Gqk5@Ku7L&qG#d7Oqh7Hh40Yl> zWJI32oOy-k@@pN4X+U0a;F1?PescjmLna%$?UrhbiJ=@Z%7_t<#n|4>BV(zRwiM7$ zE=w2MQ{J;W4=4m0M7Ri&Fpu<oVl4v@vbfzdLCb&YyG@2RSk=6uT*%BI&Mf0<uuL=6 zLA+gU;EKJJl*_C9Z?*J$-|bVTCX|66{3}T=q>k4(EXgc3lMCT5vJ<Rt8B3fQ{*hwB z0%CGMT4CjhRq<xZOWC{s?)cue_rP((gcqn_x&JFE33z8hMx~nTb_WRE8s$HfN!{2l zhS(?sPP2X07>7Md(&yc6on72l?eYX~UKdR0LpH^{UruQ^zM+)DcZB2aGiiZBK~4!` zy31oO^Aj(mn@V7s@l?q|v<UfIA3rM;gv)5&1Uc~@lY$xrK9no}$EO`Te5ga$+Sxwy zKv~I}=uYA{>F`9n|1G2DuqpRBtf!Vd*5Mx{%S&Wj$O@5H@A-sP|0vVqjbXAdL4uEo z-5s}u2zojV3d<t;r`qb#wLg<3iG?-=yAU2rgyzu^hXU(yQpvEXF`z}X)<gPcNtvv| zP{etk37RVLwM6j6r4P8KqkA*EGs^%+$_<RkJ3ZMr_o{_>z5a^5Pk~)7q^myasDL<@ zlh?HG-q!h6=T-CVd$EUw=<LclGGLL&)}7&Hrgn*!k>5JJB8mO4)2jEaKRHfq2HMQX zqh7FeK_NXi&zE`bz%JKh5oWVXZ+S2BscL6sHuzK=q3y8$()6hFC9Fl?5Te_}*L$=v z7f45%57x~h_$ldVe~y07scB3l>Gw46DXIvWH(AH_6*Zh=wx5RV*~(+mPig0&jw}Wj zIN+B1a!&<1v#vj3A<94I&oiK1iOmrd%;&bfDCC>0<vYYksj^PC9K2m`I(W}{I;R(% zw^;Pt8gH!Le@3(4`c_{_r+3fer(}BAsdm1RT8VnNIR(8^q!2VqxoNriJ*v~=sB4nR zdKuemFCI~q)Mz+L>AW?Oz*_q-FXwiIiQ!wDtc)wgmWNTdhbrCpOlC__+UOlFsF9x0 zRmd^%il;}35{-}d_Aj<&vVBRdU=ypa6Sc;JvzcJx@q~q&;P7g8_oF2+aRwWZmgt9p zZUY9jc*HBRl^9yYzX#`7ptweq`l#z+{FT>Aoc1>lOt5~xJksM}A^k_NeJzoEPVlqg zPX#^Xh@Y6Vg~Lfi?bi-9R3ZwbJuK_`n$r0n$a2f`Lv9pvSs#KMucYaY1a^Ci)`~8M z@S9S*7JC-|xp+a>F9YTedX&bhWa2#$HJGo~H%_2n;xpI4T{IwnSv)?Lvw?=*$yqN1 zyxp51$YTKBx4z;FtWc~JW>^Q=kkd*WSvyv`!@<-O_3f$pejw}SNC0t*c(VAsou)n# zz^;da+2Y|&41|ker=K0bh47rK&8ui-F~rE5$v&HaiTxui%def4hN?c6Qj_Feh&F*( z?Vt|N-zSqUlNVKr(3Ut^SM&}<FC&Y)6ASKhv1h{f?6%`v;N_XNF6zx>&D*Ra9{Lvo zW9{sy`;rriFq5T9W=pZzvQoDyMG0KmwH4Qa)>@IJf*sRedD%nPq-IOLpF9-2d#^Em z3wZ(vUi0m$YG*q?6EP%G`q(@+X!}mHL+C>bXkyC336tD*qU6K+<*WIkmq9JJZH0ZH zaIB9#S3n)yo?ol<S=7r}7i_q@R(&(%kblv9XZ}^&Jj+~EUg57tdU{q=_jviYt1{O^ zhuyWw9)?epWQO#HqHy=i!6@p9iv&5|9na)$;y4>ZFi^l(njYKSjBL7~#<-k1uQ0S7 zeemovNdtnxWSb0FflGH9$N?cp83?}Vp``sS<#)Kaff>~~1?5Eo!XE@zJ*`Zo^8=na zQqi~#g2K9(>SEeQ{w!8~Ss8aBs|Y+Xv=Z`cw|Oz8{UFZ&JYypGjWI-~ryiGABL$Dy z)+Vv)%ZI7Jw9JE9c#H2tL3Q2O;QnE-gNX=Keq#Jf!U>qZF`}zzZ7ZiB_v2exAHnJ? z#W&9;&FhwbF)0<bSBHORoj@)5S<a1aiX##N0n>X*@7G2D4Ot^ovG)2XUm%_4EH~p- zxe5co_Ez0gO2vJqA_|oYTle7ux^z>TQq*&ik=oq5yu4zT{K26DX7(C#!Sdzgu4Da5 zNs5;3A2$03h=`4XVI>DfkE0dwLDNoJ;ZnaKB0hybZ9VlNNJuFC|D6$_8P@b|tv!Nw zsg3zvG3skcsJ8T4+aFu@u0-&>sUgM-bw+IVgfSYpfJ$<R3#$z+_XTZ$($ki^z*Jyk zDvHGIZfbMCYS<LLrn9>@N>9|_RQm4Tze@p61YfKQb@2pGnGqg8Kk)xfZCdcf5;0|I zaKF*D)pcOjWyi2oHC2RE2@%%<qyEJ*5r$R2?FG6h9d<%lS#&7(v{Be3eRO#N@C4(> z26cD$GUa(gUaPeeOYZ%BZwlo?3Sr5OM@}L}M%Xmy(h~{dr4Lu!%j~1$zKqJU$1q~S z0<X`HZzMp<?cEh?-Dhh=5*||W=~>l*`3|4bxqF>a0s$81w-!pMf~6WM3mIHGoBJas zecW)?=&qI!T+&i)M~NvwBAwI7=Z~bN!W;y@GzD$BrK@+W`1r;;u`%IF8Pz|FVsTy2 z{UFPM^Eb`g<~(nw>$ykG;4H5Ep_9{`M-d)7WQTa%z=yF?ao?I-wU#t>@bq|f!M5Q0 zWp*oTysLY66<KH@&iB+-Pb_~qeTdnYXagFAe5X?gi0$pb^Yxnq5KFuQ0bYnCy}Dc$ zdOnCPx;Gmy0Za@3xrtY<L>u!<+6lnLcfW<|AXrr9Gd<-4wl?pg%bvzk!WAQpsxK+h z{0HQv4{tw~>y6cNQ!Uxx#*)qopWfX|X}M(3(3M=t_tz^r?s>!M;0pFn<>&UjMh&a@ zK-6Auw4v4x1crdnLl--yJbz01F%pzn)Z_DrMx4jawhWRKnGQ~FCz7AAVBSulh=}zJ z#&m2#-Mxh%wZZY9a6xJ(EX?#=>uuo~7q2Nx1al)Z4`=f4rd;*sPBM32j{GY<c?v)H zEw|ko4W2%86?DWI{t8ye8heZ{wIm_A{Km7eWb%SAMiJn$VO~;(UQ)1zGL>;g0$#o< z{)y@d9e6K+p(a)E06$MH7f<cl$qfaS@knP_dZw&-g;2tS4dIk%XjAH27iM944K_HL z;NNd|0%WtowsO9@1ll<aVhv8NLxChN?xJS}{f$LshlPrj)Yqh<U5(G5wCv&U%Rb?} z`}sG!t|`3)xD3Gz_Fr-N(WTq(5Oc&D>J0`oV>Ho1^jIIAyIZ)!ln{I&2F7~&h6bO_ z_R}1ur+eE1?QBqRV4~`HUeC9SKj~!I=G_}%w=uuajJ1qz?H<>Kb&G)kIXXp&vW%T2 zU@TH20=<t{q~&t#S;)9qMw2ZEv%S@v6{1LLF6%&%)+WsdsFv*`p@_p6H%G7iAt_<% zWHGBF{LjK)DfWigO(KvOG1L{4K$#uw&XXK2rx_K_swHUlMMSS*ciDRwpKv$iH>xX> z5Zub{PXp83v6Zsmd7le2^Dqn~HO_jmo|)Oh)m3BtKo{&+L3w9QCN7R`W1E%hY^kol zdH&gNfGWl#B-A{;NRhtxmxa~6LX;>sdvI<vuy1hXqn9vRJ2X^yJx=vCgG3*{AM=q4 z*L}Qn;s{3m<nRH%T3ieU){U>ciR9SieS33EIyy0E(teS`uD64Y%7WziKF|O`>RM4; zu?7#nzjMc-$rOcy4Gq3obnp`*&qly4NQLV&gxwi{BQ|!jakCirhC{=&OguvB;0^HS z(dOm=I}vX$JR_$B9_BlhgFt*e_1eQA)iP2p1;y%nrT4&Hn?MD8m+^47UDuxR;M-xl zGTQ7Dz-lPc&>)E}!E{!!#{Ng8nW}%3pXc&q)#K(%MJMq~3?!^G8}~_~Ef+TkwPf1v z&Kc~LhmjA9X-SOj0cKIh%TEDOR?eofy4u4+=@<xJB&2VzfSbOP<ARZp7QVN>L|Q?4 zO@xHR|KG_Ve_!|^Beh}yZ;NCPIC1{}r~e0E;DH(r#=N6if0zXhra_XIRsoere)j(# DuCa25 diff --git a/tests/testdata/layout_atlas_table.qgs b/tests/testdata/layout_atlas_table.qgs new file mode 100644 index 0000000000..f4f4815642 --- /dev/null +++ b/tests/testdata/layout_atlas_table.qgs @@ -0,0 +1,539 @@ +<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'> +<qgis version="3.7.0-Master" projectname=""> + <homePath path=""/> + <title></title> + <autotransaction active="0"/> + <evaluateDefaultValues active="0"/> + <trust active="0"/> + <projectCrs> + <spatialrefsys> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </projectCrs> + <layer-tree-group> + <customproperties/> + <layer-tree-layer providerKey="ogr" expanded="1" id="points_ce766da2_f70f_4fc6_b852_4550b40ed354" checked="Qt::Checked" name="points" source="./points.shp"> + <customproperties/> + </layer-tree-layer> + <custom-order enabled="0"> + <item>points_ce766da2_f70f_4fc6_b852_4550b40ed354</item> + </custom-order> + </layer-tree-group> + <snapping-settings mode="2" enabled="0" type="1" unit="1" intersection-snapping="0" tolerance="12"> + <individual-layer-settings> + <layer-setting id="points_ce766da2_f70f_4fc6_b852_4550b40ed354" enabled="0" type="1" units="1" tolerance="12"/> + </individual-layer-settings> + </snapping-settings> + <relations/> + <mapcanvas name="theMapCanvas" annotationsVisible="1"> + <units>degrees</units> + <extent> + <xmin>-119.77777777777767199</xmin> + <ymin>22.19841269841290199</ymin> + <xmax>-82.44444444444427234</xmax> + <ymax>47.4737750172535371</ymax> + </extent> + <rotation>0</rotation> + <destinationsrs> + <spatialrefsys> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </destinationsrs> + <rendermaptile>0</rendermaptile> + <expressionContextScope/> + </mapcanvas> + <projectModels/> + <legend updateDrawingOrder="true"> + <legendlayer open="true" showFeatureCount="0" drawingOrder="-1" checked="Qt::Checked" name="points"> + <filegroup open="true" hidden="false"> + <legendlayerfile visible="1" isInOverview="0" layerid="points_ce766da2_f70f_4fc6_b852_4550b40ed354"/> + </filegroup> + </legendlayer> + </legend> + <mapViewDocks/> + <mapViewDocks3D/> + <projectlayers> + <maplayer simplifyDrawingHints="0" wkbType="Point" simplifyLocal="1" hasScaleBasedVisibilityFlag="0" type="vector" minScale="1e+08" refreshOnNotifyMessage="" styleCategories="AllStyleCategories" refreshOnNotifyEnabled="0" autoRefreshEnabled="0" simplifyAlgorithm="0" autoRefreshTime="0" simplifyMaxScale="1" simplifyDrawingTol="1" maxScale="1" readOnly="0" labelsEnabled="1" geometry="Point"> + <extent> + <xmin>-118.88888888888877204</xmin> + <ymin>22.80020703933767834</ymin> + <xmax>-83.33333333333315807</xmax> + <ymax>46.87198067632875365</ymax> + </extent> + <id>points_ce766da2_f70f_4fc6_b852_4550b40ed354</id> + <datasource>./points.shp</datasource> + <keywordList> + <value></value> + </keywordList> + <layername>points</layername> + <srs> + <spatialrefsys> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type>dataset</type> + <title></title> + <abstract></abstract> + <links/> + <fees></fees> + <encoding></encoding> + <crs> + <spatialrefsys> + <proj4></proj4> + <srsid>0</srsid> + <srid>0</srid> + <authid></authid> + <description></description> + <projectionacronym></projectionacronym> + <ellipsoidacronym></ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </crs> + <extent/> + </resourceMetadata> + <provider encoding="UTF-8">ogr</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <legend type="default-vector"/> + <expressionfields/> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + </flags> + <renderer-v2 forceraster="0" attr="Class" enableorderby="0" symbollevels="0" type="categorizedSymbol"> + <categories> + <category label="B52" value="B52" symbol="0" render="true"/> + <category label="Biplane" value="Biplane" symbol="1" render="true"/> + <category label="Jet" value="Jet" symbol="2" render="true"/> + </categories> + <symbols> + <symbol clip_to_extent="1" type="marker" force_rhr="0" name="0" alpha="1"> + <layer enabled="1" pass="0" class="SvgMarker" locked="0"> + <prop v="0" k="angle"/> + <prop v="0,0,0,255" k="color"/> + <prop v="0" k="fixedAspectRatio"/> + <prop v="1" k="horizontal_anchor_point"/> + <prop v="gpsicons/plane.svg" k="name"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="0,0,0,255" k="outline_color"/> + <prop v="0.2" k="outline_width"/> + <prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="diameter" k="scale_method"/> + <prop v="11" k="size"/> + <prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/> + <prop v="MM" k="size_unit"/> + <prop v="1" k="vertical_anchor_point"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" type="QString" name="name"/> + <Option name="properties"/> + <Option value="collection" type="QString" name="type"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + <symbol clip_to_extent="1" type="marker" force_rhr="0" name="1" alpha="1"> + <layer enabled="1" pass="0" class="SvgMarker" locked="0"> + <prop v="0" k="angle"/> + <prop v="0,0,0,255" k="color"/> + <prop v="0" k="fixedAspectRatio"/> + <prop v="1" k="horizontal_anchor_point"/> + <prop v="gpsicons/plane_orange.svg" k="name"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="0,0,0,255" k="outline_color"/> + <prop v="0.2" k="outline_width"/> + <prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="diameter" k="scale_method"/> + <prop v="18" k="size"/> + <prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/> + <prop v="MM" k="size_unit"/> + <prop v="1" k="vertical_anchor_point"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" type="QString" name="name"/> + <Option name="properties"/> + <Option value="collection" type="QString" name="type"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + <symbol clip_to_extent="1" type="marker" force_rhr="0" name="2" alpha="1"> + <layer enabled="1" pass="0" class="SvgMarker" locked="0"> + <prop v="0" k="angle"/> + <prop v="0,0,0,255" k="color"/> + <prop v="0" k="fixedAspectRatio"/> + <prop v="1" k="horizontal_anchor_point"/> + <prop v="gpsicons/plane.svg" k="name"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="0,0,0,255" k="outline_color"/> + <prop v="0.2" k="outline_width"/> + <prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="diameter" k="scale_method"/> + <prop v="11" k="size"/> + <prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/> + <prop v="MM" k="size_unit"/> + <prop v="1" k="vertical_anchor_point"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" type="QString" name="name"/> + <Option name="properties"/> + <Option value="collection" type="QString" name="type"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <rotation/> + <sizescale/> + </renderer-v2> + <customproperties> + <property key="embeddedWidgets/count" value="0"/> + <property key="variableNames"/> + <property key="variableValues"/> + </customproperties> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <SingleCategoryDiagramRenderer diagramType="Histogram" attributeLegend="1"> + <DiagramCategory scaleBasedVisibility="0" opacity="1" penColor="#000000" width="15" height="15" backgroundColor="#ffffff" minScaleDenominator="1" penAlpha="255" enabled="0" maxScaleDenominator="1e+08" minimumSize="0" sizeScale="3x:0,0,0,0,0,0" diagramOrientation="Up" backgroundAlpha="255" penWidth="0" barWidth="5" lineSizeType="MM" sizeType="MM" labelPlacementMethod="XHeight" lineSizeScale="3x:0,0,0,0,0,0" scaleDependency="Area" rotationOffset="270"> + <fontProperties description="Noto Sans,10,-1,5,50,0,0,0,0,0" style=""/> + <attribute color="#000000" label="" field=""/> + </DiagramCategory> + </SingleCategoryDiagramRenderer> + <DiagramLayerSettings linePlacementFlags="10" dist="0" priority="0" placement="0" zIndex="0" obstacle="0" showAll="1"> + <properties> + <Option type="Map"> + <Option value="" type="QString" name="name"/> + <Option name="properties"/> + <Option value="collection" type="QString" name="type"/> + </Option> + </properties> + </DiagramLayerSettings> + <geometryOptions geometryPrecision="0" removeDuplicateNodes="0"> + <activeChecks/> + <checkConfiguration/> + </geometryOptions> + <fieldConfiguration> + <field name="Class"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="Heading"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="Importance"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="Pilots"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="Cabin Crew"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="Staff"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias index="0" field="Class" name=""/> + <alias index="1" field="Heading" name=""/> + <alias index="2" field="Importance" name=""/> + <alias index="3" field="Pilots" name=""/> + <alias index="4" field="Cabin Crew" name=""/> + <alias index="5" field="Staff" name=""/> + </aliases> + <excludeAttributesWMS/> + <excludeAttributesWFS/> + <defaults> + <default applyOnUpdate="0" field="Class" expression=""/> + <default applyOnUpdate="0" field="Heading" expression=""/> + <default applyOnUpdate="0" field="Importance" expression=""/> + <default applyOnUpdate="0" field="Pilots" expression=""/> + <default applyOnUpdate="0" field="Cabin Crew" expression=""/> + <default applyOnUpdate="0" field="Staff" expression=""/> + </defaults> + <constraints> + <constraint exp_strength="0" field="Class" constraints="0" notnull_strength="0" unique_strength="0"/> + <constraint exp_strength="0" field="Heading" constraints="0" notnull_strength="0" unique_strength="0"/> + <constraint exp_strength="0" field="Importance" constraints="0" notnull_strength="0" unique_strength="0"/> + <constraint exp_strength="0" field="Pilots" constraints="0" notnull_strength="0" unique_strength="0"/> + <constraint exp_strength="0" field="Cabin Crew" constraints="0" notnull_strength="0" unique_strength="0"/> + <constraint exp_strength="0" field="Staff" constraints="0" notnull_strength="0" unique_strength="0"/> + </constraints> + <constraintExpressions> + <constraint exp="" field="Class" desc=""/> + <constraint exp="" field="Heading" desc=""/> + <constraint exp="" field="Importance" desc=""/> + <constraint exp="" field="Pilots" desc=""/> + <constraint exp="" field="Cabin Crew" desc=""/> + <constraint exp="" field="Staff" desc=""/> + </constraintExpressions> + <expressionfields/> + <attributeactions> + <defaultAction key="Canvas" value="{00000000-0000-0000-0000-000000000000}"/> + </attributeactions> + <attributetableconfig sortExpression="" actionWidgetStyle="dropDown" sortOrder="0"> + <columns> + <column hidden="0" type="field" name="Class" width="-1"/> + <column hidden="0" type="field" name="Heading" width="-1"/> + <column hidden="0" type="field" name="Importance" width="-1"/> + <column hidden="0" type="field" name="Pilots" width="-1"/> + <column hidden="0" type="field" name="Cabin Crew" width="-1"/> + <column hidden="0" type="field" name="Staff" width="-1"/> + <column hidden="1" type="actions" width="-1"/> + </columns> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <editform tolerant="1"></editform> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath></editforminitfilepath> + <editforminitcode><![CDATA[# -*- coding: utf-8 -*- +""" +QGIS forms can have a Python function that is called when the form is +opened. + +Use this function to add extra logic to your forms. + +Enter the name of the function in the "Python Init function" +field. +An example follows: +""" +from qgis.PyQt.QtWidgets import QWidget + +def my_form_open(dialog, layer, feature): + geom = feature.geometry() + control = dialog.findChild(QWidget, "MyLineEdit") +]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable/> + <labelOnTop/> + <widgets/> + <previewExpression>"Class"</previewExpression> + <mapTip></mapTip> + </maplayer> + </projectlayers> + <layerorder> + <layer id="points_ce766da2_f70f_4fc6_b852_4550b40ed354"/> + </layerorder> + <properties> + <Gui> + <CanvasColorBluePart type="int">255</CanvasColorBluePart> + <CanvasColorGreenPart type="int">255</CanvasColorGreenPart> + <CanvasColorRedPart type="int">255</CanvasColorRedPart> + <SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart> + <SelectionColorBluePart type="int">0</SelectionColorBluePart> + <SelectionColorGreenPart type="int">255</SelectionColorGreenPart> + <SelectionColorRedPart type="int">255</SelectionColorRedPart> + </Gui> + <Legend> + <filterByMap type="bool">false</filterByMap> + </Legend> + <Measure> + <Ellipsoid type="QString">WGS84</Ellipsoid> + </Measure> + <Measurement> + <AreaUnits type="QString">m2</AreaUnits> + <DistanceUnits type="QString">meters</DistanceUnits> + </Measurement> + <PAL> + <CandidatesLine type="int">50</CandidatesLine> + <CandidatesPoint type="int">16</CandidatesPoint> + <CandidatesPolygon type="int">30</CandidatesPolygon> + <DrawRectOnly type="bool">false</DrawRectOnly> + <SearchMethod type="int">0</SearchMethod> + <ShowingAllLabels type="bool">false</ShowingAllLabels> + <ShowingCandidates type="bool">false</ShowingCandidates> + <ShowingPartialsLabels type="bool">true</ShowingPartialsLabels> + <TextFormat type="int">0</TextFormat> + </PAL> + <Paths> + <Absolute type="bool">false</Absolute> + </Paths> + <PositionPrecision> + <Automatic type="bool">true</Automatic> + <DecimalPlaces type="int">2</DecimalPlaces> + </PositionPrecision> + <SpatialRefSys> + <ProjectionsEnabled type="int">1</ProjectionsEnabled> + </SpatialRefSys> + </properties> + <visibility-presets/> + <transformContext/> + <projectMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title></title> + <abstract></abstract> + <links/> + <author>Nyall</author> + <creation>2019-05-22T07:55:49</creation> + </projectMetadata> + <Annotations/> + <Layouts> + <Layout worldFileMap="" printResolution="300" units="mm" name="Layout 1"> + <Snapper snapToGuides="1" snapToItems="1" snapToGrid="0" tolerance="5"/> + <Grid offsetX="0" offsetUnits="mm" resolution="10" offsetY="0" resUnits="mm"/> + <PageCollection> + <symbol clip_to_extent="1" type="fill" force_rhr="0" name="" alpha="1"> + <layer enabled="1" pass="0" class="SimpleFill" locked="0"> + <prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/> + <prop v="255,255,255,255" k="color"/> + <prop v="miter" k="joinstyle"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="35,35,35,255" k="outline_color"/> + <prop v="no" k="outline_style"/> + <prop v="0.26" k="outline_width"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="solid" k="style"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" type="QString" name="name"/> + <Option name="properties"/> + <Option value="collection" type="QString" name="type"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + <LayoutItem positionOnPage="0,0,mm" opacity="1" frameJoinStyle="miter" visibility="1" positionLock="false" position="0,0,mm" type="65638" referencePoint="0" uuid="{f100fece-ec6a-4cf2-ba16-7d961ba0e0fd}" size="297,210,mm" excludeFromExports="0" outlineWidthM="0.3,mm" zValue="0" templateUuid="{f100fece-ec6a-4cf2-ba16-7d961ba0e0fd}" background="true" frame="false" id="" groupUuid="" itemRotation="0" blendMode="0"> + <FrameColor green="0" red="0" blue="0" alpha="255"/> + <BackgroundColor green="255" red="255" blue="255" alpha="255"/> + <LayoutObject> + <dataDefinedProperties> + <Option type="Map"> + <Option value="" type="QString" name="name"/> + <Option name="properties"/> + <Option value="collection" type="QString" name="type"/> + </Option> + </dataDefinedProperties> + <customproperties/> + </LayoutObject> + </LayoutItem> + <GuideCollection visible="1"/> + </PageCollection> + <LayoutItem positionOnPage="63.455,26.5388,mm" opacity="1" sectionY="0" frameJoinStyle="miter" hidePageIfEmpty="0" visibility="1" hideBackgroundIfEmpty="0" positionLock="false" position="63.455,26.5388,mm" multiFrameTemplateUuid="{25741952-c242-4d17-942e-21f550d35b81}" type="65647" referencePoint="0" uuid="{c213c327-3a06-4ec3-82c3-de8a8ed4ebdd}" sectionHeight="113.811" size="28.4375,113.811,mm" excludeFromExports="0" outlineWidthM="0.3,mm" zValue="1" templateUuid="{c213c327-3a06-4ec3-82c3-de8a8ed4ebdd}" background="false" sectionX="0" frame="false" id="" multiFrame="{25741952-c242-4d17-942e-21f550d35b81}" groupUuid="" sectionWidth="28.4375" itemRotation="0" blendMode="0"> + <FrameColor green="0" red="0" blue="0" alpha="255"/> + <BackgroundColor green="255" red="255" blue="255" alpha="255"/> + <LayoutObject> + <dataDefinedProperties> + <Option type="Map"> + <Option value="" type="QString" name="name"/> + <Option name="properties"/> + <Option value="collection" type="QString" name="type"/> + </Option> + </dataDefinedProperties> + <customproperties/> + </LayoutObject> + </LayoutItem> + <LayoutMultiFrame vectorLayerSource="/home/nyall/dev/QGIS/tests/testdata/points.shp" wrapBehavior="0" vectorLayerName="points" showUniqueRowsOnly="0" resizeMode="0" backgroundColor="255,255,255,255" type="65649" showGrid="1" uuid="{25741952-c242-4d17-942e-21f550d35b81}" headerMode="0" cellMargin="1" filterFeatures="false" gridColor="0,0,0,255" horizontalGrid="1" headerHAlignment="0" emptyTableMessage="" relationId="" vectorLayer="points_ce766da2_f70f_4fc6_b852_4550b40ed354" emptyTableMode="0" gridStrokeWidth="0.5" templateUuid="{25741952-c242-4d17-942e-21f550d35b81}" showOnlyVisibleFeatures="0" maxFeatures="30" featureFilter="" vectorLayerProvider="ogr" wrapString="" contentFontColor="0,0,0,255" verticalGrid="1" headerFontColor="0,0,0,255" showEmptyRows="0" filterToAtlasIntersection="0" source="1"> + <childFrame templateUuid="{c213c327-3a06-4ec3-82c3-de8a8ed4ebdd}" uuid="{c213c327-3a06-4ec3-82c3-de8a8ed4ebdd}"/> + <LayoutObject> + <dataDefinedProperties> + <Option type="Map"> + <Option value="" type="QString" name="name"/> + <Option name="properties"/> + <Option value="collection" type="QString" name="type"/> + </Option> + </dataDefinedProperties> + <customproperties/> + </LayoutObject> + <headerFontProperties description="Cantarell,11,-1,5,50,0,0,0,0,0" style=""/> + <contentFontProperties description="Cantarell,11,-1,5,50,0,0,0,0,0" style=""/> + <displayColumns> + <column vAlignment="128" heading="Heading" hAlignment="1" sortByRank="0" attribute="Heading" sortOrder="0" width="0"> + <backgroundColor green="0" red="0" blue="0" alpha="0"/> + </column> + <column vAlignment="128" heading="Staff" hAlignment="1" sortByRank="0" attribute="Staff" sortOrder="0" width="0"> + <backgroundColor green="0" red="0" blue="0" alpha="0"/> + </column> + </displayColumns> + <cellStyles> + <oddColumns cellBackgroundColor="255,255,255,255" enabled="0"/> + <evenColumns cellBackgroundColor="255,255,255,255" enabled="0"/> + <oddRows cellBackgroundColor="255,255,255,255" enabled="0"/> + <evenRows cellBackgroundColor="255,255,255,255" enabled="0"/> + <firstColumn cellBackgroundColor="255,255,255,255" enabled="0"/> + <lastColumn cellBackgroundColor="255,255,255,255" enabled="0"/> + <headerRow cellBackgroundColor="255,255,255,255" enabled="0"/> + <firstRow cellBackgroundColor="255,255,255,255" enabled="0"/> + <lastRow cellBackgroundColor="255,255,255,255" enabled="0"/> + </cellStyles> + </LayoutMultiFrame> + <customproperties> + <property key="atlasRasterFormat" value="png"/> + </customproperties> + <Atlas coverageLayerProvider="ogr" coverageLayerName="points" pageNameExpression="" sortFeatures="0" hideCoverage="0" enabled="1" filenamePattern="'output_'||@atlas_featurenumber" coverageLayer="points_ce766da2_f70f_4fc6_b852_4550b40ed354" coverageLayerSource="/home/nyall/dev/QGIS/tests/testdata/points.shp" filterFeatures="0"/> + </Layout> + </Layouts> +</qgis> diff --git a/tests/testdata/multipatch.shp b/tests/testdata/multipatch.shp new file mode 100644 index 0000000000000000000000000000000000000000..f344278afab80d8e18f76b16557e4092f86f1865 GIT binary patch literal 376 zcmZQzQ0HR64)(lYW?+!Vko&M7BJ{x?mBvtrEWillv=L(#6Hp-sR3{6N25AIg`~cl8 U=zRRT85l79gyu&=`bn1u0Iii3KmY&$ literal 0 HcmV?d00001 diff --git a/tests/testdata/multipatch.shx b/tests/testdata/multipatch.shx new file mode 100644 index 0000000000000000000000000000000000000000..1b9f3104533933a60a66b65e46e33bf347f547a2 GIT binary patch literal 108 lcmZQzQ0HR64$NLKGcd?w$bHxk5&B?{N@FNQ7BB*G+5ksC1~&iz literal 0 HcmV?d00001 diff --git a/tests/testdata/points_gpkg.gpkg b/tests/testdata/points_gpkg.gpkg index 102ad5ab9030b799aaa0810729902d9c7c76c6ab..6202a7913d58287fe52165fb44203d71bb9785a5 100644 GIT binary patch delta 29 lcmZoTz|nAkV}dlJ(L@<%RwD-8k2@MuT2mOerZCNs2LPB03K0MR delta 29 lcmZoTz|nAkV}dlJ!9*EnRs#k-nGKC8ttpIKQ<&z+0|1SF2{8Zw diff --git a/tests/testdata/qgis_local_server/fcgi/scripts/spawn_fcgi_mac.sh b/tests/testdata/qgis_local_server/fcgi/scripts/spawn_fcgi_mac.sh index 0d1fcce358..abd3ccf656 100755 --- a/tests/testdata/qgis_local_server/fcgi/scripts/spawn_fcgi_mac.sh +++ b/tests/testdata/qgis_local_server/fcgi/scripts/spawn_fcgi_mac.sh @@ -19,15 +19,15 @@ PROCESS="mapserv" LABEL="org.qgis.test-${PROCESS}" USAGE="${0} {stop|status} or {start|restart spawn_bin fcgi_socket fcgi_bin qgis_server_temp_dir}" -if [ ! -z $2 ]; then +if [[ -n $2 ]]; then SPAWN_BIN=$2 - if [ ! -z $3 ]; then + if [[ -n $3 ]]; then FCGI_SOCKET=$3 fi - if [ ! -z $4 ]; then + if [[ -n $4 ]]; then FCGI_BIN=$4 fi - if [ ! -z $5 ]; then + if [[ -n $5 ]]; then QGIS_SERVER_TEMP_DIR=$5 fi fi diff --git a/tests/testdata/qgis_local_server/lighttpd/scripts/lighttpd_debian.sh b/tests/testdata/qgis_local_server/lighttpd/scripts/lighttpd_debian.sh index 613ef6bc04..63839674c3 100755 --- a/tests/testdata/qgis_local_server/lighttpd/scripts/lighttpd_debian.sh +++ b/tests/testdata/qgis_local_server/lighttpd/scripts/lighttpd_debian.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/env bash ########################################################################### # lighttpd_debian.sh # --------------------- @@ -26,7 +26,7 @@ SCRIPTNAME=$NAME export QGIS_SERVER_TEMP_DIR=$3 -if [ ! -z $4 ]; then +if [[ -n $4 ]]; then DAEMON_OPTS="-f ${4}" fi diff --git a/tests/testdata/qgis_local_server/lighttpd/scripts/lighttpd_mac.sh b/tests/testdata/qgis_local_server/lighttpd/scripts/lighttpd_mac.sh index a047e76ec4..27cd568912 100755 --- a/tests/testdata/qgis_local_server/lighttpd/scripts/lighttpd_mac.sh +++ b/tests/testdata/qgis_local_server/lighttpd/scripts/lighttpd_mac.sh @@ -19,12 +19,12 @@ PROCESS="lighttpd" LABEL="org.qgis.test-${PROCESS}" USAGE="${0} {stop|status} or {start|restart lighttpd-path lighttpd_conf qgis_server_temp_dir}" -if [ ! -z $2 ]; then +if [[ -n $2 ]]; then LIGHTTPD_BIN=$2 - if [ ! -z $3 ]; then + if [[ -n $3 ]]; then LIGHTTPD_CONF_PATH=$3 fi - if [ ! -z $4 ]; then + if [[ -n $4 ]]; then QGIS_SERVER_TEMP_DIR=$4 fi fi diff --git a/tests/testdata/qgis_server/bug_gh29767_double_vfield.qgs b/tests/testdata/qgis_server/bug_gh29767_double_vfield.qgs new file mode 100644 index 0000000000..0a99a26440 --- /dev/null +++ b/tests/testdata/qgis_server/bug_gh29767_double_vfield.qgs @@ -0,0 +1,711 @@ +<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'> +<qgis version="3.7.0-Master" projectname="QGIS Test Project"> + <homePath path=""/> + <title>QGIS Test Project</title> + <autotransaction active="0"/> + <evaluateDefaultValues active="0"/> + <trust active="0"/> + <projectCrs> + <spatialrefsys> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </projectCrs> + <layer-tree-group> + <customproperties/> + <layer-tree-layer source="./testlayer.shp" checked="Qt::Checked" id="testlayer_c0988fd7_97ca_451d_adbc_37ad6d10583a" expanded="1" providerKey="ogr" name="testlayer"> + <customproperties/> + </layer-tree-layer> + <custom-order enabled="0"> + <item>testlayer_c0988fd7_97ca_451d_adbc_37ad6d10583a</item> + </custom-order> + </layer-tree-group> + <snapping-settings intersection-snapping="0" enabled="0" unit="2" mode="1" tolerance="0" type="2"> + <individual-layer-settings> + <layer-setting id="testlayer_c0988fd7_97ca_451d_adbc_37ad6d10583a" enabled="1" units="1" tolerance="12" type="1"/> + </individual-layer-settings> + </snapping-settings> + <relations/> + <mapcanvas annotationsVisible="1" name="theMapCanvas"> + <units>degrees</units> + <extent> + <xmin>17.92123882869385909</xmin> + <ymin>30.1492204088525888</ymin> + <xmax>18.0486921925404431</xmax> + <ymax>30.25992437587047235</ymax> + </extent> + <rotation>0</rotation> + <destinationsrs> + <spatialrefsys> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </destinationsrs> + <rendermaptile>0</rendermaptile> + <expressionContextScope/> + </mapcanvas> + <legend updateDrawingOrder="true"> + <legendlayer checked="Qt::Checked" open="true" showFeatureCount="0" drawingOrder="-1" name="testlayer"> + <filegroup hidden="false" open="true"> + <legendlayerfile layerid="testlayer_c0988fd7_97ca_451d_adbc_37ad6d10583a" visible="1" isInOverview="0"/> + </filegroup> + </legendlayer> + </legend> + <mapViewDocks/> + <projectlayers> + <maplayer simplifyAlgorithm="0" maxScale="0" refreshOnNotifyMessage="" autoRefreshTime="0" autoRefreshEnabled="0" hasScaleBasedVisibilityFlag="0" labelsEnabled="0" geometry="Point" minScale="1e+08" styleCategories="AllStyleCategories" refreshOnNotifyEnabled="0" simplifyLocal="1" simplifyMaxScale="1" type="vector" wkbType="Point" simplifyDrawingTol="1" simplifyDrawingHints="0" readOnly="0"> + <extent> + <xmin>8.20345930703634352</xmin> + <ymin>44.90139483904469131</ymin> + <xmax>8.20354699399348775</xmax> + <ymax>44.90148252600183554</ymax> + </extent> + <id>testlayer_c0988fd7_97ca_451d_adbc_37ad6d10583a</id> + <datasource>./testlayer.shp</datasource> + <shortname>layer_with_short_name</shortname> + <title>A Layer with a short name</title> + <abstract>A Layer with an abstract</abstract> + <keywordList> + <value></value> + </keywordList> + <layername>testlayer</layername> + <srs> + <spatialrefsys> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title></title> + <abstract></abstract> + <contact> + <name></name> + <organization></organization> + <position></position> + <voice></voice> + <fax></fax> + <email></email> + <role></role> + </contact> + <links/> + <fees></fees> + <encoding></encoding> + <crs> + <spatialrefsys> + <proj4></proj4> + <srsid>0</srsid> + <srid>0</srid> + <authid></authid> + <description></description> + <projectionacronym></projectionacronym> + <ellipsoidacronym></ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </crs> + <extent> + <spatial miny="0" dimensions="2" minx="0" minz="0" maxx="0" maxy="0" crs="" maxz="0"/> + <temporal> + <period> + <start></start> + <end></end> + </period> + </temporal> + </extent> + </resourceMetadata> + <provider encoding="UTF-8">ogr</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <legend type="default-vector"/> + <expressionfields> + <field expression=" "id" * 3.14" subType="0" length="-1" precision="0" comment="" typeName="double precision" name="virtdbl" type="6"/> + <field expression=" "id" * 2" subType="0" length="10" precision="0" comment="" typeName="integer" name="virtint" type="2"/> + </expressionfields> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + </flags> + <renderer-v2 forceraster="0" enableorderby="0" symbollevels="0" type="singleSymbol"> + <symbols> + <symbol clip_to_extent="1" alpha="1" name="0" force_rhr="0" type="marker"> + <layer locked="0" pass="0" class="SimpleMarker" enabled="1"> + <prop k="angle" v="0"/> + <prop k="color" v="152,125,183,255"/> + <prop k="horizontal_anchor_point" v="1"/> + <prop k="joinstyle" v="bevel"/> + <prop k="name" v="circle"/> + <prop k="offset" v="0,0"/> + <prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="offset_unit" v="MM"/> + <prop k="outline_color" v="35,35,35,255"/> + <prop k="outline_style" v="solid"/> + <prop k="outline_width" v="0"/> + <prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="outline_width_unit" v="MM"/> + <prop k="scale_method" v="diameter"/> + <prop k="size" v="2"/> + <prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="size_unit" v="MM"/> + <prop k="vertical_anchor_point" v="1"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <rotation/> + <sizescale/> + </renderer-v2> + <customproperties> + <property key="embeddedWidgets/count" value="0"/> + <property key="variableNames"/> + <property key="variableValues"/> + </customproperties> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <SingleCategoryDiagramRenderer diagramType="Histogram" attributeLegend="1"> + <DiagramCategory width="15" enabled="0" sizeType="MM" barWidth="5" penAlpha="255" opacity="1" lineSizeType="MM" penColor="#000000" backgroundAlpha="255" lineSizeScale="3x:0,0,0,0,0,0" labelPlacementMethod="XHeight" scaleDependency="Area" height="15" backgroundColor="#ffffff" sizeScale="3x:0,0,0,0,0,0" rotationOffset="270" diagramOrientation="Up" minimumSize="0" scaleBasedVisibility="0" maxScaleDenominator="1e+08" penWidth="0" minScaleDenominator="0"> + <fontProperties description="Cantarell,11,-1,5,50,0,0,0,0,0" style=""/> + <attribute field="" label="" color="#000000"/> + </DiagramCategory> + </SingleCategoryDiagramRenderer> + <DiagramLayerSettings placement="0" priority="0" zIndex="0" obstacle="0" dist="0" linePlacementFlags="18" showAll="1"> + <properties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </properties> + </DiagramLayerSettings> + <geometryOptions geometryPrecision="0" removeDuplicateNodes="0"> + <activeChecks/> + <checkConfiguration/> + </geometryOptions> + <fieldConfiguration> + <field name="id"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="name"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="utf8nameè"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="virtdbl"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="virtint"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias field="id" index="0" name=""/> + <alias field="name" index="1" name=""/> + <alias field="utf8nameè" index="2" name=""/> + <alias field="virtdbl" index="3" name=""/> + <alias field="virtint" index="4" name=""/> + </aliases> + <excludeAttributesWMS/> + <excludeAttributesWFS/> + <defaults> + <default expression="" field="id" applyOnUpdate="0"/> + <default expression="" field="name" applyOnUpdate="0"/> + <default expression="" field="utf8nameè" applyOnUpdate="0"/> + <default expression="" field="virtdbl" applyOnUpdate="0"/> + <default expression="" field="virtint" applyOnUpdate="0"/> + </defaults> + <constraints> + <constraint notnull_strength="0" field="id" unique_strength="0" exp_strength="0" constraints="0"/> + <constraint notnull_strength="0" field="name" unique_strength="0" exp_strength="0" constraints="0"/> + <constraint notnull_strength="0" field="utf8nameè" unique_strength="0" exp_strength="0" constraints="0"/> + <constraint notnull_strength="0" field="virtdbl" unique_strength="0" exp_strength="0" constraints="0"/> + <constraint notnull_strength="0" field="virtint" unique_strength="0" exp_strength="0" constraints="0"/> + </constraints> + <constraintExpressions> + <constraint desc="" field="id" exp=""/> + <constraint desc="" field="name" exp=""/> + <constraint desc="" field="utf8nameè" exp=""/> + <constraint desc="" field="virtdbl" exp=""/> + <constraint desc="" field="virtint" exp=""/> + </constraintExpressions> + <expressionfields> + <field expression=" "id" * 3.14" subType="0" length="-1" precision="0" comment="" typeName="double precision" name="virtdbl" type="6"/> + <field expression=" "id" * 2" subType="0" length="10" precision="0" comment="" typeName="integer" name="virtint" type="2"/> + </expressionfields> + <attributeactions> + <defaultAction key="Canvas" value="{00000000-0000-0000-0000-000000000000}"/> + </attributeactions> + <attributetableconfig sortOrder="0" actionWidgetStyle="dropDown" sortExpression=""> + <columns> + <column hidden="0" width="-1" name="id" type="field"/> + <column hidden="0" width="-1" name="name" type="field"/> + <column hidden="0" width="-1" name="utf8nameè" type="field"/> + <column hidden="1" width="-1" type="actions"/> + </columns> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <editform tolerant="1">.</editform> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath></editforminitfilepath> + <editforminitcode><![CDATA[]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable> + <field editable="1" name="id"/> + <field editable="1" name="name"/> + <field editable="1" name="utf8nameè"/> + </editable> + <labelOnTop> + <field name="id" labelOnTop="0"/> + <field name="name" labelOnTop="0"/> + <field name="utf8nameè" labelOnTop="0"/> + </labelOnTop> + <widgets/> + <previewExpression>id</previewExpression> + <mapTip></mapTip> + </maplayer> + </projectlayers> + <layerorder> + <layer id="testlayer_c0988fd7_97ca_451d_adbc_37ad6d10583a"/> + </layerorder> + <properties> + <DefaultStyles> + <AlphaInt type="int">255</AlphaInt> + <ColorRamp type="QString"></ColorRamp> + <Fill type="QString"></Fill> + <Line type="QString"></Line> + <Marker type="QString"></Marker> + <Opacity type="double">1</Opacity> + <RandomColors type="bool">true</RandomColors> + </DefaultStyles> + <Digitizing> + <AvoidIntersectionsList type="QStringList"/> + <DefaultSnapTolerance type="double">0</DefaultSnapTolerance> + <DefaultSnapToleranceUnit type="int">2</DefaultSnapToleranceUnit> + <DefaultSnapType type="QString">off</DefaultSnapType> + <LayerSnapToList type="QStringList"/> + <LayerSnappingEnabledList type="QStringList"/> + <LayerSnappingList type="QStringList"/> + <LayerSnappingToleranceList type="QStringList"/> + <LayerSnappingToleranceUnitList type="QStringList"/> + <SnappingMode type="QString">current_layer</SnappingMode> + </Digitizing> + <Gui> + <CanvasColorBluePart type="int">255</CanvasColorBluePart> + <CanvasColorGreenPart type="int">255</CanvasColorGreenPart> + <CanvasColorRedPart type="int">255</CanvasColorRedPart> + <SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart> + <SelectionColorBluePart type="int">0</SelectionColorBluePart> + <SelectionColorGreenPart type="int">255</SelectionColorGreenPart> + <SelectionColorRedPart type="int">255</SelectionColorRedPart> + </Gui> + <Identify> + <disabledLayers type="QStringList"> + <value>testlayer_0b835118_a5d5_4255_b5dd_f42253c0a4a0</value> + </disabledLayers> + </Identify> + <Legend> + <filterByMap type="bool">false</filterByMap> + </Legend> + <Macros> + <pythonCode type="QString"></pythonCode> + </Macros> + <Measure> + <Ellipsoid type="QString">WGS84</Ellipsoid> + </Measure> + <Measurement> + <AreaUnits type="QString">m2</AreaUnits> + <DistanceUnits type="QString">meters</DistanceUnits> + </Measurement> + <PAL> + <CandidatesLine type="int">50</CandidatesLine> + <CandidatesPoint type="int">16</CandidatesPoint> + <CandidatesPolygon type="int">30</CandidatesPolygon> + <DrawOutlineLabels type="bool">true</DrawOutlineLabels> + <DrawRectOnly type="bool">false</DrawRectOnly> + <SearchMethod type="int">0</SearchMethod> + <ShowingAllLabels type="bool">false</ShowingAllLabels> + <ShowingCandidates type="bool">false</ShowingCandidates> + <ShowingPartialsLabels type="bool">true</ShowingPartialsLabels> + <TextFormat type="int">0</TextFormat> + </PAL> + <Paths> + <Absolute type="bool">false</Absolute> + </Paths> + <PositionPrecision> + <Automatic type="bool">true</Automatic> + <DecimalPlaces type="int">2</DecimalPlaces> + <DegreeFormat type="QString">D</DegreeFormat> + </PositionPrecision> + <RequiredLayers> + <Layers type="QStringList"/> + </RequiredLayers> + <SpatialRefSys> + <ProjectCRSID type="int">3452</ProjectCRSID> + <ProjectCRSProj4String type="QString">+proj=longlat +datum=WGS84 +no_defs</ProjectCRSProj4String> + <ProjectCrs type="QString">EPSG:4326</ProjectCrs> + <ProjectionsEnabled type="int">1</ProjectionsEnabled> + </SpatialRefSys> + <Variables> + <variableNames type="QStringList"/> + <variableValues type="QStringList"/> + </Variables> + <WCSLayers type="QStringList"/> + <WCSUrl type="QString"></WCSUrl> + <WFSLayers type="QStringList"> + <value>testlayer_c0988fd7_97ca_451d_adbc_37ad6d10583a</value> + </WFSLayers> + <WFSLayersPrecision> + <testlayer20150528120452665 type="int">8</testlayer20150528120452665> + <testlayer_c0988fd7_97ca_451d_adbc_37ad6d10583a type="int">8</testlayer_c0988fd7_97ca_451d_adbc_37ad6d10583a> + </WFSLayersPrecision> + <WFSTLayers> + <Delete type="QStringList"/> + <Insert type="QStringList"/> + <Update type="QStringList"/> + </WFSTLayers> + <WFSUrl type="QString"></WFSUrl> + <WMSAccessConstraints type="QString">None</WMSAccessConstraints> + <WMSAddWktGeometry type="bool">true</WMSAddWktGeometry> + <WMSContactMail type="QString">elpaso@itopen.it</WMSContactMail> + <WMSContactOrganization type="QString">QGIS dev team</WMSContactOrganization> + <WMSContactPerson type="QString">Alessandro Pasotti</WMSContactPerson> + <WMSContactPhone type="QString"></WMSContactPhone> + <WMSContactPosition type="QString"></WMSContactPosition> + <WMSDefaultMapUnitsPerMm type="double">1</WMSDefaultMapUnitsPerMm> + <WMSExtent type="QStringList"> + <value>8.20315414376310059</value> + <value>44.901236559338642</value> + <value>8.204164917965862</value> + <value>44.90159838674664172</value> + </WMSExtent> + <WMSFees type="QString">conditions unknown</WMSFees> + <WMSImageQuality type="int">90</WMSImageQuality> + <WMSKeywordList type="QStringList"> + <value></value> + </WMSKeywordList> + <WMSMaxAtlasFeatures type="int">1</WMSMaxAtlasFeatures> + <WMSOnlineResource type="QString"></WMSOnlineResource> + <WMSPrecision type="QString">4</WMSPrecision> + <WMSRequestDefinedDataSources type="bool">false</WMSRequestDefinedDataSources> + <WMSRestrictedComposers type="QStringList"/> + <WMSRestrictedLayers type="QStringList"/> + <WMSRootName type="QString"></WMSRootName> + <WMSSegmentizeFeatureInfoGeometry type="bool">false</WMSSegmentizeFeatureInfoGeometry> + <WMSServiceAbstract type="QString">Some UTF8 text èòù</WMSServiceAbstract> + <WMSServiceCapabilities type="bool">true</WMSServiceCapabilities> + <WMSServiceTitle type="QString">QGIS TestProject</WMSServiceTitle> + <WMSUrl type="QString"></WMSUrl> + <WMSUseLayerIDs type="bool">false</WMSUseLayerIDs> + <WMTSGrids> + <CRS type="QStringList"/> + <Config type="QStringList"/> + </WMTSGrids> + <WMTSJpegLayers> + <Group type="QStringList"/> + <Layer type="QStringList"/> + <Project type="bool">false</Project> + </WMTSJpegLayers> + <WMTSLayers> + <Group type="QStringList"/> + <Layer type="QStringList"/> + <Project type="bool">false</Project> + </WMTSLayers> + <WMTSMinScale type="int">5000</WMTSMinScale> + <WMTSPngLayers> + <Group type="QStringList"/> + <Layer type="QStringList"/> + <Project type="bool">false</Project> + </WMTSPngLayers> + <WMTSUrl type="QString"></WMTSUrl> + </properties> + <visibility-presets/> + <transformContext/> + <projectMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title>QGIS Test Project</title> + <abstract></abstract> + <contact> + <name></name> + <organization></organization> + <position></position> + <voice></voice> + <fax></fax> + <email></email> + <role></role> + </contact> + <links/> + <author></author> + <creation>2000-01-01T00:00:00</creation> + </projectMetadata> + <Annotations/> + <Layouts> + <Layout worldFileMap="" printResolution="300" units="mm" name="mytemplate"> + <Snapper snapToItems="1" snapToGrid="0" snapToGuides="1" tolerance="5"/> + <Grid offsetY="0" resUnits="mm" offsetX="0" resolution="10" offsetUnits="mm"/> + <PageCollection> + <symbol clip_to_extent="1" alpha="1" name="" force_rhr="0" type="fill"> + <layer locked="0" pass="0" class="SimpleFill" enabled="1"> + <prop k="border_width_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="color" v="255,255,255,255"/> + <prop k="joinstyle" v="miter"/> + <prop k="offset" v="0,0"/> + <prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="offset_unit" v="MM"/> + <prop k="outline_color" v="0,0,0,255"/> + <prop k="outline_style" v="no"/> + <prop k="outline_width" v="0.26"/> + <prop k="outline_width_unit" v="MM"/> + <prop k="style" v="solid"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + <LayoutItem visibility="1" opacity="1" id="" background="true" positionOnPage="0,0,mm" zValue="0" uuid="{45febe5f-bfdd-455a-aef5-c096b4677622}" position="0,0,mm" templateUuid="{45febe5f-bfdd-455a-aef5-c096b4677622}" groupUuid="" frameJoinStyle="miter" size="297,210,mm" frame="false" type="65638" itemRotation="0" positionLock="false" referencePoint="0" outlineWidthM="0.3,mm" blendMode="0" excludeFromExports="0"> + <FrameColor green="0" red="0" alpha="255" blue="0"/> + <BackgroundColor green="255" red="255" alpha="255" blue="255"/> + <LayoutObject> + <dataDefinedProperties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </dataDefinedProperties> + <customproperties/> + </LayoutObject> + </LayoutItem> + <GuideCollection visible="1"/> + </PageCollection> + <LayoutItem followPreset="false" keepLayerSet="false" visibility="1" opacity="1" id="" background="true" mapRotation="0" positionOnPage="126,143,mm" zValue="2" followPresetName="" uuid="{5ed7a90f-8af2-4535-a15e-e18a7f6c5d1f}" position="126,143,mm" templateUuid="{5ed7a90f-8af2-4535-a15e-e18a7f6c5d1f}" groupUuid="" labelMargin="0,mm" frameJoinStyle="miter" size="61,26,mm" frame="false" type="65639" drawCanvasItems="true" itemRotation="0" positionLock="false" referencePoint="0" outlineWidthM="0.3,mm" blendMode="0" excludeFromExports="0" mapFlags="1"> + <FrameColor green="0" red="0" alpha="255" blue="0"/> + <BackgroundColor green="255" red="255" alpha="255" blue="255"/> + <LayoutObject> + <dataDefinedProperties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </dataDefinedProperties> + <customproperties/> + </LayoutObject> + <Extent xmin="8.20128754650006186" xmax="8.20679772684772146" ymax="44.90260402302108389" ymin="44.90025542156142535"/> + <LayerSet/> + <ComposerMapGrid rightAnnotationDirection="0" intervalY="0" gridFramePenThickness="0.5" rightFrameDivisions="0" frameFillColor2="0,0,0,255" topAnnotationPosition="1" showAnnotation="0" unit="0" offsetY="0" show="0" leftAnnotationDisplay="0" gridFramePenColor="0,0,0,255" gridFrameWidth="2" gridStyle="0" gridFrameStyle="0" annotationFontColor="0,0,0,255" leftAnnotationDirection="0" annotationFormat="0" gridFrameMargin="0" offsetX="0" annotationPrecision="3" topAnnotationDisplay="0" rightAnnotationDisplay="0" bottomAnnotationDisplay="0" gridFrameSideFlags="15" bottomAnnotationDirection="0" leftAnnotationPosition="1" bottomAnnotationPosition="1" topAnnotationDirection="0" bottomFrameDivisions="0" name="Grille 1" leftFrameDivisions="0" rightAnnotationPosition="1" intervalX="0" uuid="{ca78854d-b53f-4d8b-97bd-6bbf0df72ad0}" frameFillColor1="255,255,255,255" annotationExpression="" position="3" frameAnnotationDistance="1" crossLength="3" blendMode="0" topFrameDivisions="0"> + <lineStyle> + <symbol clip_to_extent="1" alpha="1" name="" force_rhr="0" type="line"> + <layer locked="0" pass="0" class="SimpleLine" enabled="1"> + <prop k="capstyle" v="square"/> + <prop k="customdash" v="5;2"/> + <prop k="customdash_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="customdash_unit" v="MM"/> + <prop k="draw_inside_polygon" v="0"/> + <prop k="joinstyle" v="bevel"/> + <prop k="line_color" v="0,0,0,255"/> + <prop k="line_style" v="solid"/> + <prop k="line_width" v="0"/> + <prop k="line_width_unit" v="MM"/> + <prop k="offset" v="0"/> + <prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="offset_unit" v="MM"/> + <prop k="ring_filter" v="0"/> + <prop k="use_custom_dash" v="0"/> + <prop k="width_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </lineStyle> + <markerStyle> + <symbol clip_to_extent="1" alpha="1" name="" force_rhr="0" type="marker"> + <layer locked="0" pass="0" class="SimpleMarker" enabled="1"> + <prop k="angle" v="0"/> + <prop k="color" v="0,0,0,255"/> + <prop k="horizontal_anchor_point" v="1"/> + <prop k="joinstyle" v="bevel"/> + <prop k="name" v="circle"/> + <prop k="offset" v="0,0"/> + <prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="offset_unit" v="MM"/> + <prop k="outline_color" v="35,35,35,255"/> + <prop k="outline_style" v="solid"/> + <prop k="outline_width" v="0"/> + <prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="outline_width_unit" v="MM"/> + <prop k="scale_method" v="diameter"/> + <prop k="size" v="2"/> + <prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="size_unit" v="MM"/> + <prop k="vertical_anchor_point" v="1"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </markerStyle> + <annotationFontProperties description="Cantarell,11,-1,5,50,0,0,0,0,0" style=""/> + </ComposerMapGrid> + <AtlasMap margin="0.10000000000000001" scalingMode="2" atlasDriven="0"/> + <labelBlockingItems/> + </LayoutItem> + <LayoutItem followPreset="false" keepLayerSet="false" visibility="1" opacity="1" id="" background="true" mapRotation="0" positionOnPage="98.7716,20.1872,mm" zValue="1" followPresetName="" uuid="{8fec18d6-8ba0-47d6-914e-3daffe8a8633}" position="98.7716,20.1872,mm" templateUuid="{8fec18d6-8ba0-47d6-914e-3daffe8a8633}" groupUuid="" labelMargin="0,mm" frameJoinStyle="miter" size="87,103,mm" frame="false" type="65639" drawCanvasItems="true" itemRotation="0" positionLock="false" referencePoint="0" outlineWidthM="0.3,mm" blendMode="0" excludeFromExports="0" mapFlags="1"> + <FrameColor green="0" red="0" alpha="255" blue="0"/> + <BackgroundColor green="255" red="255" alpha="255" blue="255"/> + <LayoutObject> + <dataDefinedProperties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </dataDefinedProperties> + <customproperties/> + </LayoutObject> + <Extent xmin="8.20202108826836884" xmax="8.20606418507941449" ymax="44.9038230497138855" ymin="44.89903639486862374"/> + <LayerSet/> + <ComposerMapGrid rightAnnotationDirection="0" intervalY="0" gridFramePenThickness="0.5" rightFrameDivisions="0" frameFillColor2="0,0,0,255" topAnnotationPosition="1" showAnnotation="0" unit="0" offsetY="0" show="0" leftAnnotationDisplay="0" gridFramePenColor="0,0,0,255" gridFrameWidth="2" gridStyle="0" gridFrameStyle="0" annotationFontColor="0,0,0,255" leftAnnotationDirection="0" annotationFormat="0" gridFrameMargin="0" offsetX="0" annotationPrecision="3" topAnnotationDisplay="0" rightAnnotationDisplay="0" bottomAnnotationDisplay="0" gridFrameSideFlags="15" bottomAnnotationDirection="0" leftAnnotationPosition="1" bottomAnnotationPosition="1" topAnnotationDirection="0" bottomFrameDivisions="0" name="Grille 1" leftFrameDivisions="0" rightAnnotationPosition="1" intervalX="0" uuid="{94630841-1b07-4bc2-9cf7-1dce50a01a3e}" frameFillColor1="255,255,255,255" annotationExpression="" position="3" frameAnnotationDistance="1" crossLength="3" blendMode="0" topFrameDivisions="0"> + <lineStyle> + <symbol clip_to_extent="1" alpha="1" name="" force_rhr="0" type="line"> + <layer locked="0" pass="0" class="SimpleLine" enabled="1"> + <prop k="capstyle" v="square"/> + <prop k="customdash" v="5;2"/> + <prop k="customdash_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="customdash_unit" v="MM"/> + <prop k="draw_inside_polygon" v="0"/> + <prop k="joinstyle" v="bevel"/> + <prop k="line_color" v="0,0,0,255"/> + <prop k="line_style" v="solid"/> + <prop k="line_width" v="0"/> + <prop k="line_width_unit" v="MM"/> + <prop k="offset" v="0"/> + <prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="offset_unit" v="MM"/> + <prop k="ring_filter" v="0"/> + <prop k="use_custom_dash" v="0"/> + <prop k="width_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </lineStyle> + <markerStyle> + <symbol clip_to_extent="1" alpha="1" name="" force_rhr="0" type="marker"> + <layer locked="0" pass="0" class="SimpleMarker" enabled="1"> + <prop k="angle" v="0"/> + <prop k="color" v="0,0,0,255"/> + <prop k="horizontal_anchor_point" v="1"/> + <prop k="joinstyle" v="bevel"/> + <prop k="name" v="circle"/> + <prop k="offset" v="0,0"/> + <prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="offset_unit" v="MM"/> + <prop k="outline_color" v="35,35,35,255"/> + <prop k="outline_style" v="solid"/> + <prop k="outline_width" v="0"/> + <prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="outline_width_unit" v="MM"/> + <prop k="scale_method" v="diameter"/> + <prop k="size" v="2"/> + <prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="size_unit" v="MM"/> + <prop k="vertical_anchor_point" v="1"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" name="name" type="QString"/> + <Option name="properties"/> + <Option value="collection" name="type" type="QString"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </markerStyle> + <annotationFontProperties description="Cantarell,11,-1,5,50,0,0,0,0,0" style=""/> + </ComposerMapGrid> + <AtlasMap margin="0.10000000000000001" scalingMode="2" atlasDriven="0"/> + <labelBlockingItems/> + </LayoutItem> + <customproperties/> + <Atlas pageNameExpression="" sortFeatures="0" filenamePattern="'output_'||@atlas_featurenumber" hideCoverage="0" enabled="0" coverageLayer="" filterFeatures="0"/> + </Layout> + </Layouts> +</qgis> diff --git a/tests/testdata/qgis_server/bug_gh30264_empty_layer_wrong_bbox.gpkg b/tests/testdata/qgis_server/bug_gh30264_empty_layer_wrong_bbox.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..7031c59c40f8d75e3a19879c2f06cd65e598bd18 GIT binary patch literal 98304 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 N00ck)1ik<S{vVW8xCQ_K literal 0 HcmV?d00001 diff --git a/tests/testdata/qgis_server/bug_gh30264_empty_layer_wrong_bbox.qgs b/tests/testdata/qgis_server/bug_gh30264_empty_layer_wrong_bbox.qgs new file mode 100644 index 0000000000..6857aecc75 --- /dev/null +++ b/tests/testdata/qgis_server/bug_gh30264_empty_layer_wrong_bbox.qgs @@ -0,0 +1,373 @@ +<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'> +<qgis projectname="" version="3.7.0-Master"> + <homePath path=""/> + <title></title> + <autotransaction active="0"/> + <evaluateDefaultValues active="0"/> + <trust active="0"/> + <projectCrs> + <spatialrefsys> + <proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4> + <srsid>3857</srsid> + <srid>3857</srid> + <authid>EPSG:3857</authid> + <description>WGS 84 / Pseudo-Mercator</description> + <projectionacronym>merc</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </projectCrs> + <layer-tree-group> + <customproperties/> + <layer-tree-layer id="bug_gh30264_empty_layer_wrong_bbox_d719236a_422e_4b91_bce6_c2cdeef5a610" name="bug_gh30264_empty_layer_wrong_bbox" providerKey="ogr" checked="Qt::Checked" source="./bug_gh30264_empty_layer_wrong_bbox.gpkg|layername=bug_gh30264_empty_layer_wrong_bbox" expanded="1"> + <customproperties/> + </layer-tree-layer> + <custom-order enabled="0"> + <item>bug_gh30264_empty_layer_wrong_bbox_d719236a_422e_4b91_bce6_c2cdeef5a610</item> + </custom-order> + </layer-tree-group> + <snapping-settings type="1" tolerance="12" unit="1" intersection-snapping="0" mode="2" enabled="0"> + <individual-layer-settings> + <layer-setting id="bug_gh30264_empty_layer_wrong_bbox_d719236a_422e_4b91_bce6_c2cdeef5a610" type="1" tolerance="12" units="1" enabled="0"/> + </individual-layer-settings> + </snapping-settings> + <relations/> + <mapcanvas name="theMapCanvas" annotationsVisible="1"> + <units>meters</units> + <extent> + <xmin>868261.33347499091178179</xmin> + <ymin>5293022.48653715662658215</ymin> + <xmax>1557326.93517118180170655</xmax> + <ymax>5752909.36073758266866207</ymax> + </extent> + <rotation>0</rotation> + <destinationsrs> + <spatialrefsys> + <proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4> + <srsid>3857</srsid> + <srid>3857</srid> + <authid>EPSG:3857</authid> + <description>WGS 84 / Pseudo-Mercator</description> + <projectionacronym>merc</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </destinationsrs> + <rendermaptile>0</rendermaptile> + <expressionContextScope/> + </mapcanvas> + <projectModels/> + <legend updateDrawingOrder="true"> + <legendlayer showFeatureCount="0" drawingOrder="-1" name="bug_gh30264_empty_layer_wrong_bbox" checked="Qt::Checked" open="true"> + <filegroup hidden="false" open="true"> + <legendlayerfile visible="1" isInOverview="0" layerid="bug_gh30264_empty_layer_wrong_bbox_d719236a_422e_4b91_bce6_c2cdeef5a610"/> + </filegroup> + </legendlayer> + </legend> + <mapViewDocks/> + <projectlayers> + <maplayer simplifyDrawingHints="1" simplifyDrawingTol="1" autoRefreshTime="0" geometry="Point" simplifyMaxScale="1" type="vector" autoRefreshEnabled="0" hasScaleBasedVisibilityFlag="0" wkbType="Point" refreshOnNotifyEnabled="0" styleCategories="AllStyleCategories" minScale="1e+08" maxScale="0" readOnly="0" labelsEnabled="0" simplifyLocal="1" refreshOnNotifyMessage="" simplifyAlgorithm="0"> + <id>bug_gh30264_empty_layer_wrong_bbox_d719236a_422e_4b91_bce6_c2cdeef5a610</id> + <datasource>./bug_gh30264_empty_layer_wrong_bbox.gpkg|layername=bug_gh30264_empty_layer_wrong_bbox</datasource> + <keywordList> + <value></value> + </keywordList> + <layername>bug_gh30264_empty_layer_wrong_bbox</layername> + <srs> + <spatialrefsys> + <proj4>+proj=longlat +datum=WGS84 +no_defs</proj4> + <srsid>3452</srsid> + <srid>4326</srid> + <authid>EPSG:4326</authid> + <description>WGS 84</description> + <projectionacronym>longlat</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>true</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type>dataset</type> + <title></title> + <abstract></abstract> + <links/> + <fees></fees> + <encoding></encoding> + <crs> + <spatialrefsys> + <proj4></proj4> + <srsid>0</srsid> + <srid>0</srid> + <authid></authid> + <description></description> + <projectionacronym></projectionacronym> + <ellipsoidacronym></ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </crs> + <extent/> + </resourceMetadata> + <provider encoding="UTF-8">ogr</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <legend type="default-vector"/> + <expressionfields/> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + </flags> + <renderer-v2 type="singleSymbol" symbollevels="0" forceraster="0" enableorderby="0"> + <symbols> + <symbol alpha="1" type="marker" clip_to_extent="1" name="0" force_rhr="0"> + <layer class="SimpleMarker" pass="0" locked="0" enabled="1"> + <prop k="angle" v="0"/> + <prop k="color" v="145,82,45,255"/> + <prop k="horizontal_anchor_point" v="1"/> + <prop k="joinstyle" v="bevel"/> + <prop k="name" v="circle"/> + <prop k="offset" v="0,0"/> + <prop k="offset_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="offset_unit" v="MM"/> + <prop k="outline_color" v="35,35,35,255"/> + <prop k="outline_style" v="solid"/> + <prop k="outline_width" v="0"/> + <prop k="outline_width_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="outline_width_unit" v="MM"/> + <prop k="scale_method" v="diameter"/> + <prop k="size" v="2"/> + <prop k="size_map_unit_scale" v="3x:0,0,0,0,0,0"/> + <prop k="size_unit" v="MM"/> + <prop k="vertical_anchor_point" v="1"/> + <data_defined_properties> + <Option type="Map"> + <Option type="QString" value="" name="name"/> + <Option name="properties"/> + <Option type="QString" value="collection" name="type"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <rotation/> + <sizescale/> + </renderer-v2> + <customproperties/> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <geometryOptions removeDuplicateNodes="0" geometryPrecision="0"> + <activeChecks type="StringList"> + <Option type="QString" value=""/> + </activeChecks> + <checkConfiguration/> + </geometryOptions> + <fieldConfiguration> + <field name="fid"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="name"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias field="fid" name="" index="0"/> + <alias field="name" name="" index="1"/> + </aliases> + <excludeAttributesWMS/> + <excludeAttributesWFS/> + <defaults> + <default field="fid" expression="" applyOnUpdate="0"/> + <default field="name" expression="" applyOnUpdate="0"/> + </defaults> + <constraints> + <constraint field="fid" unique_strength="1" exp_strength="0" constraints="3" notnull_strength="1"/> + <constraint field="name" unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0"/> + </constraints> + <constraintExpressions> + <constraint desc="" field="fid" exp=""/> + <constraint desc="" field="name" exp=""/> + </constraintExpressions> + <expressionfields/> + <attributeactions> + <defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/> + </attributeactions> + <attributetableconfig sortExpression="" sortOrder="0" actionWidgetStyle="dropDown"> + <columns/> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <editform tolerant="1"></editform> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath></editforminitfilepath> + <editforminitcode><![CDATA[]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable/> + <labelOnTop/> + <widgets/> + <previewExpression></previewExpression> + <mapTip></mapTip> + </maplayer> + </projectlayers> + <layerorder> + <layer id="bug_gh30264_empty_layer_wrong_bbox_d719236a_422e_4b91_bce6_c2cdeef5a610"/> + </layerorder> + <properties> + <DefaultStyles> + <ColorRamp type="QString"></ColorRamp> + <Fill type="QString"></Fill> + <Line type="QString"></Line> + <Marker type="QString"></Marker> + <Opacity type="double">1</Opacity> + <RandomColors type="bool">true</RandomColors> + </DefaultStyles> + <Gui> + <CanvasColorBluePart type="int">255</CanvasColorBluePart> + <CanvasColorGreenPart type="int">255</CanvasColorGreenPart> + <CanvasColorRedPart type="int">255</CanvasColorRedPart> + <SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart> + <SelectionColorBluePart type="int">0</SelectionColorBluePart> + <SelectionColorGreenPart type="int">255</SelectionColorGreenPart> + <SelectionColorRedPart type="int">255</SelectionColorRedPart> + </Gui> + <Legend> + <filterByMap type="bool">false</filterByMap> + </Legend> + <Macros> + <pythonCode type="QString"></pythonCode> + </Macros> + <Measure> + <Ellipsoid type="QString">WGS84</Ellipsoid> + </Measure> + <Measurement> + <AreaUnits type="QString">m2</AreaUnits> + <DistanceUnits type="QString">meters</DistanceUnits> + </Measurement> + <PAL> + <CandidatesLine type="int">50</CandidatesLine> + <CandidatesPoint type="int">16</CandidatesPoint> + <CandidatesPolygon type="int">30</CandidatesPolygon> + <DrawRectOnly type="bool">false</DrawRectOnly> + <SearchMethod type="int">0</SearchMethod> + <ShowingAllLabels type="bool">false</ShowingAllLabels> + <ShowingCandidates type="bool">false</ShowingCandidates> + <ShowingPartialsLabels type="bool">true</ShowingPartialsLabels> + <TextFormat type="int">0</TextFormat> + </PAL> + <Paths> + <Absolute type="bool">false</Absolute> + </Paths> + <PositionPrecision> + <Automatic type="bool">true</Automatic> + <DecimalPlaces type="int">2</DecimalPlaces> + <DegreeFormat type="QString">MU</DegreeFormat> + </PositionPrecision> + <SpatialRefSys> + <ProjectionsEnabled type="int">1</ProjectionsEnabled> + </SpatialRefSys> + <WCSLayers type="QStringList"/> + <WCSUrl type="QString"></WCSUrl> + <WFSLayers type="QStringList"/> + <WFSTLayers> + <Delete type="QStringList"/> + <Insert type="QStringList"/> + <Update type="QStringList"/> + </WFSTLayers> + <WFSUrl type="QString"></WFSUrl> + <WMSAccessConstraints type="QString">None</WMSAccessConstraints> + <WMSAddWktGeometry type="bool">false</WMSAddWktGeometry> + <WMSContactMail type="QString"></WMSContactMail> + <WMSContactOrganization type="QString"></WMSContactOrganization> + <WMSContactPerson type="QString"></WMSContactPerson> + <WMSContactPhone type="QString"></WMSContactPhone> + <WMSContactPosition type="QString"></WMSContactPosition> + <WMSDefaultMapUnitsPerMm type="double">1000</WMSDefaultMapUnitsPerMm> + <WMSExtent type="QStringList"> + <value>730814.65538165951147676</value> + <value>5293022.48653715662658215</value> + <value>1694773.61326451320201159</value> + <value>5752909.36073758266866207</value> + </WMSExtent> + <WMSFees type="QString">conditions unknown</WMSFees> + <WMSImageQuality type="int">90</WMSImageQuality> + <WMSKeywordList type="QStringList"> + <value></value> + </WMSKeywordList> + <WMSMaxAtlasFeatures type="int">1</WMSMaxAtlasFeatures> + <WMSOnlineResource type="QString"></WMSOnlineResource> + <WMSPrecision type="QString">8</WMSPrecision> + <WMSRestrictedComposers type="QStringList"/> + <WMSRestrictedLayers type="QStringList"/> + <WMSRootName type="QString"></WMSRootName> + <WMSSegmentizeFeatureInfoGeometry type="bool">false</WMSSegmentizeFeatureInfoGeometry> + <WMSServiceAbstract type="QString"></WMSServiceAbstract> + <WMSServiceCapabilities type="bool">false</WMSServiceCapabilities> + <WMSServiceTitle type="QString"></WMSServiceTitle> + <WMSUrl type="QString"></WMSUrl> + <WMSUseLayerIDs type="bool">false</WMSUseLayerIDs> + <WMTSGrids> + <CRS type="QStringList"/> + <Config type="QStringList"/> + </WMTSGrids> + <WMTSJpegLayers> + <Group type="QStringList"/> + <Layer type="QStringList"/> + <Project type="bool">false</Project> + </WMTSJpegLayers> + <WMTSLayers> + <Group type="QStringList"/> + <Layer type="QStringList"/> + <Project type="bool">false</Project> + </WMTSLayers> + <WMTSMinScale type="int">5000</WMTSMinScale> + <WMTSPngLayers> + <Group type="QStringList"/> + <Layer type="QStringList"/> + <Project type="bool">false</Project> + </WMTSPngLayers> + <WMTSUrl type="QString"></WMTSUrl> + </properties> + <visibility-presets/> + <transformContext/> + <projectMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title></title> + <abstract></abstract> + <contact> + <name></name> + <organization></organization> + <position></position> + <voice></voice> + <fax></fax> + <email></email> + <role></role> + </contact> + <links/> + <author>Alessandro Pasotti</author> + <creation>2019-06-19T15:14:37</creation> + </projectMetadata> + <Annotations/> + <Layouts/> +</qgis> diff --git a/tests/testdata/qgis_server/getcontext.txt b/tests/testdata/qgis_server/getcontext.txt index 154e4ecf41..c3abe9ec64 100644 --- a/tests/testdata/qgis_server/getcontext.txt +++ b/tests/testdata/qgis_server/getcontext.txt @@ -13,7 +13,7 @@ Content-Type: text/xml; charset=utf-8 </ows:BoundingBox> </General> <ResourceList> - <Layer group="groupwithoutshortname" hidden="true" queryable="false" id="testlayer3" name="testlayer3" opacity="1"> + <Layer group="groupwithoutshortname" hidden="false" queryable="false" id="testlayer3" name="testlayer3" opacity="1"> <ows:Title>testlayer3</ows:Title> <ows:OutputFormat>image/png</ows:OutputFormat> <Server default="true" service="urn:ogc:serviceType:WMS" version="1.3.0"> @@ -26,7 +26,7 @@ Content-Type: text/xml; charset=utf-8 </Style> </StyleList> </Layer> - <Layer group="groupwithshortname" hidden="true" queryable="true" id="testlayer2" name="testlayer2" opacity="1"> + <Layer group="groupwithshortname" hidden="false" queryable="true" id="testlayer2" name="testlayer2" opacity="1"> <ows:Title>testlayer2</ows:Title> <ows:OutputFormat>image/png</ows:OutputFormat> <Server default="true" service="urn:ogc:serviceType:WMS" version="1.3.0"> @@ -39,7 +39,7 @@ Content-Type: text/xml; charset=utf-8 </Style> </StyleList> </Layer> - <Layer hidden="true" queryable="true" id="testlayer_èé" name="testlayer èé" opacity="1"> + <Layer hidden="false" queryable="true" id="testlayer_èé" name="testlayer èé" opacity="1"> <ows:Title>A test vector layer</ows:Title> <ows:OutputFormat>image/png</ows:OutputFormat> <Server default="true" service="urn:ogc:serviceType:WMS" version="1.3.0"> @@ -53,7 +53,7 @@ Content-Type: text/xml; charset=utf-8 </Style> </StyleList> </Layer> - <Layer hidden="true" queryable="true" id="layer_with_short_name" name="layer_with_short_name" opacity="1"> + <Layer hidden="false" queryable="true" id="layer_with_short_name" name="layer_with_short_name" opacity="1"> <ows:Title>A Layer with a short name</ows:Title> <ows:OutputFormat>image/png</ows:OutputFormat> <Server default="true" service="urn:ogc:serviceType:WMS" version="1.3.0"> diff --git a/tests/testdata/qgis_server/test_project_wms_filter.gpkg b/tests/testdata/qgis_server/test_project_wms_filter.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..a5e9259cbbd98ce02add99749ef4af85760e6032 GIT binary patch literal 98304 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 YDpEB|>z+PW)7$Gd4qDwj%u<H_54cC=4FCWD literal 0 HcmV?d00001 diff --git a/tests/testdata/qgis_server/test_project_wms_filter.qgs b/tests/testdata/qgis_server/test_project_wms_filter.qgs new file mode 100644 index 0000000000..4cc3986a49 --- /dev/null +++ b/tests/testdata/qgis_server/test_project_wms_filter.qgs @@ -0,0 +1,306 @@ +<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'> +<qgis projectname="" version="3.6.0-Noosa"> + <homePath path=""/> + <title></title> + <autotransaction active="0"/> + <evaluateDefaultValues active="0"/> + <trust active="0"/> + <projectCrs> + <spatialrefsys> + <proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4> + <srsid>3857</srsid> + <srid>3857</srid> + <authid>EPSG:3857</authid> + <description>WGS 84 / Pseudo-Mercator</description> + <projectionacronym>merc</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </projectCrs> + <layer-tree-group> + <customproperties/> + <layer-tree-layer providerKey="ogr" source="./test_project_wms_filter.gpkg|layername=points" id="points_751bafcd_6bc0_4d4b_9901_dd09704a0e9b" checked="Qt::Checked" name="points" expanded="1"> + <customproperties/> + </layer-tree-layer> + <custom-order enabled="0"> + <item>points_751bafcd_6bc0_4d4b_9901_dd09704a0e9b</item> + </custom-order> + </layer-tree-group> + <snapping-settings enabled="0" mode="2" tolerance="12" unit="1" type="1" intersection-snapping="0"> + <individual-layer-settings> + <layer-setting units="1" enabled="0" id="points_751bafcd_6bc0_4d4b_9901_dd09704a0e9b" tolerance="12" type="1"/> + </individual-layer-settings> + </snapping-settings> + <relations/> + <mapcanvas annotationsVisible="1" name="theMapCanvas"> + <units>meters</units> + <extent> + <xmin>-218187.4328507388709113</xmin> + <ymin>-102171.74223070539301261</ymin> + <xmax>169699.14840226876549423</xmax> + <ymax>120478.54350206544040702</ymax> + </extent> + <rotation>0</rotation> + <destinationsrs> + <spatialrefsys> + <proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4> + <srsid>3857</srsid> + <srid>3857</srid> + <authid>EPSG:3857</authid> + <description>WGS 84 / Pseudo-Mercator</description> + <projectionacronym>merc</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </destinationsrs> + <rendermaptile>0</rendermaptile> + <expressionContextScope/> + </mapcanvas> + <legend updateDrawingOrder="true"> + <legendlayer showFeatureCount="0" checked="Qt::Checked" name="points" drawingOrder="-1" open="true"> + <filegroup hidden="false" open="true"> + <legendlayerfile isInOverview="0" layerid="points_751bafcd_6bc0_4d4b_9901_dd09704a0e9b" visible="1"/> + </filegroup> + </legendlayer> + </legend> + <mapViewDocks/> + <mapViewDocks3D/> + <projectlayers> + <maplayer hasScaleBasedVisibilityFlag="0" simplifyDrawingHints="1" autoRefreshTime="0" refreshOnNotifyMessage="" minScale="1e+08" refreshOnNotifyEnabled="0" simplifyMaxScale="1" maxScale="0" simplifyLocal="1" readOnly="0" geometry="Point" styleCategories="AllStyleCategories" labelsEnabled="0" simplifyDrawingTol="1" type="vector" autoRefreshEnabled="0" simplifyAlgorithm="0"> + <extent> + <xmin>-77432.828125</xmin> + <ymin>26718.03125</ymin> + <xmax>-18059.41015625</xmax> + <ymax>46261.78515625</ymax> + </extent> + <id>points_751bafcd_6bc0_4d4b_9901_dd09704a0e9b</id> + <datasource>./test_project_wms_filter.gpkg|layername=points</datasource> + <keywordList> + <value></value> + </keywordList> + <layername>points</layername> + <srs> + <spatialrefsys> + <proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4> + <srsid>3857</srsid> + <srid>3857</srid> + <authid>EPSG:3857</authid> + <description>WGS 84 / Pseudo-Mercator</description> + <projectionacronym>merc</projectionacronym> + <ellipsoidacronym>WGS84</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type>dataset</type> + <title></title> + <abstract></abstract> + <links/> + <fees></fees> + <encoding></encoding> + <crs> + <spatialrefsys> + <proj4></proj4> + <srsid>0</srsid> + <srid>0</srid> + <authid></authid> + <description></description> + <projectionacronym></projectionacronym> + <ellipsoidacronym></ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </crs> + <extent/> + </resourceMetadata> + <provider encoding="UTF-8">ogr</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <legend type="default-vector"/> + <expressionfields/> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + </flags> + <renderer-v2 enableorderby="0" type="singleSymbol" symbollevels="0" forceraster="0"> + <symbols> + <symbol clip_to_extent="1" alpha="1" type="marker" name="0" force_rhr="0"> + <layer class="SimpleMarker" locked="0" enabled="1" pass="0"> + <prop v="0" k="angle"/> + <prop v="231,113,72,255" k="color"/> + <prop v="1" k="horizontal_anchor_point"/> + <prop v="bevel" k="joinstyle"/> + <prop v="circle" k="name"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="Pixel" k="offset_unit"/> + <prop v="35,35,35,255" k="outline_color"/> + <prop v="solid" k="outline_style"/> + <prop v="0" k="outline_width"/> + <prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/> + <prop v="Pixel" k="outline_width_unit"/> + <prop v="diameter" k="scale_method"/> + <prop v="30" k="size"/> + <prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/> + <prop v="Pixel" k="size_unit"/> + <prop v="1" k="vertical_anchor_point"/> + <data_defined_properties> + <Option type="Map"> + <Option value="" type="QString" name="name"/> + <Option name="properties"/> + <Option value="collection" type="QString" name="type"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <rotation/> + <sizescale/> + </renderer-v2> + <customproperties/> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <geometryOptions geometryPrecision="0" removeDuplicateNodes="0"> + <activeChecks/> + <checkConfiguration/> + </geometryOptions> + <fieldConfiguration> + <field name="id"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="name"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="date"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias field="id" index="0" name=""/> + <alias field="name" index="1" name=""/> + <alias field="date" index="2" name=""/> + </aliases> + <excludeAttributesWMS/> + <excludeAttributesWFS/> + <defaults> + <default applyOnUpdate="0" expression="" field="id"/> + <default applyOnUpdate="0" expression="" field="name"/> + <default applyOnUpdate="0" expression="" field="date"/> + </defaults> + <constraints> + <constraint constraints="3" notnull_strength="1" field="id" exp_strength="0" unique_strength="1"/> + <constraint constraints="0" notnull_strength="0" field="name" exp_strength="0" unique_strength="0"/> + <constraint constraints="0" notnull_strength="0" field="date" exp_strength="0" unique_strength="0"/> + </constraints> + <constraintExpressions> + <constraint desc="" exp="" field="id"/> + <constraint desc="" exp="" field="name"/> + <constraint desc="" exp="" field="date"/> + </constraintExpressions> + <expressionfields/> + <attributeactions> + <defaultAction key="Canvas" value="{00000000-0000-0000-0000-000000000000}"/> + </attributeactions> + <attributetableconfig sortExpression="" actionWidgetStyle="dropDown" sortOrder="0"> + <columns/> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <editform tolerant="1"></editform> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath></editforminitfilepath> + <editforminitcode><![CDATA[]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable/> + <labelOnTop/> + <widgets/> + <previewExpression></previewExpression> + <mapTip></mapTip> + </maplayer> + </projectlayers> + <layerorder> + <layer id="points_751bafcd_6bc0_4d4b_9901_dd09704a0e9b"/> + </layerorder> + <properties> + <Gui> + <SelectionColorGreenPart type="int">255</SelectionColorGreenPart> + <SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart> + <SelectionColorRedPart type="int">255</SelectionColorRedPart> + <CanvasColorRedPart type="int">255</CanvasColorRedPart> + <CanvasColorBluePart type="int">255</CanvasColorBluePart> + <CanvasColorGreenPart type="int">255</CanvasColorGreenPart> + <SelectionColorBluePart type="int">0</SelectionColorBluePart> + </Gui> + <Measure> + <Ellipsoid type="QString">WGS84</Ellipsoid> + </Measure> + <Measurement> + <DistanceUnits type="QString">meters</DistanceUnits> + <AreaUnits type="QString">m2</AreaUnits> + </Measurement> + <Legend> + <filterByMap type="bool">false</filterByMap> + </Legend> + <Paths> + <Absolute type="bool">false</Absolute> + </Paths> + <SpatialRefSys> + <ProjectionsEnabled type="int">1</ProjectionsEnabled> + </SpatialRefSys> + <PositionPrecision> + <Automatic type="bool">true</Automatic> + <DecimalPlaces type="int">2</DecimalPlaces> + </PositionPrecision> + <PAL> + <CandidatesPoint type="int">16</CandidatesPoint> + <DrawRectOnly type="bool">false</DrawRectOnly> + <ShowingAllLabels type="bool">false</ShowingAllLabels> + <SearchMethod type="int">0</SearchMethod> + <CandidatesPolygon type="int">30</CandidatesPolygon> + <ShowingPartialsLabels type="bool">true</ShowingPartialsLabels> + <TextFormat type="int">0</TextFormat> + <ShowingCandidates type="bool">false</ShowingCandidates> + <CandidatesLine type="int">50</CandidatesLine> + </PAL> + </properties> + <visibility-presets/> + <transformContext/> + <projectMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title></title> + <abstract></abstract> + <links/> + <author></author> + <creation>2019-05-15T14:23:27</creation> + </projectMetadata> + <Annotations/> + <Layouts/> +</qgis> diff --git a/tests/testdata/qgis_server/test_project_wms_invalid_layers.qgs b/tests/testdata/qgis_server/test_project_wms_invalid_layers.qgs new file mode 100644 index 0000000000..1f8d252df6 --- /dev/null +++ b/tests/testdata/qgis_server/test_project_wms_invalid_layers.qgs @@ -0,0 +1,1941 @@ +<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'> +<qgis projectname="QGIS Server - Grouped Layer" version="3.5.0-Master"> + <homePath path=""/> + <title>QGIS Server - Grouped Layer</title> + <autotransaction active="0"/> + <evaluateDefaultValues active="0"/> + <trust active="0"/> + <projectCrs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </projectCrs> + <layer-tree-group> + <customproperties/> + <layer-tree-group name="city and district boundaries" checked="Qt::Checked" expanded="1"> + <customproperties/> + <layer-tree-layer name="cdb_lines" source="./test_project_wms_grouped_layers.gpkg|layername=cdb_lines" checked="Qt::Checked" providerKey="ogr" id="cdb_lines_3f5c3c6d_db6d_4681_9291_7109f8d69f8b" expanded="1"> + <customproperties/> + </layer-tree-layer> + <layer-tree-layer name="cdb_labels" source="./test_project_wms_grouped_layers.gpkg|layername=cdb_labels" checked="Qt::Checked" providerKey="ogr" id="cdb_labels_8ee74af8_e7ba_4d80_9e0d_5b0b956d3daf" expanded="1"> + <customproperties/> + </layer-tree-layer> + </layer-tree-group> + <layer-tree-group name="areas and symbols" checked="Qt::Checked" expanded="1"> + <customproperties/> + <layer-tree-layer name="as_symbols" source="./test_project_wms_grouped_layers.gpkg|layername=as_symbols" checked="Qt::Checked" providerKey="ogr" id="as_symbols_3a1cdeef_9082_4d07_be5c_47c956bd7e76" expanded="1"> + <customproperties/> + </layer-tree-layer> + <layer-tree-layer name="as_areas" source="./test_project_wms_grouped_layers.gpkg|layername=as_areas" checked="Qt::Checked" providerKey="ogr" id="as_areas_bbe3c71b_356c_49f5_9fc2_ae771bcdd467" expanded="1"> + <customproperties/> + </layer-tree-layer> + </layer-tree-group> + <layer-tree-layer name="osm" source="GPKG:/home/ale/dev/QGIS/tests/testdata/qgis_server/test_project_wms_grouped_layers.gpkg:osm" checked="Qt::Checked" providerKey="gdal" id="osm_85c8eb94_b6fa_437b_b91a_7816ef2e2243" expanded="1"> + <customproperties/> + </layer-tree-layer> + <custom-order enabled="0"> + <item>osm_85c8eb94_b6fa_437b_b91a_7816ef2e2243</item> + <item>cdb_labels_8ee74af8_e7ba_4d80_9e0d_5b0b956d3daf</item> + <item>cdb_lines_3f5c3c6d_db6d_4681_9291_7109f8d69f8b</item> + <item>as_areas_bbe3c71b_356c_49f5_9fc2_ae771bcdd467</item> + <item>as_symbols_3a1cdeef_9082_4d07_be5c_47c956bd7e76</item> + </custom-order> + </layer-tree-group> + <snapping-settings enabled="0" mode="2" unit="1" type="1" tolerance="12" intersection-snapping="0"> + <individual-layer-settings> + <layer-setting enabled="0" type="1" tolerance="12" id="as_areas_bbe3c71b_356c_49f5_9fc2_ae771bcdd467" units="1"/> + <layer-setting enabled="0" type="1" tolerance="12" id="cdb_lines_3f5c3c6d_db6d_4681_9291_7109f8d69f8b" units="1"/> + <layer-setting enabled="0" type="1" tolerance="12" id="cdb_labels_8ee74af8_e7ba_4d80_9e0d_5b0b956d3daf" units="1"/> + <layer-setting enabled="0" type="1" tolerance="12" id="as_symbols_3a1cdeef_9082_4d07_be5c_47c956bd7e76" units="1"/> + </individual-layer-settings> + </snapping-settings> + <relations/> + <mapcanvas name="theMapCanvas" annotationsVisible="1"> + <units>meters</units> + <extent> + <xmin>611130.7508374999742955</xmin> + <ymin>5808188.16393684130162001</ymin> + <xmax>623514.4366625000257045</xmax> + <ymax>5814318.83606315869837999</ymax> + </extent> + <rotation>0</rotation> + <destinationsrs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </destinationsrs> + <rendermaptile>0</rendermaptile> + </mapcanvas> + <projectModels/> + <legend updateDrawingOrder="true"> + <legendgroup name="city and district boundaries" checked="Qt::Checked" open="true"> + <legendlayer name="cdb_lines" drawingOrder="-1" checked="Qt::Checked" open="true" showFeatureCount="0"> + <filegroup hidden="false" open="true"> + <legendlayerfile isInOverview="0" layerid="cdb_lines_3f5c3c6d_db6d_4681_9291_7109f8d69f8b" visible="1"/> + </filegroup> + </legendlayer> + <legendlayer name="cdb_labels" drawingOrder="-1" checked="Qt::Checked" open="true" showFeatureCount="0"> + <filegroup hidden="false" open="true"> + <legendlayerfile isInOverview="0" layerid="cdb_labels_8ee74af8_e7ba_4d80_9e0d_5b0b956d3daf" visible="1"/> + </filegroup> + </legendlayer> + </legendgroup> + <legendgroup name="areas and symbols" checked="Qt::Checked" open="true"> + <legendlayer name="as_symbols" drawingOrder="-1" checked="Qt::Checked" open="true" showFeatureCount="0"> + <filegroup hidden="false" open="true"> + <legendlayerfile isInOverview="0" layerid="as_symbols_3a1cdeef_9082_4d07_be5c_47c956bd7e76" visible="1"/> + </filegroup> + </legendlayer> + <legendlayer name="as_areas" drawingOrder="-1" checked="Qt::Checked" open="true" showFeatureCount="0"> + <filegroup hidden="false" open="true"> + <legendlayerfile isInOverview="0" layerid="as_areas_bbe3c71b_356c_49f5_9fc2_ae771bcdd467" visible="1"/> + </filegroup> + </legendlayer> + </legendgroup> + <legendlayer name="osm" drawingOrder="-1" checked="Qt::Checked" open="true" showFeatureCount="0"> + <filegroup hidden="false" open="true"> + <legendlayerfile isInOverview="0" layerid="osm_85c8eb94_b6fa_437b_b91a_7816ef2e2243" visible="1"/> + </filegroup> + </legendlayer> + </legend> + <mapViewDocks/> + <mapViewDocks3D/> + <mapcanvas name="mAreaCanvas" annotationsVisible="1"> + <units>meters</units> + <extent> + <xmin>613671.31718749995343387</xmin> + <ymin>5808474.67499999981373549</ymin> + <xmax>620973.87031250004656613</xmax> + <ymax>5814032.32500000018626451</ymax> + </extent> + <rotation>0</rotation> + <destinationsrs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </destinationsrs> + <rendermaptile>0</rendermaptile> + </mapcanvas> + <mapcanvas name="mAreaCanvas" annotationsVisible="1"> + <units>meters</units> + <extent> + <xmin>613671.31718749995343387</xmin> + <ymin>5808474.67499999981373549</ymin> + <xmax>620973.87031250004656613</xmax> + <ymax>5814032.32500000018626451</ymax> + </extent> + <rotation>0</rotation> + <destinationsrs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </destinationsrs> + <rendermaptile>0</rendermaptile> + </mapcanvas> + <mapcanvas name="mAreaCanvas" annotationsVisible="1"> + <units>meters</units> + <extent> + <xmin>613671.31718749995343387</xmin> + <ymin>5808474.67499999981373549</ymin> + <xmax>620973.87031250004656613</xmax> + <ymax>5814032.32500000018626451</ymax> + </extent> + <rotation>0</rotation> + <destinationsrs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </destinationsrs> + <rendermaptile>0</rendermaptile> + </mapcanvas> + <projectlayers> + <maplayer hasScaleBasedVisibilityFlag="0" simplifyDrawingHints="1" refreshOnNotifyEnabled="0" labelsEnabled="0" simplifyLocal="1" readOnly="0" autoRefreshTime="0" geometry="Polygon" maxScale="0" refreshOnNotifyMessage="" simplifyDrawingTol="1" styleCategories="AllStyleCategories" simplifyAlgorithm="0" autoRefreshEnabled="0" type="vector" simplifyMaxScale="1" minScale="1e+8"> + <extent> + <xmin>614440.5625</xmin> + <ymin>5808607</ymin> + <xmax>618892</xmax> + <ymax>5812990</ymax> + </extent> + <id>as_areas_bbe3c71b_356c_49f5_9fc2_ae771bcdd467</id> + <datasource>./foo.gpkg|layername=as_areas</datasource> + <keywordList> + <value></value> + </keywordList> + <layername>as_areas</layername> + <srs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title></title> + <abstract></abstract> + <links/> + <fees></fees> + <encoding></encoding> + <crs> + <spatialrefsys> + <proj4></proj4> + <srsid>0</srsid> + <srid>0</srid> + <authid></authid> + <description></description> + <projectionacronym></projectionacronym> + <ellipsoidacronym></ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </crs> + <extent/> + </resourceMetadata> + <provider encoding="UTF-8">ogr</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <legend type="default-vector"/> + <expressionfields/> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + </flags> + <renderer-v2 forceraster="0" type="singleSymbol" enableorderby="0" symbollevels="0"> + <symbols> + <symbol name="0" alpha="1" type="fill" clip_to_extent="1" force_rhr="0"> + <layer locked="0" enabled="1" pass="0" class="SimpleFill"> + <prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/> + <prop v="183,72,75,255" k="color"/> + <prop v="bevel" k="joinstyle"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="35,35,35,255" k="outline_color"/> + <prop v="solid" k="outline_style"/> + <prop v="0.26" k="outline_width"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="solid" k="style"/> + <data_defined_properties> + <Option type="Map"> + <Option name="name" type="QString" value=""/> + <Option name="properties"/> + <Option name="type" type="QString" value="collection"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <rotation/> + <sizescale/> + </renderer-v2> + <customproperties/> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <geometryOptions geometryPrecision="0" removeDuplicateNodes="0"> + <activeChecks/> + <checkConfiguration/> + </geometryOptions> + <fieldConfiguration> + <field name="fid"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="gid"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="datum"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="bearbeiter"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="veranstaltung"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="beschriftung"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="name"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="flaechentyp"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="farbe"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="schraff_width"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="schraff_width_prt"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="schraff_size"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="schraff_size_prt"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="schraff_winkel"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="umrissfarbe"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="umrisstyp"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="umrissstaerke"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="umrissstaerke_prt"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="umfang"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="flaeche"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="bemerkung"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="last_change"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias name="" index="0" field="fid"/> + <alias name="" index="1" field="gid"/> + <alias name="" index="2" field="datum"/> + <alias name="" index="3" field="bearbeiter"/> + <alias name="" index="4" field="veranstaltung"/> + <alias name="" index="5" field="beschriftung"/> + <alias name="" index="6" field="name"/> + <alias name="" index="7" field="flaechentyp"/> + <alias name="" index="8" field="farbe"/> + <alias name="" index="9" field="schraff_width"/> + <alias name="" index="10" field="schraff_width_prt"/> + <alias name="" index="11" field="schraff_size"/> + <alias name="" index="12" field="schraff_size_prt"/> + <alias name="" index="13" field="schraff_winkel"/> + <alias name="" index="14" field="umrissfarbe"/> + <alias name="" index="15" field="umrisstyp"/> + <alias name="" index="16" field="umrissstaerke"/> + <alias name="" index="17" field="umrissstaerke_prt"/> + <alias name="" index="18" field="umfang"/> + <alias name="" index="19" field="flaeche"/> + <alias name="" index="20" field="bemerkung"/> + <alias name="" index="21" field="last_change"/> + </aliases> + <excludeAttributesWMS/> + <excludeAttributesWFS/> + <defaults> + <default applyOnUpdate="0" field="fid" expression=""/> + <default applyOnUpdate="0" field="gid" expression=""/> + <default applyOnUpdate="0" field="datum" expression=""/> + <default applyOnUpdate="0" field="bearbeiter" expression=""/> + <default applyOnUpdate="0" field="veranstaltung" expression=""/> + <default applyOnUpdate="0" field="beschriftung" expression=""/> + <default applyOnUpdate="0" field="name" expression=""/> + <default applyOnUpdate="0" field="flaechentyp" expression=""/> + <default applyOnUpdate="0" field="farbe" expression=""/> + <default applyOnUpdate="0" field="schraff_width" expression=""/> + <default applyOnUpdate="0" field="schraff_width_prt" expression=""/> + <default applyOnUpdate="0" field="schraff_size" expression=""/> + <default applyOnUpdate="0" field="schraff_size_prt" expression=""/> + <default applyOnUpdate="0" field="schraff_winkel" expression=""/> + <default applyOnUpdate="0" field="umrissfarbe" expression=""/> + <default applyOnUpdate="0" field="umrisstyp" expression=""/> + <default applyOnUpdate="0" field="umrissstaerke" expression=""/> + <default applyOnUpdate="0" field="umrissstaerke_prt" expression=""/> + <default applyOnUpdate="0" field="umfang" expression=""/> + <default applyOnUpdate="0" field="flaeche" expression=""/> + <default applyOnUpdate="0" field="bemerkung" expression=""/> + <default applyOnUpdate="0" field="last_change" expression=""/> + </defaults> + <constraints> + <constraint unique_strength="1" exp_strength="0" constraints="3" notnull_strength="1" field="fid"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="gid"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="datum"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="bearbeiter"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="veranstaltung"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="beschriftung"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="name"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="flaechentyp"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="farbe"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="schraff_width"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="schraff_width_prt"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="schraff_size"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="schraff_size_prt"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="schraff_winkel"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="umrissfarbe"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="umrisstyp"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="umrissstaerke"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="umrissstaerke_prt"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="umfang"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="flaeche"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="bemerkung"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="last_change"/> + </constraints> + <constraintExpressions> + <constraint exp="" desc="" field="fid"/> + <constraint exp="" desc="" field="gid"/> + <constraint exp="" desc="" field="datum"/> + <constraint exp="" desc="" field="bearbeiter"/> + <constraint exp="" desc="" field="veranstaltung"/> + <constraint exp="" desc="" field="beschriftung"/> + <constraint exp="" desc="" field="name"/> + <constraint exp="" desc="" field="flaechentyp"/> + <constraint exp="" desc="" field="farbe"/> + <constraint exp="" desc="" field="schraff_width"/> + <constraint exp="" desc="" field="schraff_width_prt"/> + <constraint exp="" desc="" field="schraff_size"/> + <constraint exp="" desc="" field="schraff_size_prt"/> + <constraint exp="" desc="" field="schraff_winkel"/> + <constraint exp="" desc="" field="umrissfarbe"/> + <constraint exp="" desc="" field="umrisstyp"/> + <constraint exp="" desc="" field="umrissstaerke"/> + <constraint exp="" desc="" field="umrissstaerke_prt"/> + <constraint exp="" desc="" field="umfang"/> + <constraint exp="" desc="" field="flaeche"/> + <constraint exp="" desc="" field="bemerkung"/> + <constraint exp="" desc="" field="last_change"/> + </constraintExpressions> + <expressionfields/> + <attributeactions> + <defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/> + </attributeactions> + <attributetableconfig sortExpression="" sortOrder="0" actionWidgetStyle="dropDown"> + <columns/> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <editform tolerant="1"></editform> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath></editforminitfilepath> + <editforminitcode><![CDATA[]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable/> + <labelOnTop/> + <widgets/> + <previewExpression></previewExpression> + <mapTip></mapTip> + </maplayer> + <maplayer hasScaleBasedVisibilityFlag="0" simplifyDrawingHints="1" refreshOnNotifyEnabled="0" labelsEnabled="0" simplifyLocal="1" readOnly="0" autoRefreshTime="0" geometry="Point" maxScale="0" refreshOnNotifyMessage="" simplifyDrawingTol="1" styleCategories="AllStyleCategories" simplifyAlgorithm="0" autoRefreshEnabled="0" type="vector" simplifyMaxScale="1" minScale="1e+8"> + <extent> + <xmin>613845.1875</xmin> + <ymin>5810420</ymin> + <xmax>620800</xmax> + <ymax>5813900</ymax> + </extent> + <id>as_symbols_3a1cdeef_9082_4d07_be5c_47c956bd7e76</id> + <datasource>./foo.gpkg|layername=as_symbols</datasource> + <keywordList> + <value></value> + </keywordList> + <layername>as_symbols</layername> + <srs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title></title> + <abstract></abstract> + <links/> + <fees></fees> + <encoding></encoding> + <crs> + <spatialrefsys> + <proj4></proj4> + <srsid>0</srsid> + <srid>0</srid> + <authid></authid> + <description></description> + <projectionacronym></projectionacronym> + <ellipsoidacronym></ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </crs> + <extent/> + </resourceMetadata> + <provider encoding="UTF-8">ogr</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <legend type="default-vector"/> + <expressionfields/> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + </flags> + <renderer-v2 forceraster="0" type="singleSymbol" enableorderby="0" symbollevels="0"> + <symbols> + <symbol name="0" alpha="1" type="marker" clip_to_extent="1" force_rhr="0"> + <layer locked="0" enabled="1" pass="0" class="SimpleMarker"> + <prop v="0" k="angle"/> + <prop v="0,192,0,255" k="color"/> + <prop v="1" k="horizontal_anchor_point"/> + <prop v="bevel" k="joinstyle"/> + <prop v="star" k="name"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="0,0,0,255" k="outline_color"/> + <prop v="solid" k="outline_style"/> + <prop v="0" k="outline_width"/> + <prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="area" k="scale_method"/> + <prop v="4" k="size"/> + <prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/> + <prop v="MM" k="size_unit"/> + <prop v="1" k="vertical_anchor_point"/> + <data_defined_properties> + <Option type="Map"> + <Option name="name" type="QString" value=""/> + <Option name="properties"/> + <Option name="type" type="QString" value="collection"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <rotation/> + <sizescale/> + </renderer-v2> + <customproperties/> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <geometryOptions geometryPrecision="0" removeDuplicateNodes="0"> + <activeChecks/> + <checkConfiguration/> + </geometryOptions> + <fieldConfiguration> + <field name="fid"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="gid"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="datum"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="bearbeiter"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="veranstaltung"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="beschriftung"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="name"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="form"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="groesse"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="groesse_red"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="winkel"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="farbe"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="bemerkung"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="last_change"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias name="" index="0" field="fid"/> + <alias name="" index="1" field="gid"/> + <alias name="" index="2" field="datum"/> + <alias name="" index="3" field="bearbeiter"/> + <alias name="" index="4" field="veranstaltung"/> + <alias name="" index="5" field="beschriftung"/> + <alias name="" index="6" field="name"/> + <alias name="" index="7" field="form"/> + <alias name="" index="8" field="groesse"/> + <alias name="" index="9" field="groesse_red"/> + <alias name="" index="10" field="winkel"/> + <alias name="" index="11" field="farbe"/> + <alias name="" index="12" field="bemerkung"/> + <alias name="" index="13" field="last_change"/> + </aliases> + <excludeAttributesWMS/> + <excludeAttributesWFS/> + <defaults> + <default applyOnUpdate="0" field="fid" expression=""/> + <default applyOnUpdate="0" field="gid" expression=""/> + <default applyOnUpdate="0" field="datum" expression=""/> + <default applyOnUpdate="0" field="bearbeiter" expression=""/> + <default applyOnUpdate="0" field="veranstaltung" expression=""/> + <default applyOnUpdate="0" field="beschriftung" expression=""/> + <default applyOnUpdate="0" field="name" expression=""/> + <default applyOnUpdate="0" field="form" expression=""/> + <default applyOnUpdate="0" field="groesse" expression=""/> + <default applyOnUpdate="0" field="groesse_red" expression=""/> + <default applyOnUpdate="0" field="winkel" expression=""/> + <default applyOnUpdate="0" field="farbe" expression=""/> + <default applyOnUpdate="0" field="bemerkung" expression=""/> + <default applyOnUpdate="0" field="last_change" expression=""/> + </defaults> + <constraints> + <constraint unique_strength="1" exp_strength="0" constraints="3" notnull_strength="1" field="fid"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="gid"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="datum"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="bearbeiter"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="veranstaltung"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="beschriftung"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="name"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="form"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="groesse"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="groesse_red"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="winkel"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="farbe"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="bemerkung"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="last_change"/> + </constraints> + <constraintExpressions> + <constraint exp="" desc="" field="fid"/> + <constraint exp="" desc="" field="gid"/> + <constraint exp="" desc="" field="datum"/> + <constraint exp="" desc="" field="bearbeiter"/> + <constraint exp="" desc="" field="veranstaltung"/> + <constraint exp="" desc="" field="beschriftung"/> + <constraint exp="" desc="" field="name"/> + <constraint exp="" desc="" field="form"/> + <constraint exp="" desc="" field="groesse"/> + <constraint exp="" desc="" field="groesse_red"/> + <constraint exp="" desc="" field="winkel"/> + <constraint exp="" desc="" field="farbe"/> + <constraint exp="" desc="" field="bemerkung"/> + <constraint exp="" desc="" field="last_change"/> + </constraintExpressions> + <expressionfields/> + <attributeactions> + <defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/> + </attributeactions> + <attributetableconfig sortExpression="" sortOrder="0" actionWidgetStyle="dropDown"> + <columns/> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <editform tolerant="1"></editform> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath></editforminitfilepath> + <editforminitcode><![CDATA[]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable/> + <labelOnTop/> + <widgets/> + <previewExpression></previewExpression> + <mapTip></mapTip> + </maplayer> + <maplayer hasScaleBasedVisibilityFlag="0" simplifyDrawingHints="0" refreshOnNotifyEnabled="0" labelsEnabled="1" simplifyLocal="1" readOnly="0" autoRefreshTime="0" geometry="Point" maxScale="0" refreshOnNotifyMessage="" simplifyDrawingTol="1" styleCategories="AllStyleCategories" simplifyAlgorithm="0" autoRefreshEnabled="0" type="vector" simplifyMaxScale="1" minScale="1e+8"> + <extent> + <xmin>613794.8125</xmin> + <ymin>5800447</ymin> + <xmax>626894.25</xmax> + <ymax>5815374.5</ymax> + </extent> + <id>cdb_labels_8ee74af8_e7ba_4d80_9e0d_5b0b956d3daf</id> + <datasource>./foo.gpkg|layername=cdb_labels</datasource> + <keywordList> + <value></value> + </keywordList> + <layername>cdb_labels</layername> + <srs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title></title> + <abstract></abstract> + <links/> + <fees></fees> + <encoding></encoding> + <crs> + <spatialrefsys> + <proj4></proj4> + <srsid>0</srsid> + <srid>0</srid> + <authid></authid> + <description></description> + <projectionacronym></projectionacronym> + <ellipsoidacronym></ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </crs> + <extent/> + </resourceMetadata> + <provider encoding="UTF-8">ogr</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <legend type="default-vector"/> + <expressionfields/> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + </flags> + <renderer-v2 forceraster="0" type="singleSymbol" enableorderby="0" symbollevels="0"> + <symbols> + <symbol name="0" alpha="1" type="marker" clip_to_extent="1" force_rhr="0"> + <layer locked="0" enabled="1" pass="0" class="SimpleMarker"> + <prop v="0" k="angle"/> + <prop v="225,89,137,255" k="color"/> + <prop v="1" k="horizontal_anchor_point"/> + <prop v="bevel" k="joinstyle"/> + <prop v="circle" k="name"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="35,35,35,255" k="outline_color"/> + <prop v="no" k="outline_style"/> + <prop v="0" k="outline_width"/> + <prop v="3x:0,0,0,0,0,0" k="outline_width_map_unit_scale"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="diameter" k="scale_method"/> + <prop v="0" k="size"/> + <prop v="3x:0,0,0,0,0,0" k="size_map_unit_scale"/> + <prop v="MM" k="size_unit"/> + <prop v="1" k="vertical_anchor_point"/> + <data_defined_properties> + <Option type="Map"> + <Option name="name" type="QString" value=""/> + <Option name="properties"/> + <Option name="type" type="QString" value="collection"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <rotation/> + <sizescale/> + </renderer-v2> + <labeling type="simple"> + <settings> + <text-style blendMode="0" fontWeight="75" isExpression="0" namedStyle="Bold" fontFamily="Ubuntu" previewBkgrdColor="#ffffff" fontLetterSpacing="0" fontStrikeout="0" multilineHeight="1" fontSize="14" fontCapitals="0" textOpacity="1" fontUnderline="0" fontWordSpacing="0" useSubstitutions="0" fontSizeUnit="Point" fontItalic="0" fieldName="NAME" fontSizeMapUnitScale="3x:0,0,0,0,0,0" textColor="0,0,149,255"> + <text-buffer bufferColor="255,255,255,255" bufferDraw="1" bufferNoFill="0" bufferOpacity="1" bufferBlendMode="0" bufferSize="0.75" bufferSizeMapUnitScale="3x:0,0,0,0,0,0" bufferSizeUnits="MM" bufferJoinStyle="64"/> + <background shapeBorderColor="128,128,128,255" shapeSVGFile="" shapeRadiiX="0" shapeOffsetMapUnitScale="3x:0,0,0,0,0,0" shapeSizeType="0" shapeBorderWidth="0" shapeBorderWidthUnit="MM" shapeRadiiUnit="MM" shapeOffsetY="0" shapeRotation="0" shapeSizeY="0" shapeFillColor="255,255,255,255" shapeBorderWidthMapUnitScale="3x:0,0,0,0,0,0" shapeJoinStyle="64" shapeSizeMapUnitScale="3x:0,0,0,0,0,0" shapeOffsetX="0" shapeSizeX="0" shapeDraw="0" shapeRadiiMapUnitScale="3x:0,0,0,0,0,0" shapeBlendMode="0" shapeRadiiY="0" shapeRotationType="0" shapeOpacity="1" shapeSizeUnit="MM" shapeType="0" shapeOffsetUnit="MM"/> + <shadow shadowOffsetMapUnitScale="3x:0,0,0,0,0,0" shadowUnder="0" shadowScale="100" shadowRadiusAlphaOnly="0" shadowRadiusUnit="MM" shadowBlendMode="6" shadowRadiusMapUnitScale="3x:0,0,0,0,0,0" shadowOffsetAngle="135" shadowOffsetDist="1" shadowColor="0,0,0,255" shadowOffsetUnit="MM" shadowDraw="0" shadowOpacity="0.7" shadowOffsetGlobal="1" shadowRadius="1.5"/> + <substitutions/> + </text-style> + <text-format autoWrapLength="0" placeDirectionSymbol="0" decimals="3" multilineAlign="0" rightDirectionSymbol=">" plussign="0" reverseDirectionSymbol="0" wrapChar="" leftDirectionSymbol="<" useMaxLineLengthForAutoWrap="1" formatNumbers="0" addDirectionSymbol="0"/> + <placement placement="1" priority="5" preserveRotation="1" maxCurvedCharAngleOut="-20" distMapUnitScale="3x:0,0,0,0,0,0" repeatDistance="0" centroidWhole="0" xOffset="0" offsetType="0" repeatDistanceUnits="MM" repeatDistanceMapUnitScale="3x:0,0,0,0,0,0" yOffset="0" centroidInside="1" placementFlags="0" rotationAngle="0" labelOffsetMapUnitScale="3x:0,0,0,0,0,0" quadOffset="4" offsetUnits="MM" fitInPolygonOnly="0" distUnits="MM" maxCurvedCharAngleIn="20" predefinedPositionOrder="TR,TL,BR,BL,R,L,TSR,BSR" dist="0"/> + <rendering minFeatureSize="0" labelPerPart="0" scaleVisibility="0" displayAll="1" scaleMax="10000000" obstacleFactor="1" upsidedownLabels="0" fontMinPixelSize="3" zIndex="0" mergeLines="0" fontMaxPixelSize="10000" fontLimitPixelSize="0" obstacleType="0" limitNumLabels="0" drawLabels="1" obstacle="1" scaleMin="1" maxNumLabels="2000"/> + <dd_properties> + <Option type="Map"> + <Option name="name" type="QString" value=""/> + <Option name="properties"/> + <Option name="type" type="QString" value="collection"/> + </Option> + </dd_properties> + </settings> + </labeling> + <customproperties> + <property value="0" key="embeddedWidgets/count"/> + <property key="variableNames"/> + <property key="variableValues"/> + </customproperties> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <SingleCategoryDiagramRenderer diagramType="Histogram" attributeLegend="1"> + <DiagramCategory lineSizeScale="3x:0,0,0,0,0,0" scaleBasedVisibility="0" scaleDependency="Area" sizeScale="3x:0,0,0,0,0,0" penAlpha="255" penColor="#000000" maxScaleDenominator="1e+8" rotationOffset="270" backgroundAlpha="255" backgroundColor="#ffffff" enabled="0" barWidth="5" lineSizeType="MM" labelPlacementMethod="XHeight" diagramOrientation="Up" opacity="1" penWidth="0" minScaleDenominator="0" minimumSize="0" height="15" width="15" sizeType="MM"> + <fontProperties style="" description="Noto Sans,9,-1,5,50,0,0,0,0,0"/> + <attribute color="#000000" label="" field=""/> + </DiagramCategory> + </SingleCategoryDiagramRenderer> + <DiagramLayerSettings linePlacementFlags="18" dist="0" priority="0" zIndex="0" showAll="1" placement="0" obstacle="0"> + <properties> + <Option type="Map"> + <Option name="name" type="QString" value=""/> + <Option name="properties"/> + <Option name="type" type="QString" value="collection"/> + </Option> + </properties> + </DiagramLayerSettings> + <geometryOptions geometryPrecision="0" removeDuplicateNodes="0"> + <activeChecks/> + <checkConfiguration/> + </geometryOptions> + <fieldConfiguration> + <field name="fid"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="AREA"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="PERIMETER"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="STADTTEILE"> + <editWidget type="Range"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="STADTTEI_1"> + <editWidget type="Range"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="S_A_"> + <editWidget type="Range"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="S_A_ID"> + <editWidget type="Range"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="O_NAME"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="ORTSTEIL"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="STADTTEIL"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="OT_SCHL"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="GEM_SCHL"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="ZVS"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="NAME"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="PLZ"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="KERNSTADT_"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="ORTSRATSBE"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="PLG_KITA"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="PLG_BERATU"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="PLG_JUFOE"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="VERFLECHTU"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="FUNKTIONSB"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="T_DATUM"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="Impfbez_Nr"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="Impfzentru"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias name="" index="0" field="fid"/> + <alias name="" index="1" field="AREA"/> + <alias name="" index="2" field="PERIMETER"/> + <alias name="" index="3" field="STADTTEILE"/> + <alias name="" index="4" field="STADTTEI_1"/> + <alias name="" index="5" field="S_A_"/> + <alias name="" index="6" field="S_A_ID"/> + <alias name="" index="7" field="O_NAME"/> + <alias name="" index="8" field="ORTSTEIL"/> + <alias name="" index="9" field="STADTTEIL"/> + <alias name="" index="10" field="OT_SCHL"/> + <alias name="" index="11" field="GEM_SCHL"/> + <alias name="" index="12" field="ZVS"/> + <alias name="" index="13" field="NAME"/> + <alias name="" index="14" field="PLZ"/> + <alias name="" index="15" field="KERNSTADT_"/> + <alias name="" index="16" field="ORTSRATSBE"/> + <alias name="" index="17" field="PLG_KITA"/> + <alias name="" index="18" field="PLG_BERATU"/> + <alias name="" index="19" field="PLG_JUFOE"/> + <alias name="" index="20" field="VERFLECHTU"/> + <alias name="" index="21" field="FUNKTIONSB"/> + <alias name="" index="22" field="T_DATUM"/> + <alias name="" index="23" field="Impfbez_Nr"/> + <alias name="" index="24" field="Impfzentru"/> + </aliases> + <excludeAttributesWMS/> + <excludeAttributesWFS/> + <defaults> + <default applyOnUpdate="0" field="fid" expression=""/> + <default applyOnUpdate="0" field="AREA" expression=""/> + <default applyOnUpdate="0" field="PERIMETER" expression=""/> + <default applyOnUpdate="0" field="STADTTEILE" expression=""/> + <default applyOnUpdate="0" field="STADTTEI_1" expression=""/> + <default applyOnUpdate="0" field="S_A_" expression=""/> + <default applyOnUpdate="0" field="S_A_ID" expression=""/> + <default applyOnUpdate="0" field="O_NAME" expression=""/> + <default applyOnUpdate="0" field="ORTSTEIL" expression=""/> + <default applyOnUpdate="0" field="STADTTEIL" expression=""/> + <default applyOnUpdate="0" field="OT_SCHL" expression=""/> + <default applyOnUpdate="0" field="GEM_SCHL" expression=""/> + <default applyOnUpdate="0" field="ZVS" expression=""/> + <default applyOnUpdate="0" field="NAME" expression=""/> + <default applyOnUpdate="0" field="PLZ" expression=""/> + <default applyOnUpdate="0" field="KERNSTADT_" expression=""/> + <default applyOnUpdate="0" field="ORTSRATSBE" expression=""/> + <default applyOnUpdate="0" field="PLG_KITA" expression=""/> + <default applyOnUpdate="0" field="PLG_BERATU" expression=""/> + <default applyOnUpdate="0" field="PLG_JUFOE" expression=""/> + <default applyOnUpdate="0" field="VERFLECHTU" expression=""/> + <default applyOnUpdate="0" field="FUNKTIONSB" expression=""/> + <default applyOnUpdate="0" field="T_DATUM" expression=""/> + <default applyOnUpdate="0" field="Impfbez_Nr" expression=""/> + <default applyOnUpdate="0" field="Impfzentru" expression=""/> + </defaults> + <constraints> + <constraint unique_strength="1" exp_strength="0" constraints="3" notnull_strength="1" field="fid"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="AREA"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="PERIMETER"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="STADTTEILE"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="STADTTEI_1"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="S_A_"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="S_A_ID"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="O_NAME"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="ORTSTEIL"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="STADTTEIL"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="OT_SCHL"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="GEM_SCHL"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="ZVS"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="NAME"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="PLZ"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="KERNSTADT_"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="ORTSRATSBE"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="PLG_KITA"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="PLG_BERATU"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="PLG_JUFOE"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="VERFLECHTU"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="FUNKTIONSB"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="T_DATUM"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="Impfbez_Nr"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="Impfzentru"/> + </constraints> + <constraintExpressions> + <constraint exp="" desc="" field="fid"/> + <constraint exp="" desc="" field="AREA"/> + <constraint exp="" desc="" field="PERIMETER"/> + <constraint exp="" desc="" field="STADTTEILE"/> + <constraint exp="" desc="" field="STADTTEI_1"/> + <constraint exp="" desc="" field="S_A_"/> + <constraint exp="" desc="" field="S_A_ID"/> + <constraint exp="" desc="" field="O_NAME"/> + <constraint exp="" desc="" field="ORTSTEIL"/> + <constraint exp="" desc="" field="STADTTEIL"/> + <constraint exp="" desc="" field="OT_SCHL"/> + <constraint exp="" desc="" field="GEM_SCHL"/> + <constraint exp="" desc="" field="ZVS"/> + <constraint exp="" desc="" field="NAME"/> + <constraint exp="" desc="" field="PLZ"/> + <constraint exp="" desc="" field="KERNSTADT_"/> + <constraint exp="" desc="" field="ORTSRATSBE"/> + <constraint exp="" desc="" field="PLG_KITA"/> + <constraint exp="" desc="" field="PLG_BERATU"/> + <constraint exp="" desc="" field="PLG_JUFOE"/> + <constraint exp="" desc="" field="VERFLECHTU"/> + <constraint exp="" desc="" field="FUNKTIONSB"/> + <constraint exp="" desc="" field="T_DATUM"/> + <constraint exp="" desc="" field="Impfbez_Nr"/> + <constraint exp="" desc="" field="Impfzentru"/> + </constraintExpressions> + <expressionfields/> + <attributeactions> + <defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/> + </attributeactions> + <attributetableconfig sortExpression="" sortOrder="0" actionWidgetStyle="dropDown"> + <columns> + <column name="fid" type="field" hidden="0" width="-1"/> + <column name="AREA" type="field" hidden="0" width="-1"/> + <column name="PERIMETER" type="field" hidden="0" width="-1"/> + <column name="STADTTEILE" type="field" hidden="0" width="-1"/> + <column name="STADTTEI_1" type="field" hidden="0" width="-1"/> + <column name="S_A_" type="field" hidden="0" width="-1"/> + <column name="S_A_ID" type="field" hidden="0" width="-1"/> + <column name="O_NAME" type="field" hidden="0" width="-1"/> + <column name="ORTSTEIL" type="field" hidden="0" width="-1"/> + <column name="STADTTEIL" type="field" hidden="0" width="-1"/> + <column name="OT_SCHL" type="field" hidden="0" width="-1"/> + <column name="GEM_SCHL" type="field" hidden="0" width="-1"/> + <column name="ZVS" type="field" hidden="0" width="-1"/> + <column name="NAME" type="field" hidden="0" width="-1"/> + <column name="PLZ" type="field" hidden="0" width="-1"/> + <column name="KERNSTADT_" type="field" hidden="0" width="-1"/> + <column name="ORTSRATSBE" type="field" hidden="0" width="-1"/> + <column name="PLG_KITA" type="field" hidden="0" width="-1"/> + <column name="PLG_BERATU" type="field" hidden="0" width="-1"/> + <column name="PLG_JUFOE" type="field" hidden="0" width="-1"/> + <column name="VERFLECHTU" type="field" hidden="0" width="-1"/> + <column name="FUNKTIONSB" type="field" hidden="0" width="-1"/> + <column name="T_DATUM" type="field" hidden="0" width="-1"/> + <column name="Impfbez_Nr" type="field" hidden="0" width="-1"/> + <column name="Impfzentru" type="field" hidden="0" width="-1"/> + <column type="actions" hidden="1" width="-1"/> + </columns> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <editform tolerant="1"></editform> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath></editforminitfilepath> + <editforminitcode><![CDATA[# -*- coding: utf-8 -*- +""" +QGIS forms can have a Python function that is called when the form is +opened. + +Use this function to add extra logic to your forms. + +Enter the name of the function in the "Python Init function" +field. +An example follows: +""" +from qgis.PyQt.QtWidgets import QWidget + +def my_form_open(dialog, layer, feature): + geom = feature.geometry() + control = dialog.findChild(QWidget, "MyLineEdit") +]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable> + <field name="AREA" editable="1"/> + <field name="FUNKTIONSB" editable="1"/> + <field name="GEM_SCHL" editable="1"/> + <field name="Impfbez_Nr" editable="1"/> + <field name="Impfzentru" editable="1"/> + <field name="KERNSTADT_" editable="1"/> + <field name="NAME" editable="1"/> + <field name="ORTSRATSBE" editable="1"/> + <field name="ORTSTEIL" editable="1"/> + <field name="OT_SCHL" editable="1"/> + <field name="O_NAME" editable="1"/> + <field name="PERIMETER" editable="1"/> + <field name="PLG_BERATU" editable="1"/> + <field name="PLG_JUFOE" editable="1"/> + <field name="PLG_KITA" editable="1"/> + <field name="PLZ" editable="1"/> + <field name="STADTTEIL" editable="1"/> + <field name="STADTTEILE" editable="1"/> + <field name="STADTTEI_1" editable="1"/> + <field name="S_A_" editable="1"/> + <field name="S_A_ID" editable="1"/> + <field name="T_DATUM" editable="1"/> + <field name="VERFLECHTU" editable="1"/> + <field name="ZVS" editable="1"/> + <field name="fid" editable="1"/> + </editable> + <labelOnTop> + <field name="AREA" labelOnTop="0"/> + <field name="FUNKTIONSB" labelOnTop="0"/> + <field name="GEM_SCHL" labelOnTop="0"/> + <field name="Impfbez_Nr" labelOnTop="0"/> + <field name="Impfzentru" labelOnTop="0"/> + <field name="KERNSTADT_" labelOnTop="0"/> + <field name="NAME" labelOnTop="0"/> + <field name="ORTSRATSBE" labelOnTop="0"/> + <field name="ORTSTEIL" labelOnTop="0"/> + <field name="OT_SCHL" labelOnTop="0"/> + <field name="O_NAME" labelOnTop="0"/> + <field name="PERIMETER" labelOnTop="0"/> + <field name="PLG_BERATU" labelOnTop="0"/> + <field name="PLG_JUFOE" labelOnTop="0"/> + <field name="PLG_KITA" labelOnTop="0"/> + <field name="PLZ" labelOnTop="0"/> + <field name="STADTTEIL" labelOnTop="0"/> + <field name="STADTTEILE" labelOnTop="0"/> + <field name="STADTTEI_1" labelOnTop="0"/> + <field name="S_A_" labelOnTop="0"/> + <field name="S_A_ID" labelOnTop="0"/> + <field name="T_DATUM" labelOnTop="0"/> + <field name="VERFLECHTU" labelOnTop="0"/> + <field name="ZVS" labelOnTop="0"/> + <field name="fid" labelOnTop="0"/> + </labelOnTop> + <widgets/> + <previewExpression>fid</previewExpression> + <mapTip></mapTip> + </maplayer> + <maplayer hasScaleBasedVisibilityFlag="0" simplifyDrawingHints="1" refreshOnNotifyEnabled="0" labelsEnabled="0" simplifyLocal="1" readOnly="0" autoRefreshTime="0" geometry="Polygon" maxScale="0" refreshOnNotifyMessage="" simplifyDrawingTol="1" styleCategories="AllStyleCategories" simplifyAlgorithm="0" autoRefreshEnabled="0" type="vector" simplifyMaxScale="1" minScale="1e+8"> + <extent> + <xmin>611951</xmin> + <ymin>5797784.5</ymin> + <xmax>629677.25</xmax> + <ymax>5817605</ymax> + </extent> + <id>cdb_lines_3f5c3c6d_db6d_4681_9291_7109f8d69f8b</id> + <datasource>./foo.gpkg|layername=cdb_lines</datasource> + <keywordList> + <value></value> + </keywordList> + <layername>cdb_lines</layername> + <srs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title></title> + <abstract></abstract> + <links/> + <fees></fees> + <encoding></encoding> + <crs> + <spatialrefsys> + <proj4></proj4> + <srsid>0</srsid> + <srid>0</srid> + <authid></authid> + <description></description> + <projectionacronym></projectionacronym> + <ellipsoidacronym></ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </crs> + <extent/> + </resourceMetadata> + <provider encoding="UTF-8">ogr</provider> + <vectorjoins/> + <layerDependencies/> + <dataDependencies/> + <legend type="default-vector"/> + <expressionfields/> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <auxiliaryLayer/> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + </flags> + <renderer-v2 attr="typ" forceraster="0" type="categorizedSymbol" enableorderby="0" symbollevels="0"> + <categories> + <category render="true" symbol="0" value="Ortsteil" label="Ortsteil"/> + <category render="true" symbol="1" value="Stadtteil" label="Stadtteil"/> + </categories> + <symbols> + <symbol name="0" alpha="1" type="fill" clip_to_extent="1" force_rhr="0"> + <layer locked="0" enabled="1" pass="0" class="SimpleFill"> + <prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/> + <prop v="207,94,42,255" k="color"/> + <prop v="bevel" k="joinstyle"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="78,70,255,255" k="outline_color"/> + <prop v="solid" k="outline_style"/> + <prop v="0.5" k="outline_width"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="no" k="style"/> + <data_defined_properties> + <Option type="Map"> + <Option name="name" type="QString" value=""/> + <Option name="properties"/> + <Option name="type" type="QString" value="collection"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + <symbol name="1" alpha="1" type="fill" clip_to_extent="1" force_rhr="0"> + <layer locked="0" enabled="1" pass="0" class="SimpleFill"> + <prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/> + <prop v="153,148,255,255" k="color"/> + <prop v="bevel" k="joinstyle"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="153,148,255,255" k="outline_color"/> + <prop v="solid" k="outline_style"/> + <prop v="0.5" k="outline_width"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="no" k="style"/> + <data_defined_properties> + <Option type="Map"> + <Option name="name" type="QString" value=""/> + <Option name="properties"/> + <Option name="type" type="QString" value="collection"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </symbols> + <source-symbol> + <symbol name="0" alpha="1" type="fill" clip_to_extent="1" force_rhr="0"> + <layer locked="0" enabled="1" pass="0" class="SimpleFill"> + <prop v="3x:0,0,0,0,0,0" k="border_width_map_unit_scale"/> + <prop v="145,82,45,255" k="color"/> + <prop v="bevel" k="joinstyle"/> + <prop v="0,0" k="offset"/> + <prop v="3x:0,0,0,0,0,0" k="offset_map_unit_scale"/> + <prop v="MM" k="offset_unit"/> + <prop v="35,35,35,255" k="outline_color"/> + <prop v="solid" k="outline_style"/> + <prop v="0.26" k="outline_width"/> + <prop v="MM" k="outline_width_unit"/> + <prop v="solid" k="style"/> + <data_defined_properties> + <Option type="Map"> + <Option name="name" type="QString" value=""/> + <Option name="properties"/> + <Option name="type" type="QString" value="collection"/> + </Option> + </data_defined_properties> + </layer> + </symbol> + </source-symbol> + <rotation/> + <sizescale/> + </renderer-v2> + <customproperties> + <property value=""id"" key="dualview/previewExpressions"/> + <property value="0" key="embeddedWidgets/count"/> + <property key="variableNames"/> + <property key="variableValues"/> + </customproperties> + <blendMode>0</blendMode> + <featureBlendMode>0</featureBlendMode> + <layerOpacity>1</layerOpacity> + <SingleCategoryDiagramRenderer diagramType="Histogram" attributeLegend="1"> + <DiagramCategory lineSizeScale="3x:0,0,0,0,0,0" scaleBasedVisibility="0" scaleDependency="Area" sizeScale="3x:0,0,0,0,0,0" penAlpha="255" penColor="#000000" maxScaleDenominator="1e+8" rotationOffset="270" backgroundAlpha="255" backgroundColor="#ffffff" enabled="0" barWidth="5" lineSizeType="MM" labelPlacementMethod="XHeight" diagramOrientation="Up" opacity="1" penWidth="0" minScaleDenominator="0" minimumSize="0" height="15" width="15" sizeType="MM"> + <fontProperties style="" description="Noto Sans,9,-1,5,50,0,0,0,0,0"/> + <attribute color="#000000" label="" field=""/> + </DiagramCategory> + </SingleCategoryDiagramRenderer> + <DiagramLayerSettings linePlacementFlags="18" dist="0" priority="0" zIndex="0" showAll="1" placement="1" obstacle="0"> + <properties> + <Option type="Map"> + <Option name="name" type="QString" value=""/> + <Option name="properties"/> + <Option name="type" type="QString" value="collection"/> + </Option> + </properties> + </DiagramLayerSettings> + <geometryOptions geometryPrecision="0" removeDuplicateNodes="0"> + <activeChecks/> + <checkConfiguration/> + </geometryOptions> + <fieldConfiguration> + <field name="fid"> + <editWidget type=""> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="id"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="typ"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="name"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + <field name="ortsrat"> + <editWidget type="TextEdit"> + <config> + <Option/> + </config> + </editWidget> + </field> + </fieldConfiguration> + <aliases> + <alias name="" index="0" field="fid"/> + <alias name="" index="1" field="id"/> + <alias name="" index="2" field="typ"/> + <alias name="" index="3" field="name"/> + <alias name="" index="4" field="ortsrat"/> + </aliases> + <excludeAttributesWMS/> + <excludeAttributesWFS/> + <defaults> + <default applyOnUpdate="0" field="fid" expression=""/> + <default applyOnUpdate="0" field="id" expression=""/> + <default applyOnUpdate="0" field="typ" expression=""/> + <default applyOnUpdate="0" field="name" expression=""/> + <default applyOnUpdate="0" field="ortsrat" expression=""/> + </defaults> + <constraints> + <constraint unique_strength="1" exp_strength="0" constraints="3" notnull_strength="1" field="fid"/> + <constraint unique_strength="1" exp_strength="0" constraints="3" notnull_strength="1" field="id"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="typ"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="name"/> + <constraint unique_strength="0" exp_strength="0" constraints="0" notnull_strength="0" field="ortsrat"/> + </constraints> + <constraintExpressions> + <constraint exp="" desc="" field="fid"/> + <constraint exp="" desc="" field="id"/> + <constraint exp="" desc="" field="typ"/> + <constraint exp="" desc="" field="name"/> + <constraint exp="" desc="" field="ortsrat"/> + </constraintExpressions> + <expressionfields/> + <attributeactions> + <defaultAction value="{00000000-0000-0000-0000-000000000000}" key="Canvas"/> + </attributeactions> + <attributetableconfig sortExpression="" sortOrder="0" actionWidgetStyle="dropDown"> + <columns> + <column name="id" type="field" hidden="0" width="-1"/> + <column name="typ" type="field" hidden="0" width="-1"/> + <column name="name" type="field" hidden="0" width="-1"/> + <column name="ortsrat" type="field" hidden="0" width="-1"/> + <column type="actions" hidden="1" width="-1"/> + </columns> + </attributetableconfig> + <conditionalstyles> + <rowstyles/> + <fieldstyles/> + </conditionalstyles> + <editform tolerant="1"></editform> + <editforminit/> + <editforminitcodesource>0</editforminitcodesource> + <editforminitfilepath></editforminitfilepath> + <editforminitcode><![CDATA[# -*- coding: utf-8 -*- +""" +QGIS forms can have a Python function that is called when the form is +opened. + +Use this function to add extra logic to your forms. + +Enter the name of the function in the "Python Init function" +field. +An example follows: +""" +from qgis.PyQt.QtWidgets import QWidget + +def my_form_open(dialog, layer, feature): + geom = feature.geometry() + control = dialog.findChild(QWidget, "MyLineEdit") +]]></editforminitcode> + <featformsuppress>0</featformsuppress> + <editorlayout>generatedlayout</editorlayout> + <editable> + <field name="id" editable="1"/> + <field name="name" editable="1"/> + <field name="ortsrat" editable="1"/> + <field name="typ" editable="1"/> + </editable> + <labelOnTop> + <field name="id" labelOnTop="0"/> + <field name="name" labelOnTop="0"/> + <field name="ortsrat" labelOnTop="0"/> + <field name="typ" labelOnTop="0"/> + </labelOnTop> + <widgets/> + <previewExpression>id</previewExpression> + <mapTip></mapTip> + </maplayer> + <maplayer hasScaleBasedVisibilityFlag="0" refreshOnNotifyEnabled="0" autoRefreshTime="0" maxScale="0" refreshOnNotifyMessage="" styleCategories="AllStyleCategories" autoRefreshEnabled="0" type="raster" minScale="1e+8"> + <extent> + <xmin>611425.600499999942258</xmin> + <ymin>5808334.13232080265879631</ymin> + <xmax>623219.587000000057742</xmax> + <ymax>5814172.86767920013517141</ymax> + </extent> + <id>osm_85c8eb94_b6fa_437b_b91a_7816ef2e2243</id> + <datasource>GPKG:./foo.gpkg:osm</datasource> + <keywordList> + <value></value> + </keywordList> + <layername>osm</layername> + <srs> + <spatialrefsys> + <proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4> + <srsid>2105</srsid> + <srid>25832</srid> + <authid>EPSG:25832</authid> + <description>ETRS89 / UTM zone 32N</description> + <projectionacronym>utm</projectionacronym> + <ellipsoidacronym>GRS80</ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </srs> + <resourceMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title></title> + <abstract></abstract> + <links/> + <fees></fees> + <encoding></encoding> + <crs> + <spatialrefsys> + <proj4></proj4> + <srsid>0</srsid> + <srid>0</srid> + <authid></authid> + <description></description> + <projectionacronym></projectionacronym> + <ellipsoidacronym></ellipsoidacronym> + <geographicflag>false</geographicflag> + </spatialrefsys> + </crs> + <extent/> + </resourceMetadata> + <provider>gdal</provider> + <noData> + <noDataList useSrcNoData="0" bandNo="1"/> + <noDataList useSrcNoData="0" bandNo="2"/> + <noDataList useSrcNoData="0" bandNo="3"/> + <noDataList useSrcNoData="0" bandNo="4"/> + </noData> + <map-layer-style-manager current="default"> + <map-layer-style name="default"/> + </map-layer-style-manager> + <flags> + <Identifiable>1</Identifiable> + <Removable>1</Removable> + <Searchable>1</Searchable> + </flags> + <customproperties> + <property value="Value" key="identify/format"/> + </customproperties> + <pipe> + <rasterrenderer opacity="1" alphaBand="4" redBand="1" type="multibandcolor" greenBand="2" blueBand="3"> + <rasterTransparency/> + <minMaxOrigin> + <limits>MinMax</limits> + <extent>WholeRaster</extent> + <statAccuracy>Estimated</statAccuracy> + <cumulativeCutLower>0.02</cumulativeCutLower> + <cumulativeCutUpper>0.98</cumulativeCutUpper> + <stdDevFactor>2</stdDevFactor> + </minMaxOrigin> + <redContrastEnhancement> + <minValue>0</minValue> + <maxValue>255</maxValue> + <algorithm>NoEnhancement</algorithm> + </redContrastEnhancement> + <greenContrastEnhancement> + <minValue>0</minValue> + <maxValue>255</maxValue> + <algorithm>NoEnhancement</algorithm> + </greenContrastEnhancement> + <blueContrastEnhancement> + <minValue>0</minValue> + <maxValue>255</maxValue> + <algorithm>NoEnhancement</algorithm> + </blueContrastEnhancement> + </rasterrenderer> + <brightnesscontrast contrast="0" brightness="0"/> + <huesaturation grayscaleMode="0" saturation="0" colorizeStrength="100" colorizeBlue="128" colorizeGreen="128" colorizeRed="255" colorizeOn="0"/> + <rasterresampler maxOversampling="2"/> + </pipe> + <blendMode>0</blendMode> + </maplayer> + </projectlayers> + <layerorder> + <layer id="osm_85c8eb94_b6fa_437b_b91a_7816ef2e2243"/> + <layer id="cdb_labels_8ee74af8_e7ba_4d80_9e0d_5b0b956d3daf"/> + <layer id="cdb_lines_3f5c3c6d_db6d_4681_9291_7109f8d69f8b"/> + <layer id="as_areas_bbe3c71b_356c_49f5_9fc2_ae771bcdd467"/> + <layer id="as_symbols_3a1cdeef_9082_4d07_be5c_47c956bd7e76"/> + </layerorder> + <properties> + <Measurement> + <AreaUnits type="QString">m2</AreaUnits> + <DistanceUnits type="QString">meters</DistanceUnits> + </Measurement> + <WMSUseLayerIDs type="bool">false</WMSUseLayerIDs> + <WMSPrecision type="QString">8</WMSPrecision> + <WMTSJpegLayers> + <Project type="bool">false</Project> + <Group type="QStringList"/> + <Layer type="QStringList"/> + </WMTSJpegLayers> + <WMTSPngLayers> + <Project type="bool">false</Project> + <Group type="QStringList"/> + <Layer type="QStringList"/> + </WMTSPngLayers> + <WMSUrl type="QString"></WMSUrl> + <SpatialRefSys> + <ProjectionsEnabled type="int">1</ProjectionsEnabled> + </SpatialRefSys> + <Legend> + <filterByMap type="bool">false</filterByMap> + </Legend> + <WMTSLayers> + <Project type="bool">false</Project> + <Group type="QStringList"/> + <Layer type="QStringList"/> + </WMTSLayers> + <WMSServiceTitle type="QString"></WMSServiceTitle> + <Macros> + <pythonCode type="QString"></pythonCode> + </Macros> + <WMTSUrl type="QString"></WMTSUrl> + <Paths> + <Absolute type="bool">false</Absolute> + </Paths> + <WMTSMinScale type="int">5000</WMTSMinScale> + <WMSImageQuality type="int">90</WMSImageQuality> + <WMSServiceAbstract type="QString"></WMSServiceAbstract> + <WMSOnlineResource type="QString"></WMSOnlineResource> + <WCSLayers type="QStringList"/> + <Gui> + <CanvasColorGreenPart type="int">255</CanvasColorGreenPart> + <SelectionColorRedPart type="int">255</SelectionColorRedPart> + <SelectionColorGreenPart type="int">255</SelectionColorGreenPart> + <CanvasColorBluePart type="int">255</CanvasColorBluePart> + <SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart> + <SelectionColorBluePart type="int">0</SelectionColorBluePart> + <CanvasColorRedPart type="int">255</CanvasColorRedPart> + </Gui> + <Measure> + <Ellipsoid type="QString">GRS80</Ellipsoid> + </Measure> + <WFSTLayers> + <Update type="QStringList"/> + <Delete type="QStringList"/> + <Insert type="QStringList"/> + </WFSTLayers> + <WMSSegmentizeFeatureInfoGeometry type="bool">false</WMSSegmentizeFeatureInfoGeometry> + <WFSUrl type="QString"></WFSUrl> + <WCSUrl type="QString"></WCSUrl> + <PositionPrecision> + <Automatic type="bool">true</Automatic> + <DecimalPlaces type="int">2</DecimalPlaces> + <DegreeFormat type="QString">MU</DegreeFormat> + </PositionPrecision> + <WMSAddWktGeometry type="bool">false</WMSAddWktGeometry> + <WMSServiceCapabilities type="bool">true</WMSServiceCapabilities> + <WMSFees type="QString">conditions unknown</WMSFees> + <WMSAccessConstraints type="QString">None</WMSAccessConstraints> + <WMSContactOrganization type="QString"></WMSContactOrganization> + <WMSContactMail type="QString"></WMSContactMail> + <PAL> + <CandidatesPolygon type="int">30</CandidatesPolygon> + <ShowingPartialsLabels type="bool">true</ShowingPartialsLabels> + <TextFormat type="int">0</TextFormat> + <DrawRectOnly type="bool">false</DrawRectOnly> + <SearchMethod type="int">0</SearchMethod> + <CandidatesLine type="int">50</CandidatesLine> + <DrawOutlineLabels type="bool">true</DrawOutlineLabels> + <CandidatesPoint type="int">16</CandidatesPoint> + <ShowingCandidates type="bool">false</ShowingCandidates> + <ShowingAllLabels type="bool">false</ShowingAllLabels> + </PAL> + <WMSKeywordList type="QStringList"> + <value></value> + </WMSKeywordList> + <WMSContactPosition type="QString"></WMSContactPosition> + <DefaultStyles> + <Line type="QString"></Line> + <ColorRamp type="QString"></ColorRamp> + <RandomColors type="bool">true</RandomColors> + <Marker type="QString"></Marker> + <Fill type="QString"></Fill> + <Opacity type="double">1</Opacity> + </DefaultStyles> + <WMSRequestDefinedDataSources type="bool">false</WMSRequestDefinedDataSources> + <WFSLayers type="QStringList"/> + <WMSContactPhone type="QString"></WMSContactPhone> + <WMSContactPerson type="QString"></WMSContactPerson> + </properties> + <visibility-presets/> + <transformContext/> + <projectMetadata> + <identifier></identifier> + <parentidentifier></parentidentifier> + <language></language> + <type></type> + <title>QGIS Server - Grouped Layer</title> + <abstract></abstract> + <contact> + <name></name> + <organization></organization> + <position></position> + <voice></voice> + <fax></fax> + <email></email> + <role></role> + </contact> + <links/> + <author>Burghardt Scholle</author> + <creation>2018-12-11T10:39:23</creation> + </projectMetadata> + <Annotations/> + <Layouts/> +</qgis> diff --git a/tests/testdata/qgis_server/wfs_describeFeatureType_1_1_0_virtual_fields.txt b/tests/testdata/qgis_server/wfs_describeFeatureType_1_1_0_virtual_fields.txt new file mode 100644 index 0000000000..b371a2f64e --- /dev/null +++ b/tests/testdata/qgis_server/wfs_describeFeatureType_1_1_0_virtual_fields.txt @@ -0,0 +1,21 @@ + +Content-Type: text/xml; charset=utf-8 + +<schema xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.qgis.org/gml" xmlns:qgs="http://www.qgis.org/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> + <import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"/> + <element type="qgs:layer_with_short_nameType" name="layer_with_short_name" substitutionGroup="gml:_Feature"/> + <complexType name="layer_with_short_nameType"> + <complexContent> + <extension base="gml:AbstractFeatureType"> + <sequence> + <element maxOccurs="1" type="gml:PointPropertyType" minOccurs="0" name="geometry"/> + <element type="long" nillable="true" name="id"/> + <element type="string" nillable="true" name="name"/> + <element type="string" nillable="true" name="utf8nameè"/> + <element type="decimal" nillable="true" name="virtdbl"/> + <element type="int" nillable="true" name="virtint"/> + </sequence> + </extension> + </complexContent> + </complexType> +</schema> diff --git a/tests/testdata/qgis_server/wms_getcapabilities_empty_layer.txt b/tests/testdata/qgis_server/wms_getcapabilities_empty_layer.txt new file mode 100644 index 0000000000..773bd2a243 --- /dev/null +++ b/tests/testdata/qgis_server/wms_getcapabilities_empty_layer.txt @@ -0,0 +1,132 @@ +Content-Length: 4920 +Content-Type: text/xml; charset=utf-8 + +<?xml version="1.0" encoding="utf-8"?> +<WMS_Capabilities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qgs="http://www.qgis.org/wms" xmlns="http://www.opengis.net/wms" xsi:schemaLocation="http://www.opengis.net/wms http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/sld_capabilities.xsd https://www.qgis.org/?SERVICE=WMS&REQUEST=GetSchemaExtension" version="1.3.0" xmlns:sld="http://www.opengis.net/sld"> + <Service> + <Name>WMS</Name> + <KeywordList> + <Keyword vocabulary="ISO">infoMapAccessService</Keyword> + </KeywordList> + <OnlineResource xlink:type="simple" xlink:href="https://www.qgis.org/" xmlns:xlink="http://www.w3.org/1999/xlink"/> + <Fees>conditions unknown</Fees> + <AccessConstraints>None</AccessConstraints> + </Service> + <Capability> + <Request> + <GetCapabilities> + <Format>text/xml</Format> + <DCPType> + <HTTP> + <Get> + <OnlineResource xlink:type="simple" xlink:href="https://www.qgis.org/?" xmlns:xlink="http://www.w3.org/1999/xlink"/> + </Get> + </HTTP> + </DCPType> + </GetCapabilities> + <GetMap> + <Format>image/jpeg</Format> + <Format>image/png</Format> + <Format>image/png; mode=16bit</Format> + <Format>image/png; mode=8bit</Format> + <Format>image/png; mode=1bit</Format> + <Format>application/dxf</Format> + <DCPType> + <HTTP> + <Get> + <OnlineResource xlink:type="simple" xlink:href="https://www.qgis.org/?" xmlns:xlink="http://www.w3.org/1999/xlink"/> + </Get> + </HTTP> + </DCPType> + </GetMap> + <GetFeatureInfo> + <Format>text/plain</Format> + <Format>text/html</Format> + <Format>text/xml</Format> + <Format>application/vnd.ogc.gml</Format> + <Format>application/vnd.ogc.gml/3.1.1</Format> + <DCPType> + <HTTP> + <Get> + <OnlineResource xlink:type="simple" xlink:href="https://www.qgis.org/?" xmlns:xlink="http://www.w3.org/1999/xlink"/> + </Get> + </HTTP> + </DCPType> + </GetFeatureInfo> + <sld:GetLegendGraphic> + <Format>image/jpeg</Format> + <Format>image/png</Format> + <DCPType> + <HTTP> + <Get> + <OnlineResource xlink:type="simple" xlink:href="https://www.qgis.org/?" xmlns:xlink="http://www.w3.org/1999/xlink"/> + </Get> + </HTTP> + </DCPType> + </sld:GetLegendGraphic> + <sld:DescribeLayer> + <Format>text/xml</Format> + <DCPType> + <HTTP> + <Get> + <OnlineResource xlink:type="simple" xlink:href="https://www.qgis.org/?" xmlns:xlink="http://www.w3.org/1999/xlink"/> + </Get> + </HTTP> + </DCPType> + </sld:DescribeLayer> + <qgs:GetStyles> + <Format>text/xml</Format> + <DCPType> + <HTTP> + <Get> + <OnlineResource xlink:type="simple" xlink:href="https://www.qgis.org/?" xmlns:xlink="http://www.w3.org/1999/xlink"/> + </Get> + </HTTP> + </DCPType> + </qgs:GetStyles> + </Request> + <Exception> + <Format>XML</Format> + </Exception> + <sld:UserDefinedSymbolization SupportSLD="1" RemoteWCS="0" UserLayer="0" InlineFeature="0" RemoteWFS="0" UserStyle="1"/> + <Layer queryable="1"> + <KeywordList> + <Keyword vocabulary="ISO">infoMapAccessService</Keyword> + </KeywordList> + <CRS>CRS:84</CRS> + <CRS>EPSG:3857</CRS> + <CRS>EPSG:4326</CRS> + <EX_GeographicBoundingBox> + <westBoundLongitude>6.56502</westBoundLongitude> + <eastBoundLongitude>15.2244</eastBoundLongitude> + <southBoundLatitude>42.8754</southBoundLatitude> + <northBoundLatitude>45.8285</northBoundLatitude> + </EX_GeographicBoundingBox> + <BoundingBox maxy="15.2244" maxx="45.8285" miny="6.56502" CRS="EPSG:4326" minx="42.8754"/> + <BoundingBox maxy="5.75291e+06" maxx="1.69477e+06" miny="5.29302e+06" CRS="EPSG:3857" minx="730815"/> + <Layer queryable="1"> + <Name>bug_gh30264_empty_layer_wrong_bbox</Name> + <Title>bug_gh30264_empty_layer_wrong_bbox</Title> + <CRS>CRS:84</CRS> + <CRS>EPSG:3857</CRS> + <CRS>EPSG:4326</CRS> + <EX_GeographicBoundingBox> + <westBoundLongitude>6.56502</westBoundLongitude> + <eastBoundLongitude>15.2244</eastBoundLongitude> + <southBoundLatitude>42.8754</southBoundLatitude> + <northBoundLatitude>45.8285</northBoundLatitude> + </EX_GeographicBoundingBox> + <BoundingBox maxy="15.2244" maxx="45.8285" miny="6.56502" CRS="EPSG:4326" minx="42.8754"/> + <BoundingBox maxy="5.75291e+06" maxx="1.69477e+06" miny="5.29302e+06" CRS="EPSG:3857" minx="730815"/> + <Style> + <Name>default</Name> + <Title>default</Title> + <LegendURL> + <Format>image/png</Format> + <OnlineResource xlink:type="simple" xlink:href="https://www.qgis.org/?&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetLegendGraphic&LAYER=bug_gh30264_empty_layer_wrong_bbox&FORMAT=image/png&STYLE=default&SLD_VERSION=1.1.0" xmlns:xlink="http://www.w3.org/1999/xlink"/> + </LegendURL> + </Style> + </Layer> + </Layer> + </Capability> +</WMS_Capabilities> diff --git a/tests/testdata/test_plugin_path/PluginPathTest/__init__.py b/tests/testdata/test_plugin_path/PluginPathTest/__init__.py index 588f131a4a..1d6aee4865 100644 --- a/tests/testdata/test_plugin_path/PluginPathTest/__init__.py +++ b/tests/testdata/test_plugin_path/PluginPathTest/__init__.py @@ -21,7 +21,7 @@ __author__ = 'Hugo Mercier' __date__ = 'July 2013' __copyright__ = '(C) 2013, Hugo Mercier' # This will get replaced with a git SHA1 when you do a git archive -__revision__ = '04ee8e07611af632be18601ba0081fb84b0c437b' +__revision__ = '54585165bba895db4c83ffda980be7778246f2c5' import os -- GitLab