36

SHPファイルをPostGISデータベースに入れようとしていますが、データが少しずれています。これは、間違ったSRIDを使用しているためだと思います。PRJファイルの内容は次のとおりです。

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

これはどのSRIDと相関関係がありますか?さらに一般的には、PRJファイルにある情報に基づいてSRIDを検索するにはどうすればよいですか?すべてのSRIDとそれに相当する「geogcs」をリストするルックアップテーブルがどこかにありますか?

srid=4269および4326を使用してインポートされたデータは、まったく同じ結果でした。

これは、間違ったSRIDを使用していることを意味しますか、それともこれは予想される許容誤差ですか?

shpファイルはここからです。

4

6 に答える 6

24

synecdocheの回答を詳しく説明するために、SRID は「EPSG」コードと呼ばれることもあります。SRID/EPSG コードは、射影の Well-Known-Text 表現の事実上の省略形です。

SRID テーブルでクイック検索を実行して、完全または類似の一致が見つかるかどうかを確認できます。
SELECT srid, srtext, proj4text FROM spatial_ref_sys WHERE srtext ILIKE '%BLAH%'

上記はhttp://www.bostongis.com/?content_name=postgis_tut01にあります。

これらの種類については、 spatialreference.orgで検索することもできます。検索ツールは原始的であるため、Google 検索を使用してサイトを指定する必要がある場合がありますが、結果には ESRI PRJ コンテンツ、PostGIS SQL INSERT、およびその他の表現が多数表示されます。

あなたのPRJはhttp://spatialreference.org/ref/sr-org/15/ にあると思います

于 2009-10-12T19:58:11.917 に答える
21

Prj2EPSGはまさにこの問題を狙った小さな Web サイトです。PRJ の内容を貼り付けると、一致する EPSG を見つけるために最善を尽くします。また、Web サービス APIもあります。それは正確な科学ではありません。Lucene と EPSG データベースを使用して、一致するテキスト検索を行っているようです。

于 2012-12-06T22:53:40.353 に答える
12

データは NAD83 のようで、SRID は 4269 です。PostGIS データベースにspatial_ref_sysは、SRID ルックアップ テーブルであるテーブルがあります。

4269 (NAD83) と 4326 (WGS84) の SRID でデータが同じように見える場合は、何か問題があります。

于 2009-10-09T03:12:31.500 に答える
8

GDALユーティリティ、ogrinfo(投影情報を吐き出す)、ogr2ogrユーティリティをダウンロードしてください。非常に貴重です。

Jamesはすでにspatialreference.orgへのリンクを提供しています。これは、空間参照情報を見つけるのに役立ちます... postgisインスタンスspatial_ref_sys.sqlを準備したときにロードしたと思います。

そして正直なところ、問題はPostGIS側にあるとは思いません。

私は通常、PostGISデータベースのさまざまなSRIDにデータを保持しています。ただし、常に出力SRSに投影する必要があります。あなたはOpenStreetMapの事前にレンダリングされたタイルを表示していますが、それらはSRID 900913(現在誰もがレンダリングに使用しているGoogleマップの修正されたメルカトル図法)を使用して描画されているに違いありません。

あなたへの私の推薦は:

1-読み取りているタイルに一致するOpenLayersコードで正しい投影を設定します。

2.-データベース内のデータを任意のSRIDで保持します(もちろん正しい限り)。

3.-データから画像を生成するために使用しているサーバー(ArcGISサーバー、Mapserver、GeoServerなど)が同じSRSに再投影されていることを確認します。

すべてが一致します。

乾杯

于 2009-10-15T18:20:17.373 に答える
7

コードを決定するには、GDAL の OSR Python モジュールを使用します。

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')
于 2012-05-29T22:53:35.803 に答える
1

必ずご覧ください:http ://www.epsg-registry.org/

[フィルターによるクエリ]オプションを使用して、「北米測地系1983」と入力します。

これにより、-> EPSG:6269が得られます。

これがあなたのために働くことを願っています。

于 2009-10-25T03:35:43.413 に答える