资源简介
在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
相关资源
- 中国1:100万基础数据
- 台湾省乡镇边界SHP
- 中国行政区划.kmz.zip
- 全国矢量地图大全 shp格式.zip
- 中国国界和省界的shp数据
- 1:100万基础地理数据库系列_2017县级行
- 全国县村级名称KML文件
- 中国省界shapefile 和 台湾的shapefile
- 天津市地图 shp格式
- 中国国家基础地理信息系统GIS数据
- 全国的省市县城乡镇边界kml
- 全国 省、市、县、乡镇、村 kml
- 中国国界SHP格式数据
- 全国铁路和国道谷歌地球KML文件
- 新疆水系shp
- 中国地图,shp,单独的省。另一个文
- 西藏水系 shp
- 中国行政区(省市)GIS SHP
- 中国分省区市域-县域shp文件已转换投
- 世界地图省州级底图-shp格式底图
- 北京地区矢量地图 Shp 格式
- 北京地图2014shp文件 GIS开发必备
- 吉林省shp格式地图
- 中国河流数据
- 县域shp文件
- 中国河湖矢量数据
- 北京地图2014shp
- 北京地区矢量地图 Shp格式
- 西藏 乡镇级区划图 shp格式
- 中国边界数据.zip
评论
共有 条评论