#!/usr/bin/python
# -*- coding: UTF-8 -*-
import arcpy
import sys
import datetime
from arcpy import env
import math
#reload(sys)
#sys.setdefaultencoding('utf8')
def replacepath():
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
mxd.findAndReplaceWorkspacePaths(r"C:\Project\Data", r"C:\Project\Data2")
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd
def replacesde():
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project_default.mxd")
mxd.findAndReplaceWorkspacePaths(r"C:\Project\Connection to Default.sde",
r"C:\Project\Connection to Version1.sde")
mxd.saveACopy(r"C:\Project\Project_V1.mxd")
del mxd
def replACED():
import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
mxd.replaceWorkspaces(r"C:\Project\Data\Parcels.mdb", "ACCESS_WORKSPACE", r"C:\Project\Data\Parcels.gdb", "FILEGDB_WORKSPACE")
for lyr in arcpy.mapping.ListLayers(mxd):
if lyr.supports("DEFINITIONQUERY"):
lyr.definitionQuery = lyr.definitionQuery.replace("[", "\"")
lyr.definitionQuery = lyr.definitionQuery.replace("]", "\"")
lyr.definitionQuery = lyr.definitionQuery.replace("*", "%")
if lyr.supports("LABELCLASSES"):
for lblClass in lyr.labelClasses:
lblClass.SQLQuery = lblClass.SQLQuery.replace("[", "\"")
lblClass.SQLQuery = lblClass.SQLQuery.replace("]", "\"")
lblClass.SQLQuery = lblClass.SQLQuery.replace("*", "%")
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd
def replacedatasource(dstMXD,layername,shpfilepath,siteName):
mxd = arcpy.mapping.MapDocument(dstMXD)
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
#loop through the dstMXD - remove or fix sources
for lyr in arcpy.mapping.ListLayers(mxd):
#remove layers from the mxd if the featureclass weren't created - this loop does not work with os.path.isfile
if lyr.name == layername:
if os.path.isfile(shpfilepath):
lyr.replaceDataSource(shpfilepath, "SHAPEFILE_WORKSPACE", siteName )
#lyr.replaceDataSource(r"C:\Project\Data\Transportation.gdb", "FILEGDB_WORKSPACE", "Highways")
else:
arcpy.mapping.RemoveLayer(df, lyr)
# Save the MXD
mxd.save()
def relacelyr():
import arcpy
lyrFile = arcpy.mapping.Layer(r"C:\Project\Data\Streets.lyr")
for lyr in arcpy.mapping.ListLayers(lyrFile):
if lyr.name.lower() == "highways":
lyr.showLabels = True
lyr.saveACopy(r"C:\Project\Data\StreetsWithLabels.lyr")
del lyrFile
#Or with one less line using a wild card:
import arcpy
lyrFile = arcpy.mapping.Layer(r"C:\Project\Data\Streets.lyr")
for lyr in arcpy.mapping.ListLayers(lyrFile, "Highways"):
lyr.showLabels = True
lyr.saveACopy(r"C:\Project\Data\StreetsWithLabels.lyr")
del lyrFile
def cal(layer):
arcpy.management.DeleteField(layer,"LengthKM")
arcpy.management.AddField(layer,"LengthKM","DOUBLE","","","","","NULLABLE","NON_REQUIRED","")
arcpy.management.CalculateField(layer, "LengthKM", "!shape.geodesicLength@KILOMETERS!", "PYTHON_9.3")
arcpy.management.DeleteField(layer,"AreaKM2")
arcpy.management.AddField(layer,"AreaKM2","DOUBLE","","","","","NULLABLE","NON_REQUIRED","")
arcpy.management.CalculateField(layer, "AreaKM2", "!shape.geodesicArea@SQUAREKILOMETERS!", "PYTHON_9.3")
arcpy.management.CalculateField(layer, "AreaKM2", "round(!shape.geodesicArea@SQUAREMETERS!,2)", "PYTHON_9.3")
def setTbbh(layer):
fieldLength=50
arcpy.management.DeleteField(layer,"TBBH")
arcpy.management.AddField(layer, "TBBH", "TEXT", "", "", fieldLength)
arcpy.management.AddField(layer,"Xmin","DOUBLE")
arcpy.management.AddField(layer,"Ymax","DOUBLE")
arcpy.management.CalculateField(layer,"Xmin","!shape.extent.xmin!","PYTHON_9.3")
arcpy.CalculateField_management(layer,"Ymax","!shape.extent.ymax!","PYTHON_9.3")
rows=arcpy.UpdateCursor(layer,"","","","Ymax D;Xmin A")
i=0
for row in rows:
row.setValue("TBBH",i+1) #
rows.updateRow(row)
print("TBBH")
print(i);
i+=1
del row
del rows
arcpy.DeleteField_management(layer,"Xmin;Ymax")
def mkdir(path):
import os
path=path.strip()
path=path.rstrip("\\")
isExists=os.path.exists(path)
if not isExists:
os.makedirs(path)
print path+' sucess'
return True
else:
print path+' fail'
return False
def ExportToJPGFile(mxd, df, lyr,fidIdx, outputDir, filename, imgWidth=600,imgHeight=500):
query = "FID={0}".format(fidIdx)
arcpy.SelectLayerByAttribute_management(lyr, "NEW_SELECTION", query)
df.zoomToSelectedFeatures()
df.scale = df.scale*2.5
#df.panToExtent(lyr.getSelectedExtent())
outFile = "{0}\\{1}.jpg".format(outputDir, filename)
arcpy.mapping.ExportToJPEG(mxd, outFile, df, imgWidth, imgHeight, 90)
return outFile
def SetTBBHMY():
mxdfile = arcpy.GetParameterAsText(0)
print(mxdfile)
#mxdfile=r"E:\ycshp\0.7\\ycjc.mxd"
mxd = arcpy.mapping.MapDocument(mxdfile)
lyr = arcpy.mapping.ListLayers(mxd)[0] #Ñ¡ÔñµÚÒ»¸öͼ²ã
#print(lyr)
shapename=str(lyr)+".shp"
setTbbh(shapename)
#del lyr,mxd
#计算形状指数
def getResolution(level):
return 156543.03*math.pow(2,-level)
def getscale(resolution):
return 96*1000*resolution/25.4
def getresolutionbyscale(scale):
return scale*25.4/96/1000
def getZoomlevelbyResolution(Resolution):
return math.log(Resolution/156543.03,2)
def calshapescale(lyr):
dataFeature=lyr.dataSource
arcpy.AddField_management(dataFeature,"LSI","DOUBLE")
arcpy.CalculateField_management(dataFeature,"LSI","!Shape.length@METERS!/(2*math.sqrt(math.pi*!Shape.area@SQUAREMETERS!))","PYTHON_9.3")
arcpy.AddField_management(dataFeature,"scaleTime","DOUBLE")
expression = "getClass( !LSI! )"
codeblock="""
def getClass(Nordhaus):
if Nordhaus <= 2:
return 1.5
if Nordhaus > 2 and Nordhaus <= 3:
return 1.25
else:
return 1"""
arcpy.CalculateField_management(dataFeature,"scaleTime",expression,"PYTHON_9.3",codeblock)
def expandscale(extent ,dx,dy) :
Xmin=extent.XMin
Ymin=extent.YMin
Xmax=extent.XMax
Ymax=extent.YMax
width=Xmax-Xmin
height=Ymax-Ymin
Xmid=(Xmin+Xmax)/2
Ymid=(Ymin+Ymax)/2
Xmin=Xmid-dx*width/2
Ymin=Ymid-dy*height/2
Xmax=Xmid+dx*width/2
Ymax=Ymid+dy*height/2
newExtent.XMin, newExtent.YMin = Xmin, Ymin
newExtent.XMax, newExtent.YMax = Xmax, Ymax
return newExtent
if __name__=="__main__":
#scale=1500
#resolution=getresolutionbyscale(scale)
#zoomlevel=getZoomlevelbyResolution(resolution )
#print(zoomlevel)
resolution=10
#scale=0.0254/(Resolution*96)
scale=96*1000*resolution/25.4
#resolution=scale*25.4/96/1000
bauto=False
imgWidth=300
imgHeight=200
fieldLength=50
#mxdfile = arcpy.GetParameterAsText(0)
#print(mxdfile)
mxdfile=r"E:\gzct\gzct.mxd"
print(mxdfile)
outdir= arcpy.GetParameterAsText(1)
#outdir="E:\\ycshp\\0.7\\"
outdir=r"E:\gzct"
print(outdir);
field="DKBM" #文件名
mxd = arcpy.mapping.MapDocument(mxdfile)
input_layer = arcpy.mapping.ListLayers(mxd)[0] #
df = arcpy.mapping.ListDataFrames(mxd)[0] #
#delimfield = arcpy.AddFieldDelimiters(input, selectfield)#
#print delimfield
#workspacepath=lyr.workspacePath
arcpy.env.workspace =r"E:\gzct"
shpname=r"E:\gzct\dk6209222021_241106_2.shp"
shpdbf="E:\gzct\dk6209222021_241106_2.dbf"
#lyr.dataSource
#print(lyr.dataSource)
#rows = arcpy.SearchCursor(shpname)
ii = 0
code=0
selectfield="DKBM"
#arcpy.MakeFeatureLayer_management(input_layer, "SelectedFeaturesLayer")
#selected_layer = arcpy.mapping.Layer("SelectedFeaturesLayer")
#arcpy.mapping.AddLayer(df, selected_layer)
'''
if selected_layer.supports("LABELCLASSES"):
lblClass = selected_layer.labelClasses[0]
lblClass.expression = "[zw]" # 根据实际字段调整
selected_layer.showLabels = True
# 关键修改:通过labelPlacementProperties访问符号
selected_layer.transparency = 90
'''
df.scale=2000
with arcpy.da.SearchCursor(shpname, ["DKBM","zw"]) as cursor:
for row in cursor:
TBBHselect = row[0]
filename=TBBHselect
whereClause2='\"'+str(selectfield)+'\"='+"'"+TBBHselect+"'"
try:
arcpy.SelectLayerByAttribute_management(input_layer, "NEW_SELECTION", whereClause2)
'''
if selected_layer.supports("LABELCLASSES"):
lblClass = selected_layer.labelClasses[0]
layer.labelClasses[0].whereClause
'''
df.zoomToSelectedFeatures()
outFile = "{0}\\{1}.jpg".format(outdir, filename)
arcpy.mapping.ExportToJPEG(mxd, outFile, df, imgWidth, imgHeight, 90)
#print(TBBHselect)
except Exception :
print(arcpy.GetMessages(2))
#del rows, row
del mxd
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
print("suceess")