資源簡介
在ArcGIS中kml/kmz轉(zhuǎn)成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
評論
共有 條評論