我有一个项目,正在从文本文件中读取几何对象以将其放入ArcSDE。这些几何对象有一个关联的EPSG代码,我正在寻找一种方法来确保完成后它们处于正确的投影中。

已经查看了工厂代码我感兴趣的项目(GCS GDA94; EPSG:4283,和VicGrid 94; EPSG:3111)对它来说似乎是EPSG代码直接对应于用于空间参考的ESRI工厂代码(此处和这里)。这很棒,因为这意味着我不必担心导航到投影文件来创建SpatialReference对象,例如在下面的代码中:

 import arcpy

# Create a spatial reference object using a factory code
#
sr = arcpy.SpatialReference()
sr.factoryCode = int(epsg_code.lstrip("EPSG:"))
sr.create()
 


不幸的是,我在ESRI文档中找不到任何引用来说明这是否一直成立-我想是的,但是我想相当确定。有人知道我可以找到哪里吗?

#1 楼

如果Esri知名ID低于32767,则它对应于EPSG ID。 32767或更高版本的WKID是Esri定义的。该对象可能不在EPSG大地测量参数数据集中,或者可能不会添加。如果以后将一个对象添加到EPSG数据集中,Esri将更新WKID以与EPSG匹配,但先前的值仍然有效。

有一些限制。 Esri并不遵循EPSG所遵循的轴方向,至少在ArcGIS Desktop中,它始终是经度-纬度或东北(xy),尽管我们现在正在Server中获取轴的顺序。

因为我是为Esri处理这些产品的产品工程师,所以我对此非常熟悉。

#2 楼

这似乎已记录在SDK帮助中,例如IGeometryServer.FindSRByWKID:AuthorityName通常是“ EPSG”或“ ESRI”,但也可以是任意字符串。如果要与新空间参考关联的默认权限名称,它也可以是空字符串。客户可以将自己的权限名称与当前与EPSG或ESRI权限名称相关联的工厂代码相关联,因为仅使用WKID来创建空间参考。以下是将WKID范围映射到默认权限名称的当前规则:

EPSG代码范围(1000 – 32768)中的WKID将导致AUTHORITY名称为“ EPSG”,并且版本为当前使用的EPSG版本(当前为“ 6.12”)。
ESRI代码范围(33000 – 199999)中的WKID将导致AUTHORITY名称为“ ESRI”,并且该版本将为当前PE库版本(当前为“ 9.3”)。
用户(objedit)范围(200000 – 209199)中的WKID将导致AUTHORITY名称为“ CUSTOM”,并且没有与之关联的版本。此名称由OGC指定。



评论


如果我在空间参考工厂代码中发现一个0值,是否可以告知该空间参考未经授权/无效?

– Emi
13年1月3日,下午4:47

@Emi,工厂代码/ wkid的值为0,通常表示ArcGIS无法识别空间参考(坐标系)。我仍然称其为有效的空间参考,因为可以使用它,因为它没有ID。

– mkennedy
13年1月25日在18:44

#3 楼

我可以找到的有关EPSG的唯一参考文献是《 ArcGIS 10的新增功能》,其中说



地图投影和坐标系


已添加新的坐标系和变换,包括以下内容:•EPSG大地参数数据集
版本6.15至7.1的定义,包括181个地理(基准)
变换和280多个坐标系统...


我不知道这是否是您需要的确认。