我正在使用多边形shapefile的单个输入处理GIS问题。
考虑不规则多边形。我想以相等的间距在多边形的范围内绘制垂直线。
我打算如何继续:
识别边界框 (使用PyShp完成)
以相等的间距绘制与边界框左边平行的垂直线 (如何?)
将线条剪切到多边形的范围 (如何,不使用ArcPy?)
注意:它们必须只是垂直的,不是一个刻度。此外,我不打算使用ArcPy,并打算在Python(2.7)中执行编码,因为这段代码需要进入从PyQt生成的工具。
答案 0 :(得分:0)
答案 1 :(得分:0)
最后想出了我的问题的代码.. !!因此回答它...感谢您的投入..
Ipath = raw_input("Enter the input file :- ")
Opath = raw_input("Enter the output directory :- ")
Ipath = Ipath.replace("\\", "/") # Python requirement for paths
Opath = Opath.replace("\\", "/")
copyfile(str(Ipath) + ".prj", str(Opath) + "/" + "Out_Lines" + ".prj") # Copying projection file
sf = shapefile.Reader(str('Input Path'))
shapes = sf.shapes()
Box = shapes[0].bbox
Spc = input("Enter the grid spacing :- ") # Grid Spacing read
x_min = Box[0] # Save the coordinates of the right-bottom, left-top bounding box
y_min = Box[1]
x_max = Box[2]
y_max = Box[3]
A_bbox = [x_min, y_min] # First assignment of coordinates
B_bbox = [x_max, y_max]
C_bbox = [x_min, y_max]
D_bbox = [x_max, y_min]
w = shapefile.Writer(shapefile.POLYLINE) # Shapefile writer
w.line(parts = [[A_bbox, C_bbox]])
w.field('Path number', 'C', '50')
w.record(str(1)) # Writes the first line, that is the left 'side' of the bounding box
# Increasing the X coordinate to generate a line at a specified spacing
i = 2
while (A_bbox[0] <= x_max):
A_bbox = [A_bbox[0] + Spc, A_bbox[1]]
C_bbox = [C_bbox[0] + Spc, C_bbox[1]]
w.line(parts = [[A_bbox, C_bbox]])
w.record(str(i))
i = i+1
w.save(str(Opath) + "/" + "Out_Lines")
这会将结果保存在shapefile中。
作为上述问题的延续,问题的解决方案可在Clipping Line shapefiles within extent of Polygon shape获得。我认为这套问题现在可以被视为已回答并已结束。
谢谢大家的帮助。