Skąd wiesz, jakiego SRID użyć do pliku shp?

Próbuję umieścić plik SHP w mojej bazie PostGIS, dane są tylko trochę wyłączone. Myślę, że to dlatego, że używam niewłaściwego SRID. Zawartość pliku PRJ jest następująca:

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]]

Z czym SRID to koreluje? I bardziej ogólnie, jak mogę wyszukać SRID na podstawie informacji znalezionych w pliku PRJ? Czy istnieje gdzieś tabela wyszukiwania, która zawiera listę wszystkich srid i ich odpowiedników "geogcs"?

Dla odniesienia, oto obraz niektórych danych zaimportowane za pomocą srid=4269 (próbowałem również 4326 i dostałem dokładnie takie same wyniki):

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

Żółty to moje dane importowane z SHP, a tło jest z openlayers (z geodjango admin). Czy to oznacza, że używam niewłaściwego SRID, czy jest to tylko oczekiwany margines błędu?

Plik shp pochodzi z tutaj

Author: priestc, 2009-10-09

6 answers

Aby rozwinąć odpowiedź synekdoche , srid jest czasami nazywany kodem "EPSG". Kod SRID / EPSG jest skrótem defacto dla dobrze znanych reprezentacji tekstowych projekcji.

Możesz wykonać szybkie wyszukiwanie w tabeli SRID, aby sprawdzić, czy możesz znaleźć dokładne lub podobne dopasowanie:
SELECT srid, srtext, proj4text FROM spatial_ref_sys WHERE srtext ILIKE '%BLAH%'

Powyżej znaleziono w http://www.bostongis.com/?content_name=postgis_tut01 .

Możesz także wyszukać na spatialreference.org do tego rodzaju rzeczy. Narzędzie wyszukiwania jest prymitywne, więc być może będziesz musiał użyć wyszukiwarki Google i określić witrynę, ale wszelkie wyniki pokażą ci zawartość ESRI PRJ, wstawkę PostGIS SQL i kilka innych reprezentacji.

Myślę, że Twój PRJ jest na: http://spatialreference.org/ref/sr-org/15/

 23
Author: James Schek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:29:36

Prj2EPSG to mała strona, której celem jest dokładnie ten problem; wklej w treści PRJ i stara się znaleźć pasujący EPSG. Mają również Web service API . To nie jest nauka ścisła. Używają Lucene i bazy danych EPSG do wyszukiwania dopasowań.

 18
Author: Nelson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-31 02:44:37

Dane wydają się być NAD83, który ma SRID 4269. Twoja baza danych PostGIS ma tabelę spatial_ref_sys, która jest tabelą wyszukiwania SRID.

Jeśli dane wyglądają tak samo z SRID 4269 (NAD83) i 4326 (WGS84), to coś jest nie tak.

 11
Author: synecdoche,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-09 03:12:31

Idź i pobierz GDAL utilities , ogrinfo (które pluje informacje o projekcji) i ogr2ogr utilities są nieocenione.

James dał już link do spatialreference.org . to pomaga znaleźć przestrzenne informacje odniesienia... Zakładam, że załadowałeś spatial_ref_sys.sql kiedy przygotowywałeś swoją instancję postgis .

I szczerze mówiąc, nie sądzę, żeby problem tkwił po stronie Postgisa.

Zazwyczaj przechowuję swoje dane w różnych SRIDs w moim PostGIS dbs. Jednak zawsze potrzebuję , aby projektować na wyjście SRS. Pokazujesz wstępnie renderowane kafelki OpenStreetMap i założę się, że zostały narysowane za pomocą SRID 900913 (zmodyfikowana projekcja Mercatora Google map, której teraz każdy używa do render).

Moja rekomendacja dla ciebie to:

1-ustaw odpowiednią projekcję w kodzie OpenLayers, która pasuje do dowolnych kafelków, z których czytasz.

2.- Przechowywać dane w baza danych w dowolnych SRIDACH (o ile oczywiście jest poprawna).

3.- Upewnij się, że serwer, którego używasz do generowania obrazów z Twoich danych (serwer ArcGIS, Mapserver, GeoServer lub cokolwiek to jest) jest reprojecting do tego samego SRS.

Wszystko się zgadza.

Cheers

 7
Author: rburhum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-15 18:20:17

Użyj GDAL ' s OSR Python module aby określić kod:

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
Author: Mike T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-29 22:53:35

Zobacz koniecznie: http://www.epsg-registry.org/

Użyj opcji Query by Filter i wpisz: North American Datum 1983.

To daje - > EPSG: 6269.

Mam nadzieję, że to zadziała dla Ciebie.

 1
Author: Doug,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-25 03:35:43