资源简介
在ArcGIS中kml/kmz转成shapefile后丢失属性,本工具使用可以保留。
代码片段和文件信息
import arcpy os
#this line is for using a script tool in arcmap
input_parameter = arcpy.GetParameterAsText(0)
#alternatively use input_parameter = ‘C:\......\file.kmz‘ to run as stand alone script
direct = os.path.dirname(input_parameter)
arcpy.conversion.KMLTolayer(input_parameter direct)
arcpy.env.overwriteOutput = True
database = input_parameter[:-3] + ‘gdb‘
dataset = database + ‘\Placemarks‘
arcpy.env.workspace = dataset
GCS_List = arcpy.ListFeatureClasses()
coord_sys = arcpy.GetParameter(1)
#in stand-alone script use arcpy.SpatialReferece(‘desired Coord Sys name‘)
e_count = 0
for FC in GCS_List:
arcpy.Project_management(FC database + ‘\\‘ + FC + ‘_Proj‘ coord_sys)
arcpy.env.workspace = database
UTM_List = arcpy.ListFeatureClasses()
mxd = arcpy.mapping.MapDocument(‘CURRENT‘)
df = arcpy.mapping.ListDataframes(mxd)[0]
keep_fields = [‘OID‘ ‘Shape‘ ‘SHAPE‘ ‘PopupInfo‘ ‘Shape_Length‘ ‘Shape_Area‘ ‘SHAPE_Length‘ ‘SHAPE_Area‘]
for FC in UTM_List:
update_layer = arcpy.mapping.layer(database + ‘\\‘ + FC)
arcpy.mapping.Addlayer(df update_layer)
# first add the fields
SC = arcpy.SearchCursor(FC)
for row in SC:
pop_string = row.getValue(“PopupInfo“)
pop_array = pop_string.split(“<“)
fields_array = []
names_array = []
for tag in pop_array:
if “td>“ in tag and “/td>“ not in tag:
fields_array.append(tag)
break
for fields in arcpy.ListFields(FC):
if fields.name not in keep_fields:
arcpy.DeleteField_management(FCfields.name)
#this will list the field names and field values
#even indexes are field names (starts at 0)
#and odd indexes are field values
del fields_array[:2]
for x in range(0len(fields_array)):
fields_array[x]=fields_array[x].replace(“td>“““)
if x%2 == 0 and fields_array[x] not in keep_fields:
names_array.append(fields_array[x])
arcpy.AddField_management(FC fields_array[x] “TEXT“)
# default is all TEXT fields but I could change this later to reference the values
#now we update the values
names_array.append(“PopupInfo“)
with arcpy.da.UpdateCursor(FCnames_array) as UC:
for row in UC:
pop_string = row[-1]
pop_array = pop_string.split(“<“)
fields_array = []
values_array = []
for segment in pop_array:
if “td>“ in segment and “/td>“ not in segment:
fields_array.append(segment)
del fields_array[:2]
for x in range(0len(fields_array)):
if x%2<>0:
if fields_array[x-1] not in keep_fields:
fields_array[x]=fields_array[x].replace(“td>“““)
values_array.append(fields_array[x])
for y in range(0len(values_array)):
try:
row[y] = values_array[y]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3121 2017-11-09 21:10 kml2shp.py
文件 4410811 2017-11-21 09:18 运行说明.swf
相关资源
- HongKong shapefile
- 杭州分街道矢量数据
- 世界矢量图
- 2016东莞路网shp文件
- 北京市各个区县的SHP文件.zip
- 河南省矢量图shp格式
- 南宁建筑轮廓图的KML文件
- KML文件转EXCEL
- 中国地级市矢量图最新版
- 广东省行政区划边界省级、地市级、
- 山西省矢量图
- 最新长三角shp底图.zip
- 1950-2018中国台风SHp数据.rar
- 广州第五次人口普查数据
- 中国地图含南海诸岛与九段线.shp
- 全国地图含港澳台shp
- 上海市行政区划shp文件
- 全球各国轮廓图shp格式ArcGIS数据
- 武汉市行政区划(乡镇级别)shp数据
- 江苏省行政区划图 shp 格式
- 南京shp文件
- 青岛市地图shp格式
- 中国地州界 shp
- 中国省级行政区划 shp数据
- 20万图幅接图表-shp格式-wgs84坐标
- GPS数据转谷歌地图轨迹的工具NMEA2KM
- 广东省行政区划乡镇区一级
- 宁波市餐饮POI数据
- 武汉道路SHP
- 武汉OSM路网数据 converted.shp.rar
评论
共有 条评论