【发布时间】:2021-12-16 22:23:18
【问题描述】:
我正在寻找一段代码,它可以帮助我将道路中心线特征转换为缓冲区。我有以下要素类。
roads = "c:/base/data.gdb/roadcentreline"
roadsoutput = "c:/base/data.gdb/roadcentreline_Buffer"
现在,我想将其转换为缓冲区并将其存储在道路输出中。有什么方法可以实现吗?
【问题讨论】:
我正在寻找一段代码,它可以帮助我将道路中心线特征转换为缓冲区。我有以下要素类。
roads = "c:/base/data.gdb/roadcentreline"
roadsoutput = "c:/base/data.gdb/roadcentreline_Buffer"
现在,我想将其转换为缓冲区并将其存储在道路输出中。有什么方法可以实现吗?
【问题讨论】:
我在网上找到的一种方法是,我们可以使用上面设置的变量运行缓冲区,并将剩余的参数作为字符串传递。
以下是将任何折线转换为缓冲区的建议代码。有关更多详细信息,请查看 Esri 文档。
import arcpy
roads = "c:/base/data.gdb/roadcentreline"
roadsoutput = "c:/base/data.gdb/roadcentreline_Buffer"
arcpy.Buffer_analysis(roads, output, "distance", "FULL", "ROUND", "NONE")
但我仍然怀疑,有没有更好的方法来做到这一点?
【讨论】:
UPD:“缓冲”工具最适用于一条道路或一组道路。但是对于网络,您最好使用 Network Analyst 工具箱中的一些特定工具
完成前面的回答:
您的工作流程应该是这样的:
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Buffer_analysis("roads", "C:/output/majorrdsBuffered", "100 Feet", "FULL", "ROUND", "LIST", "Distance")
# Name: Buffer.py
# Description: Find areas of suitable vegetation which exclude areas heavily impacted by major roads
# import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data/Habitat_Analysis.gdb"
# Select suitable vegetation patches from all vegetation
veg = "vegtype"
suitableVeg = "C:/output/Output.gdb/suitable_vegetation"
whereClause = "HABITAT = 1"
arcpy.Select_analysis(veg, suitableVeg, whereClause)
# Buffer areas of impact around major roads
roads = "majorrds"
roadsBuffer = "C:/output/Output.gdb/buffer_output"
distanceField = "Distance"
sideType = "FULL"
endType = "ROUND"
dissolveType = "LIST"
dissolveField = "Distance"
arcpy.Buffer_analysis(roads, roadsBuffer, distanceField, sideType, endType, dissolveType, dissolveField)
# Erase areas of impact around major roads from the suitable vegetation patches
eraseOutput = "C:/output/Output.gdb/suitable_vegetation_minus_roads"
xyTol = "1 Meters"
arcpy.Erase_analysis(suitableVeg, roadsBuffer, eraseOutput, xyTol)
【讨论】: