卫星遥感影像出图

#!/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")
    
                          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值