我试图把一个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这是否关联到? 更一般地,我怎么可以查找SRID基于PRJ文件中找到的信息? 是否有一个查找表的地方,列出所有SRID的和他们的“GEOGCS”等同?
作为参考,这里是一些使用导入的数据的图像srid=4269
(I也尝试4326,并得到完全相同的结果):
图像http://img245.imageshack.us/img245/2545/4326sand.png
黄色是我的数据从SHP进口的,背景是从的OpenLayers(从GeoDjango内置管理员)。 这是否意味着我使用了错误的SRID,或者这只是预期误差幅度?
SHP文件是从这里
为了阐述提喻法 “的回答中,SRID有时被称为‘EPSG’的代码。 该SRID / EPSG代码是一个事实上的短手预测的知名文本表示。
你可以在SRID表的快速搜索,看看是否能找到一个确切的或类似的比赛:
SELECT srid, srtext, proj4text FROM spatial_ref_sys WHERE srtext ILIKE '%BLAH%'
以上混合物发现http://www.bostongis.com/?content_name=postgis_tut01 。
您还可以在搜索spatialreference.org对这类事情。 搜索工具是原始的,所以你可能需要使用谷歌搜索,并指定网站,但任何结果将显示您的ESRI PRJ内容时,PostGIS的SQL INSERT,和一堆其他表示。
我觉得你PRJ是: http://spatialreference.org/ref/sr-org/15/
Prj2EPSG是一个小网站,旨在正是这个问题; 粘贴PRJ内容,并会尽力查找匹配的EPSG。 他们也有一个Web服务API 。 这不是一个精确的科学。 他们似乎利用Lucene和EPSG数据库,为比赛做文本搜索。
这些数据似乎是NAD83,其中有4269.你的PostGIS数据库的SRID有spatial_ref_sys
表这是SRID查找表。
如果数据相同与4269(NAD83)和4326(WGS84)的SRID,那么这里有些不对劲。
快去下载GDAL公用事业的ogrinfo(这会吐投影信息)和ogr2ogr工具是非常宝贵的。
詹姆斯已经给了一个链接到spatialreference.org 。 这有助于找到空间参考信息...我认为你没有加载spatial_ref_sys.sql
当你准备好PostGIS的实例 。
坦白地说,我不认为这个问题是在事物的PostGIS的一面。
我通常保持在我的PostGIS DBS不同SRIDs我的数据。 但是,我总是需要投射到输出SRS。 你是显示OpenStreetMap的预渲染的片段,我敢打赌,他们一直在使用SRID 900913(画了谷歌地图的修改墨卡托投影 ,现在每个人都使用渲染 )。
我给你的建议是:
1 - 坐落在的OpenLayers代码,您是从什么读瓷砖相匹配的右投影。
2:请在您想要的任何SRID数据库中的数据(只要它是正确的,当然)。
3.-确保您使用的是生成数据图像(ArcGIS Server时,Mapserver的,的GeoServer或不管它是什么)服务器重新投影到同一SRS。
一切都将匹配。
干杯
使用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')
一定要看一看: http://www.epsg-registry.org/
通过筛选选项使用查询,并输入:北美基准1983年。
该收益率 - > EPSG:6269。
希望这对你的作品。