import os, sys
from os import path
import arcpy
from decimal import Decimal
reload(sys)
sys.setdefaultencoding("utf-8")
def get_shp_shap(shapefile_path, decimal_places=8):
"""
@Description 获取shp文件的左上角,右下角坐标
- param shapefile_path :{param} 要提取的shp文件绝对路径
- param decimal_places=8 :{int} 要保留的小数点,默认为6
@returns `{tuple[str]}` (xmin, ymin, xmax, ymax)
@example
```python
shp = "W:/CPS/MyProject/python-tools/gis-api/static/upload/mikeio/res/河道范围/河道范围.shp"
startX, startY, endX, endY = get_shp_shap(shp)
print("start: {0} {1}".format(startX, startY))
print("end: {0} {1}".format(endX, endY))
```
"""
desc = arcpy.Describe(shapefile_path)
ext = desc.extent
xmin = format(ext.XMin, ".{}f".format(decimal_places))
ymin = format(ext.YMin, ".{}f".format(decimal_places))
xmax = format(ext.XMax, ".{}f".format(decimal_places))
ymax = format(ext.YMax, ".{}f".format(decimal_places))
return (xmin, ymin, xmax, ymax)
def main():
NET_PIXEL_SPACING = "25"
WATER_DIR_DATA = ""
WATER_DIR_FIELD = ""
RIVER_RANGE_SHP = (
"W:/CPS/MyProject/python-tools/gis-api/static/upload/mikeio/res/河道范围/河道范围.shp"
)
INPUT_SHP = (
"W:/CPS/MyProject/python-tools/gis-api/static/upload/mikeio/res/50年一遇_工程前.shp"
)
filename, ext = path.splitext(path.basename(INPUT_SHP))
OUTPUT_FISH_SHP = "W:/CPS/MyProject/python-tools/gis-api/static/upload/mikeio/res/{}_Fishnet.shp".format(
filename
)
OUTPUT_FISH_SHP_POINT = "W:/CPS/MyProject/python-tools/gis-api/static/upload/mikeio/res/{}_Fishnet_label.shp".format(
filename
)
startX, startY, endX, endY = get_shp_shap(RIVER_RANGE_SHP)
startXY = "{} {}".format(startX, startY)
y_orient_coord = "{} {}".format(
startX, Decimal(startY).quantize(Decimal("0.00000000")) + 10
)
rightTop = "{} {}".format(endX, endY)
print(startX, startY, endX, endY)
print("其实原点: ", startXY)
print("生成方向: ", y_orient_coord)
print("右上角坐标: ", rightTop)
arcpy.CreateFishnet_management(
OUTPUT_FISH_SHP,
startXY,
y_orient_coord,
NET_PIXEL_SPACING,
NET_PIXEL_SPACING,
"",
"",
rightTop,
"LABELS",
RIVER_RANGE_SHP,
"POLYLINE",
)
main()