Arcpy实现Geometry转换成WKT

Well-known text(WKT) is a text markup language for reprensenting vector geometry objects on a map, spatial reference systems of spatial objects and transformations between spatial refrence systems. A binaru equivalent, known as well-known binary(WKB), is used to transfer and store information on databases.

运行环境:

ArcGIS 10.4

        
import os
import arcpy
import traceback
import time


def GetNowTime():
    return time.strftime("%Y-%m-%d %H:%M:%S")


def main():
    
    filePath = raw_input("Please input the filePath: ").lstrip()
    while not os.path.exists(filePath):
         filePath=raw_input("Please input a valid filePath: ").lstrip()          
    print "Start at",GetNowTime()
    
    #read all .mdb
    for sub ,mid ,fnames in os.walk(filePath):
        try:
            for fname in fnames:
                if os.path.splitext(fname)[-1] == ".mdb":
                    try:
                        arcpy.env.workspace = os.sep.join([sub,fname])
                        #print arcpy.env.workspace ,"..."
                        
                        tabs =arcpy.ListFeatureClasses()
                        #print tabs
                        for tab in tabs:
                            #print tab,
                                          
                            fields = [f.name for f in arcpy.ListFields(tab)]
                            
                            if "WKB" not in fields :
                                arcpy.AddField_management(tab,"WKB","BLOB")
                                
                            with arcpy.da.UpdateCursor(tab,['SHAPE@','WKB']) as cursor:
                                for row in cursor:
                                    row[1]=row[0].WKB
                                    cursor.updateRow(row)
                            #print "next..."                                    
                    except arcpy.ExecuteError:
                            er = '\n----------error----------\n'
                            print er,arcpy.GetMessages(),er
                            continue
                        
        except:
            er = '\n----------Error----------\n'
            print er,arcpy.env.workspace,tab,er
            continue

    print "\nEnd at",GetNowTime()
                        

   
if __name__=="__main__":
    main()

 

做成插件运行时,以下语句报错:

if "WKB" not in fields :
    arcpy.AddField_management(tab,"WKB","BLOB")
                                

WKB字段创建后不能被读取,所以进行创建字段,但提示“WKB”字段已存在。原因未知。

作此记录。

转载于:https://my.oschina.net/helloha/blog/1491459

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值