Comment savez-vous quel SRID utiliser pour un fichier shp?

j'essaie de mettre un fichier SHP dans ma base de données PostGIS, les données sont juste un peu hors service. Je pense que c'est parce que j'utilise le mauvais SRID. Le contenu du fichier PRJ est le suivant:

GEOGCS["GCS_North_American_1983",
DATUM["D_North_American_1983",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]]

à quoi est-il corrélé? Et plus généralement, Comment puis-je consulter le SRID à partir de l'information trouvée dans le fichier PRJ? Y a-t-il une table de recherche quelque part qui répertorie tous les SRID et leurs équivalents 'geogcs'?

pour référence, voici une image de quelques-unes des données importées en utilisant srid=4269 (j'ai également essayé 4326 et obtenu les mêmes résultats exacts):

image http://img245.imageshack.us/img245/2545/4326sand.png

le jaune est mes données importées du SHP, et l'arrière-plan est des openlayers (de l'admin geodjango). Est-ce que cela signifie que j'utilise le mauvais SRID, ou est-ce juste la marge d'erreur attendue?

The shp le fichier est de ici

34
demandé sur priestc 2009-10-09 04:00:25

6 réponses

pour développer la réponse de synectoche , le SRID est parfois appelé un code" EPSG". Le code SRID/EPSG est un raccourci de facto pour les représentations textuelles bien connues des projections.

vous pouvez faire une recherche rapide sur la table SRID pour voir si vous pouvez trouver une correspondance exacte ou similaire:

SELECT srid, srtext, proj4text FROM spatial_ref_sys WHERE srtext ILIKE '%BLAH%'

ci-dessus a été trouvé à http://www.bostongis.com/?content_name=postgis_tut01 .

vous pouvez aussi rechercher sur spatialreference.org pour ce genre de choses. L'outil de recherche est primitif de sorte que vous pouvez avoir à utiliser une recherche Google et spécifier le site, mais les résultats vous montreront le contenu ESRI PRJ, L'INSERT SQL PostGIS, et un tas d'autres représentations.

je pense que votre PRJ est à: http://spatialreference.org/ref/sr-org/15/

23
répondu James Schek 2017-05-23 10:29:36

Prj2EPSG est un petit site web qui vise exactement ce problème; coller dans le contenu de PRJ et il fait de son mieux pour trouver un EPSG correspondant. Ils ont également un API de service web . Ce n'est pas une science exacte. Ils semblent utiliser Lucene et la base de données EPSG pour effectuer des recherches de correspondances.

18
répondu Nelson 2015-01-31 02:44:37

Les données semblent être NAD83, qui a un SRID de 4269. Votre base de données PostGIS a une table spatial_ref_sys qui est la table de recherche SRID.

si les données sont les mêmes avec un SRID de 4269 (NAD83) et 4326 (WGS84), alors il y a quelque chose qui ne va pas.

11
répondu synecdoche 2009-10-09 03:12:31

aller et télécharger le GDAL utilities , l'ogrinfo (qui cracherait l'information de projection) et ogr2ogr utilities sont inestimables.

James a déjà donné un lien vers spatialreference.org . Cela aide à trouver des informations de référence spatiale... Je suppose que vous avez chargé le spatial_ref_sys.sql quand vous avez préparé votre instance postgis .

et pour être honnête, je ne pense pas que le le problème est dans le côté PostGIS des choses.

je garde habituellement mes données dans différents SRIDs dans mon PostGIS dbs. Cependant, j'ai toujours besoin de pour projeter à la sortie SRS . Vous montrez des carreaux pré-rendus OpenStreetMap, et je parie qu'ils ont été dessinés à l'aide de SRID 900913 ( la projection mercator modifiée de Google Map que maintenant tout le monde utilise à render ).

ma recommandation pour vous est:

1-Définissez la bonne projection dans le code OpenLayers qui correspond aux tuiles que vous lisez.

2.- Conserver les données dans la base de données dans le SRID que vous voulez (aussi longtemps que c'est correct bien sûr).

3.- Assurez-vous que le serveur que vous utilisez pour générer les images à partir de vos données (serveur ArcGIS, Mapserver, GeoServer ou quoi que ce soit d'autre) est reprosé à ce même SRS.

tout ira bien.

Cheers

7
répondu rburhum 2009-10-15 18:20:17

utilisez le module Python OSR de GDAL pour déterminer le code:

from osgeo import osr

srsWkt = '''GEOGCS["GCS_North_American_1983",
DATUM["D_North_American_1983",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]]'''

# Load in the projection WKT
sr = osr.SpatialReference(srsWkt)

# Try to determine the EPSG/SRID code
res = sr.AutoIdentifyEPSG()
if res == 0: # success
    print('SRID=' + sr.GetAuthorityCode(None))
    # SRID=4269
else:
    print('Could not determine SRID')
6
répondu Mike T 2012-05-29 22:53:35

assurez-vous de jeter un oeil à: http://www.epsg-registry.org/

utilisez L'option Query by Filter et enter: North American Datum 1983.

Cela donne -> EPSG:6269.

Espérons que cela fonctionne pour vous.

1
répondu Doug 2009-10-25 03:35:43