Proiecții suportate

Sisteme de coordonate de referință

Sisteme de coordonate de referință (SIR) sunt încapsulate de către clasa QgsCoordinateReferenceSystem. Instanțele acestei clase pot fi create prin mai multe moduri diferite:

  • specifică CRS-ul după ID-ul său

    # PostGIS SRID 4326 is allocated for WGS84
    crs = QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.PostgisCrsId)
    

    QGIS folosește trei ID-uri diferite pentru fiecare sistem de referință:

    • PostgisCrsId — ID-uri folosite în interiorul bazei de date PostGIS.

    • InternalCrsId — ID-uri folosite în baza de date QGIS.

    • EpsgCrsId — ID-uri asignate de către organizația EPSG

    În cazul în care nu se specifică altfel în al doilea parametru, PostGIS SRID este utilizat în mod implicit.

  • specifică CRS-ul prin well-known text (WKT)

    wkt = 'GEOGCS["WGS84", DATUM["WGS84", SPHEROID["WGS84", 6378137.0, 298.257223563]],'
           PRIMEM["Greenwich", 0.0], UNIT["degree",0.017453292519943295],'
           AXIS["Longitude",EAST], AXIS["Latitude",NORTH]]'
    crs = QgsCoordinateReferenceSystem(wkt)
  • creați un CRS nevalid iar apoi utilizați una din funcțiile create*() pentru a-l inițializa. În următorul exemplu vom folosi șirul Proj4 pentru a inițializa proiecția

    crs = QgsCoordinateReferenceSystem()
    crs.createFromProj4("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
    

Este înțelept să verificăm dacă a avut loc crearea cu succes a CRS-ului (de exemplu, efectuând o căutare în baza de date): isValid() trebuie să întoarcă True.

Rețineți că pentru inițializarea sistemelor de referință spațiale, QGIS trebuie să caute valorile corespunzătoare în baza de date internă srs.db. Astfel, în cazul în care creați o aplicație independentă va trebui să stabiliți corect căile, cu ajutorul QgsApplication.setPrefixPath(), în caz contrar baza de date nu va fi găsită. Dacă executați comenzile din consola QGIS python sau dezvoltați vreun plugin, atunci totul este în regulă: totul este deja configurat pentru dvs.

Accesarea informațiilor sistemului de referință spațial

print "QGIS CRS ID:", crs.srsid()
print "PostGIS SRID:", crs.srid()
print "EPSG ID:", crs.epsg()
print "Description:", crs.description()
print "Projection Acronym:", crs.projectionAcronym()
print "Ellipsoid Acronym:", crs.ellipsoidAcronym()
print "Proj4 String:", crs.proj4String()
# check whether it's geographic or projected coordinate system
print "Is geographic:", crs.geographicFlag()
# check type of map units in this CRS (values defined in QGis::units enum)
print "Map units:", crs.mapUnits()

Proiecții

Puteți face transformarea între diferitele sisteme de referință spațiale, cu ajutorul clasei QgsCoordinateTransform. Cel mai simplu mod de a o folosi este de a crea CRS-urile sursă și destinație și să construiți cu ele o instanță QgsCoordinateTransform. Apoi, doar repetați apelul funcției transform() pentru a realiza transformarea. În mod implicit, aceasta face transformarea în ordinea deja precizată, dar este capabilă de a face și transformarea inversă

crsSrc = QgsCoordinateReferenceSystem(4326)    # WGS 84
crsDest = QgsCoordinateReferenceSystem(32633)  # WGS 84 / UTM zone 33N
xform = QgsCoordinateTransform(crsSrc, crsDest)

# forward transformation: src -> dest
pt1 = xform.transform(QgsPoint(18,5))
print "Transformed point:", pt1

# inverse transformation: dest -> src
pt2 = xform.transform(pt1, QgsCoordinateTransform.ReverseTransform)
print "Transformed back:", pt2