首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arcpy几何类.ProjectAs函数

Arcpy几何类.ProjectAs函数
EN

Stack Overflow用户
提问于 2016-06-17 22:12:47
回答 1查看 674关注 0票数 1

有没有人有使用.ProjectAs ArcGIS geometry class?的经验我正在创建一个点shapefile。这些点是作为WGS1984 lat/long (EPSG 4326)从文本文件中读取的,我想投影到OSGB (EPSG: 27700)中,然后使用InsertCursor插入到空白点shapefile中。我可以创建点几何图形,但在插入行时不会将投影应用到OSGB。

http://pro.arcgis.com/en/pro-app/arcpy/classes/geometry.htm

代码语言:javascript
复制
with open(nmealist,'r') as srcFile:
with arcpy.da.InsertCursor(OutShp, ["SHAPE@", "SHAPE@X", "SHAPE@Y", "SHAPE@Z"]) as InsCur:
    for fileLine in srcFile:
        # split the line up into a list
        lSplit = fileLine.split(",")
        if len(lSplit) == 1:
            lSplit = fileLine.split(",")
        if len(lSplit) > 1:
            # more than just one word on the line
            pointsOK = True
            try:
                FILENAME = str(lSplit[0])
                DOS = yymmdd
                TIME = str(lSplit[1])
                EASTING = float(lSplit[3])
                NORTHING = float(lSplit[2])
                HEIGHT = float(lSplit[4])
                HEADING = float(lSplit[5])
                IVA = float(lSplit[6])
                FLIGHTID = sortie

            except:
                arcpy.AddWarning("Unable to translate points")
                pointsOK = False

            if pointsOK:
                newGeom.SpatialReference = srwgs1984 # set spatial reference
                # create a point geometry from the 3 coordinates - EASTING, NORTHING, HEIGHT
                newGeom  = arcpy.PointGeometry(arcpy.Point(EASTING,NORTHING,HEIGHT))
                # project point into OSGB
                projectedpoint = newGeom.projectAs(srosgb)          
                InsCur.insertRow([projectedpoint, EASTING, NORTHING, HEIGHT])# insert this point into the feature class
EN

回答 1

Stack Overflow用户

发布于 2017-09-29 20:02:21

在InsCur.insertRow指令(最后一行)中,将原始的东距、北距、高度(不带投影)作为"SHAPE@X“、"SHAPE@Y”、"SHAPE@Z“特性传递给新几何图形。

由于点几何图形本身已经包含了这些属性,并且您已经使用所有这些属性正确地定义了新的点几何图形,因此您不应该逐个显式地设置它们。

因此,尝试仅使用"SHAPE@“属性来初始化InsertCursor:

代码语言:javascript
复制
arcpy.da.InsertCursor(OutShp, ["SHAPE@"])

然后仅插入投影点对象:

代码语言:javascript
复制
InsCur.insertRow([projectedpoint])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37883815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档