最近项目中有需要对shp中某一字段进行自动进行出图,在平时制作相应的模型然后输出python或发布成地图服务即可,但是因为涉及到出题出图要具体边界及渲染,功能实现比较简单,代码尽管各处都有可以作参考,但是还是都是零散的,还得花点时间去查找和重新组织,这里楼主对python代码进行组织和整理,希望能对有需要的人提供帮助。其他解释不多说,直接上代码:
# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# in.py
# Created on: 2017-11-03 17:26:10.00000
# (generated by ArcGIS/ModelBuilder)LB
# Usage: in <abcd> <test_shp> <Z_value_field> <Output_cell_size> <fj_pro_shp> <Extract_abcd1>
# Description: 插值、渲染并输出图片
# ---------------------------------------------------------------------------
print "程序开始运行"
# Import arcpy module
import arcpy
# Check out any necessary licenses
arcpy.CheckOutExtension("spatial")
# Script arguments
abcd = arcpy.GetParameterAsText(0)
if abcd == '#' or not abcd:
abcd = "F:\py\print_toPNG\\ccc" # provide a default value if unspecified
test_shp = arcpy.GetParameterAsText(1)
if test_shp == '#' or not test_shp:
test_shp = "F:\\Fujian\\test.shp" # provide a default value if unspecified
Z_value_field = arcpy.GetParameterAsText(2)
if Z_value_field == '#' or not Z_value_field:
Z_value_field = "jsl" # provide a default value if unspecified
Output_cell_size = arcpy.GetParameterAsText(3)
if Output_cell_size == '#' or not Output_cell_size:
Output_cell_size = ".01" # provide a default value if unspecified
fj_pro_shp = arcpy.GetParameterAsText(4)
if fj_pro_shp == '#' or not fj_pro_shp:
fj_pro_shp = "F:\\Fujian\\fj_pro.shp" # provide a default value if unspecified
Extract_abcd1 = arcpy.GetParameterAsText(5)
if Extract_abcd1 == '#' or not Extract_abcd1:
Extract_abcd1 = "F:\py\print_toPNG\\cbd" # provide a default value if unspecified
# Local variables:
arcpy.env.extent = arcpy.Extent(115.848281860352,23.53125,120.837638854981,28.3126068115235)
print "进行插值运算中...."
# Process: IDW
arcpy.gp.Idw_sa(test_shp, Z_value_field, abcd, Output_cell_size, "2", "VARIABLE 12", "")
print "进行裁剪中...."
# Process: Extract by Mask
arcpy.gp.ExtractByMask_sa(abcd, fj_pro_shp, Extract_abcd1)
print "图层输出过程中...."
# Process:export map mxd需要提供具体的渲染图层 格式为lyr
mxd = arcpy.mapping.MapDocument(r"F:\py\base.mxd")
lyr=arcpy.mapping.ListLayers(mxd)[0]
lyr.replaceDataSource(r"F:\py\print_toPNG","RASTER_WORKSPACE","cbd")
df = arcpy.mapping.ListDataFrames(mxd)[0]
df.extent=arcpy.Extent(115.848281860352,23.53125,120.837638854981,28.3126068115235)
arcpy.mapping.ExportToPNG(mxd, r"F:\py\print_toPNG\kk.png", df,
df_export_width=1600,
df_export_height=1200,
world_file=True)
del mxd
print "运行结束"