Daha çox

XY nöqtəsini necə əlavə etmək və ArcPy 10.0 ilə atributları yeniləmək olar


ArcMap -da 3 parametr götürən bir skript vasitəsi yaratmaq istərdim:

  1. Google xəritələri koordinatları (məsələn -33.876846, 151.215117)
  2. mətn sətri
  3. mətn sətri

Koordinatlar XY həndəsəsini təyin edər və iki sətir yeni nöqtə üçün atributlar olardı ("Hesabat" və "Köprü") ArcMap 10.0 ilə məhdudlaşıram .da modulundan istifadə edə bilmirəm. Düşünürəm ki, həndəsəni anladım, amma atributları yox.

idxal arcpy mxd = arcpy.mapping.MapDocument ("CARİ") df = arcpy.mapping.ListDataFrames (mxd) [0] #ArcGIS skriptində istifadə üçün - giriş koordinatlarını alır koordinatlarını alır = = arcpy.GetParameterAsText (1) #get Report Hyperlink Hyperlink = arcpy.GetParameterAsText (2) #koordinatları vergüllə ayırır və "coordspolt" coordsplit = coordsIn.split (",") siyahısına yerləşdirir; #koordinatları təyin edir X = float (coordsplit [0]) Y = float (coordsplit [1]) #featureClass = "D:  data  testing  testing.gdb  ReportsGDA" #redaktə etmək üçün xüsusiyyət sinifini təyin edin cursor rowInserter = arcpy.InsertCursor (featureClass) #create update cursor rowUpdater = arcpy.UpdateCursor (featureClass) # təyin koordinatları təyin etmək üçün pointGeometry = arcpy.Point (X, Y) # Nöqtə obyektini # qoymaq xüsusiyyət sinfi newPoint = rowInserter.newRow () newPoint.Shape = pointGeometry rowInserter.insertRow (newPoint) #Updater -dəki xüsusiyyətlər üçün xüsusiyyətlərin yenilənməsi: if feature.Report == Yoxdur: xüsusiyyət.Report = Hesabat xüsusiyyəti

PolyGeo cavabında bir şərhdə həndəsənin işlədiyini söylədiniz. Xüsusiyyətin yenilənməsi çox oxşardır. Satır obyektini daxil etməzdən əvvəl onu yeniləmək istəyirsiniz.

Sonuncu çıxarınüçünloop edin və bundan əvvəl kodu yeniləyin:

# Nöqtə obyektini və atributları xüsusiyyət sinifinə qoymaq üçün daxil etmək kursorundan istifadə edin newPoint = rowInserter.newRow () newPoint.Shape = pointGeometry newPoint.Report = Report newPoint.Hyperlink = Hyperlink rowInserter.insertRow (newPoint)

Kodunuz, 10.0-da bir həndəsə yaza biləcəyi kimi görünmür, çünki @ MichaelMiles-Stimson-un dediyi kimi SHAPE @ tokens arcpy.da (10.1+) quruluşudur.

10.0 -da istifadə edəcəyim buna yanaşma:

  1. @MichaelMiles-Stimsonun keçid verdiyi Yazı Həndəsələri kömək səhifəsindəki belə kodu istifadə edərək həndəsələri bir xüsusiyyət sinifinə yazın.
  2. Ümumi bir sahə və atributları olan bir cədvəl yazmaq üçün əlavə kursoru istifadə edin
  3. Xüsusiyyətləri xüsusiyyətlərə birləşdirmək üçün Qoşulma Sahələrindən istifadə edin

3D xüsusiyyətlərindən Z dəyərləri nəzərə alınmır. Hər bir xüsusiyyət, həndəsəsi ilə kəsişən Z səthi xüsusiyyətlərini ümumiləşdirəcək. Nöqtələr səthdəki XY yerindən Z dəyərləri alır, xətlər uzunluğu boyunca səth ölçülərini interpolasiya edərək Z xüsusiyyətlərini əldə edir və çoxbucaqlar səthi Z xüsusiyyətlərini öz sahələrində ümumiləşdirir.

Çıxış Əmlak Seçimləri giriş xüsusiyyətinin atribut cədvəlinə yazılır. Hər bir xüsusiyyət qiymətləndirilən səth xüsusiyyətlərinin yerini müəyyənləşdirir və bildirilə bilən xüsusiyyət növü xüsusiyyətin həndəsəsindən asılıdır:

Nöqtənin səthdəki XY koordinatından interpolyasiya edilmiş yüksəklik.

Çox nöqtəli qeyddəki bütün nöqtələr üçün minimum, maksimum və ortada yüksəklik.

Xəttin səth boyunca 3D məsafəsi.

Xəttin səth boyunca minimum, maksimum və orta yüksəkliyi və yamacı.

Çoxbucağın üst -üstə düşən səthin 3D sahəsi.

Səthdən yüksəklik və yamacın minimum, maksimum və ortası.

Yamac dəyərləri faiz vahidləri (dərəcə) ilə ölçülür və xətt xüsusiyyətləri üçün xətt boyunca hər seqmentdə hesablanır.

  • Minimum yamac, dəyəri 0 -a və ya üfüqi qiymətə ən yaxın olan seqmentdən əldə edilir.
  • Maksimum yamac ən böyük hesablanmış dəyəri olan seqmentdən əldə edilir.
  • Orta yamac, hər bir yamacın 3D uzunluğuna görə çəkilərək ortalaması müəyyən edilərək əldə edilir. Bu, daha uzun seqmentlərin qısa seqmentlər üzərində yaranan dəyərə daha çox təsir etməsi ilə nəticələnir.

Anomal ölçülərlə xarakterizə olunan səth hissələrinin yamac hesablamalarına qatqı təmin etməməsi üçün səs -küy filtri tətbiq etməyi düşünün. Xətt xüsusiyyətləri, səthin profilini tutan təpələr tərəfindən bölünür və bu seqmentlərin uzunluğuna görə süzülməsi, ehtimal ki, arzuolunmaz səth ölçülərinin səbəb olduğu qısa seqmentlərin təsirini aradan qaldırar. Eynilə, çoxbucaqlı xüsusiyyətlər üçün sahə filtri, üçbucaqlı səthlərdəki şerit üçbucaqlarının yamac hesablamalarına qatqı təmin etmir. Raster səthlər üçün, sahə filtrinin tətbiq olunduğu üçbucaqlı bir səth qurmaq üçün hüceyrə sentroidlərinin bir alt dəsti istifadə olunur.


İstifadə

X-COORD və Y-COORD elementləri artıq varsa, onların üzərinə yazılacaq.

Girişin əhatə dairəsi bir dəqiqlikdirsə, maddələr maddə eni 4, ekran genişliyi 12, maddə növü F və ondalık yerlər 3 ilə təyin ediləcək. Giriş əhatə dairəsi ikiqat dəqiqlikdədirsə, maddələr maddə eni 8, göstərici ilə müəyyən ediləcək. genişlik 18, F növü və Ondalı yerlər 5. Təyin edildikdən sonra, əldə edilən dəqiqlik dəyişdirilsə belə bu tərif dəyişməyəcək.

Əlavə XY Koordinatları istifadə edildikdən sonra nöqtə və ya qovşaq yerləri köçürülürsə, X-COORD və Y-COORD dəyərləri yeni yerləri təmsil etməyəcək. Dəyərlərini yeni yerə yeniləmək üçün aləti yenidən işə salın. X-COORD və Y-COORD dəyərləri Project və Transform kimi digər vasitələr tərəfindən dəyişdirilmir.

Giriş əhatə dairəniz coğrafi koordinat sistemindəysə, X-COORD və Y-COORD sırasıyla uzunluq və enliyi təmsil edir.


Diqqət:

Bu vasitə giriş məlumatlarını dəyişdirir. İstənməyən məlumat dəyişikliklərindən qaçınmaq üçün daha çox məlumat və strategiyalar üçün Çıxışı olmayan alətlərə baxın.

POINT_X, POINT_Y, POINT_Z və POINT_M sahələri varsa, onların dəyərləri yenidən hesablanır.

Çıxış POINT_X və POINT_Y sahə dəyərləri xəritənin koordinat sisteminə deyil, verilənlər bazasının koordinat sisteminə əsaslanır. POINT_X və POINT_Y dəyərlərini giriş məlumatlarından fərqli bir koordinat sistemində olmağa məcbur etmək üçün Çıxış Koordinat Sistemi mühitini təyin edin.

Əlavə XY Koordinatları istifadə edildikdən sonra nöqtələr köçürülürsə, onların POINT_X və POINT_Y dəyərləri və POINT_Z və POINT_M dəyərləri (əgər varsa) yenidən XY Koordinatları Əlavə etməklə yenidən hesablanmalıdır.

Layihə vasitəsi POINT_X, POINT_Y, POINT_Z və ya POINT_M sahələrinin dəyərlərini dəyişdirmir.

Giriş xüsusiyyətləri coğrafi koordinat sistemindədirsə, POINT_X və POINT_Y sırasıyla uzunluq və enliyi təmsil edir.


İstifadə

X-COORD və Y-COORD elementləri artıq varsa, onların üzərinə yazılacaq.

Girişin əhatə dairəsi bir dəqiqlikdirsə, maddələr maddə eni 4, ekran genişliyi 12, maddə növü F və ondalık yerlər 3 ilə təyin ediləcək. Giriş əhatə dairəsi ikiqat dəqiqlikdədirsə, maddələr maddə eni 8, göstərici ilə müəyyən ediləcək. eni 18, F növü və Ondalı yerlər 5. Təyin edildikdən sonra, əldə edilən dəqiqlik dəyişdirilsə belə bu tərif dəyişməyəcək.

Əlavə XY Koordinatları istifadə edildikdən sonra nöqtə və ya qovşaq yerləri köçürülürsə, X-COORD və Y-COORD dəyərləri yeni yerləri təmsil etməyəcək. Dəyərlərini yeni yerə yeniləmək üçün aləti yenidən işə salın. X-COORD və Y-COORD dəyərləri Project və Transform kimi digər vasitələr tərəfindən dəyişdirilmir.

Giriş əhatə dairəniz coğrafi koordinat sistemindəysə, X-COORD və Y-COORD sırasıyla uzunluq və enliyi təmsil edir.


Fərqli koordinat sistemindəki koordinatların proqramla hesablanması

İki sahə əlavə edən və xüsusiyyətlərin mərkəz mərkəzinin X koordinatı və Y koordinatı ilə dolduran bir Python skriptim var. Xüsusiyyət sinfi bir proyeksiyadadır, amma mərkəz/koordinatların Lat/Londa göstərilməsini istərdim. Şape.centroid kimi bir şey yazanda koordinat sistemini təyin etməyin bir yolu varmı?

Xüsusiyyətlər cədvəlindəki bir sahəni sağ vurduğunuzda və "Həndəsəni hesabla" seçdiyiniz zaman, məlumat çərçivəsinin koordinat sistemindən istifadə etmə seçiminizin olduğunu bilirəm. Bunu proqramlı şəkildə etmək üçün bir yol varmı?

Bu funksiya çağırışını və tərifini sınadım:

ancaq uzunluqdan çox xüsusiyyət sinifinin eyni proyeksiyasında x koordinatını qaytarır.

Bəli, yalnız bir yeniləmə kursorundan istifadə etməlisiniz (və məkan istinad parametrini göstərin):

Sonra "Forma" sahəsinin koordinat dəyərləri göstərdiyiniz koordinat sistemində bildiriləcək.

Siz bəy bəylər və alimsiniz. Tam olaraq axtardığım budur.

Hər kəs maraqlanırsa, burada çox dəyərli bir parametrə malik bir skript vasitəsi üçün yenilənmiş kodum var.

Siz bəy bəylər və alimsiniz. Tam olaraq axtardığım budur.

Kimsə maraqlanırsa, burada çox dəyərli bir parametrə malik bir skript vasitəsi üçün yenilənmiş kodum var.

Bu necə hesaba dəyişdirilə bilər. sahə?

Çoxbucaqlı sentroidlər üçün kodunuz işləyə bilmədi. İşləmək üçün etməli olduğum şey budur:

arcpy idxal edin
latLonRef = "Koordinat Sistemləri Coğrafi Koordinat Sistemləri Dünya WGS 1984.prj"
xüsusiyyətClasses = arcpy.GetParameterAsText (0)
xüsusiyyətClassesList = xüsusiyyətClasses.split ("")
xüsusiyyətClassesListdəki xüsusiyyətClass üçün:
arcpy.AddMessage ("XY koordinatlarının hesablanması:" + featureClass)
arcpy.AddField_management (xüsusiyyətClass, "LAT", "İKİ")
arcpy.AddField_management (featureClass, "LON", "DOUBLE")
satırlar = arcpy.UpdateCursor (featureClass, "", latLonRef)
satır sırası üçün:
feat = row.getValue ("forma")
cent = feat.centroid
# Çoxbucaqlı sahəni əldə etmək üçün: cent = feat.area
sıra.LAT = cent.Y
sıra.LON = cent.X
rows.updateRow (satır)
#arcpy.AddMessage (str (lat) + "," + str (lon))

Çalışdığım zaman ArcMap 10.2.2 -ni kilidləməsi istisna olmaqla, bu istədiyim üçün işləyir. Atribut cədvəlini yoxlayanda sütunlar yaradılır və doldurulur. Bunun ArcMap -ı niyə "donduracağını" və ssenaridəki digər istəyi davam etdirməyəcəyini düşündünüzmü?

Hər hansı bir təklif təqdir ediləcəkdir!

Əlavə: Tamam, kifayət qədər səbirli deyildim. Latın uzun funksiyasının işləməsi təxminən 30 dəqiqə çəkir. Daha sonra python skriptini tamamlayacaq. Niyə bu qədər uzun sürdüyünü bilmirəm. Sql GDB -də olmağın bir əlaqəsi varmı? Latın uzunluğunu sınaqdan keçirdikdən sonra, WGS84 -də deyil, GDB proyeksiyasında (vəziyyət müstəvisində) olduğu görünür, istədiyim budur. Plan B -ni sınayacağam və sahələri və hesablamaları bir şəkil sənədinə əlavə etmək üçün GDB -ə kopyalamaq üçün bir hazırlama faylı quracağam.


5 Noyabr 2014, Çərşənbə

Koordinatlar Python Script Aləti ilə Xəritə Sənədi Yaradılması

Aşağıda bir ekoloji məsləhət firması üçün hazırladığım python kodunun mətni verilmişdir. Skript vasitəsi istifadəçi proyeksiya sisteminin girişlərini, xy koordinatlarını, isteğe bağlı başlıq/layihə nömrəsini və layihə qovluğunun yerini alacaq. Bu istifadəçi girişləri ilə alət, xy koordinatlarının nöqtə şəklini yaradacaq, xəritə şablon sənədlərini yenidən yaradacaq və hər bir sənədi xy koordinatlarına yuvarlayacaq.

#-------------------------------------------------------------------------------
# Adı: Regional, Yaxınlıq, Koordinatlar tərəfindən Sayt Xəritəsinin Yaradılması
# Məqsəd: Vəzifəni avtomatlaşdırın
#
# Müəllif: fduenas
#
# Yaradılma tarixi: 02/04/2014, Yenilənmə tarixi 11/3/2014
# Müəlliflik hüququ: (c) fduenas 2014
# Lisenziya: İstədiyiniz müddətdə hər kəs istifadə edə və redaktə edə bilər
# nə etdiyini bilirəm.
#-------------------------------------------------------------------------------


arcpy idxal edin
arcpy.mapping idxal edin
id id
from arcpy import env

#Giriş parametrlərini təyin edin
param0 = arcpy.GetParameter (0)
param1 = arcpy.GetParameter (1)
param2 = arcpy.GetParameter (2)
param3 = arcpy.GetParameter (3)
param4 = arcpy.GetParameter (4)
param5 = arcpy.GetParameterAsText (5)


#Forma faylları yaratmaq üçün mühit qurun
EnvironmentSpace = os.path.abspath (param5 + " DATA SHP")
env.workspace = os.path.join (environmentSpace)


#Faylları yazın
arcpy.gp.overwriteOutput = Doğru


#Koordinat Girişləri üçün Koordinat Məkanı qurun
env.geographicTransformations = "NAD_1983_To_WGS_1984_1"


#WGS Məkan İstinadını təyin edin
srwgs = 4326


# XY Shapefile üçün yerli dəyişənləri təyin edin
out_path = env.workspace
out_name = "Project_Location_XY.shp"
geometry_type = "NOKTA"
şablon = ""
has_m = "Əlil"
has_z = "Əlil"


Yenidən yoxlama məqsədləri üçün köhnə Layihə Məkanını silin
əgər arcpy.Exists (out_name):
arcpy.Delete_management ("Project_Location_XY.shp", "")


#Koordinat girişini proyeksiyaya deyil (2d müstəviyə) koordinat istinadına (xətti 3d) daxil etmək üçün WGS Məkan İstinadını yaradın.
sr = arcpy.SpatialReference ()
sr.factoryCode = (srwgs)
sr.create ()


# XY shapefile üçün CreateFeatureclass tətbiq edin
arcpy.CreateFeatureclass_management (out_path, out_name, geometry_type, şablon, has_m, has_z, sr)


# XY sahələrini XY Shapefile əlavə etmək üçün yerli dəyişənləri təyin edin
fc = "Project_Location_XY.shp"
field_Name1 = "POINT_X"
field_Name2 = "POINT_Y"
fieldPrecision = 9
#fieldAlias ​​= "yenidən kod"
fieldLength = 50


# İki yeni sahə üçün AddField -ı iki dəfə icra edin (burada x və y girişlərinin gedəcəyi yerdir
arcpy.AddField_management (fc, field_Name1, "Double", "", "", fieldLength)
arcpy.AddField_management (fc, field_Name2, "Double", "", "", fieldLength)


#Şəkil faylına nöqtə xüsusiyyəti əlavə edir
imleç = arcpy.da.InsertCursor (fc, ["[email protected]"])
xy = (param1, param2)
cursor.insertRow ([xy])


#Formal fayl cədvəlinə koordinasiya məlumatları əlavə edir
satırlar = arcpy.UpdateCursor (fc, "", sr) #spatRef)
satır sırası üçün:
geom = satır.şəkil
sıra.POINT_X = geom.centroid.X
sıra.POINT_Y = geom.centroid.Y
rows.updateRow (satır)


# XY şəkil sənədində Nöqtənin Xüsusiyyətini koordinatlara köçürün, bu şəkil faylını saxlamağın ilk addımıdır
in_Table = "Project_Location_XY.shp"
x_coords = "POINT_X"
y_coords = "POINT_Y"
out_Layer = "Project_Location_XY"
save_Layer = "Project_Location_XY.lyr"


# XY hadisə qatını düzəldin.
arcpy.MakeXYEventLayer_management (in_Table, x_coords, y_coords, out_Layer, sr)


# Bir qat faylına qeyd edin
arcpy.SaveToLayerFile_management (out_Layer, save_Layer)


#Yaradılmış təbəqə atributları saxlamaq üçün şəkil formatı olaraq saxlanılmalıdır
fcList = arcpy.ListFeatureClasses ()


# Giriş qat faylı üçün CopyFeatures icra edin
fcList -də xilas edilmiş_Layer üçün:
# Yeni çıxış xüsusiyyət sinif yolunu və adını təyin edin
outFeatureClass = os.path.join (env.workspace, "Project_Location_XY_1.shp")
arcpy.CopyFeatures_management (save_Layer, outFeatureClass)


#Məkan İstinad Datumunu NAD -a qaytarın
env.geographicTransformations = "WGS_1984_1_To_NAD_1983"


#Forma faylının proyeksiyasını dövlət təyyarəsinə dəyişdirin (giriş)


sr = arcpy.SpatialReference ()
sr.factoryCode = (srvalue)
sr.create ()

# Bu, şəkil faylını yaradır
arcpy.Project_management ("Project_Location_XY_1.shp", "Project_Location_XY.shp", sr, "", srwgs)


# Prosesdən qalan qatlar silin
arcpy.Delete_management ("Project_Location_XY_1.shp", "")
arcpy.Delete_management ("Project_Location_XY.lyr", "")

#Mxds üçün yeri qeyd edin
exportfolder = os.path.abspath (param5 + " Export")

#Bir kataloq axtarışı üçün mxds siyahısını yaradın
mxdlist = arcpy.ListFiles ("*. mxd")

# İxrac qovluğunda əvvəlki mxds silin (sınaq üçün)
əgər arcpy.Exists (mxdlist):
arcpy.Delete_management ("*. mxd", "")

# İxrac qovluğunda mxds yaradın
mxdlistdəki fayl üçün:
outexport = os.path.join (ixrac qovluğu, fayl)
arcpy.Copy_management (fayl, xaricə ixrac)

#Hər MXD faylını döndərin, yerə və proyeksiyaya pan tətbiq edin, mətn elementləri əlavə edin
say = 0
(yol, dirs, fayllar) üçün os.walk (ixracat qovluğu):
fayllardakı fayllar üçün:
if file.lower (). endwith ("2.mxd") ilə:
mxd = arcpy.mapping.MapDocument (os.path.join (yol, fayl))
inFC = "Project_Location_XY.shp"
arcpy.MakeFeatureLayer_management (inFC, "Yer")
arcpy.RefreshActiveView ()
df = arcpy.mapping.ListDataFrames (mxd) [0]
df.spatialReference = sr
lyrLayer = arcpy.mapping.Layer ("Yer")
arcpy.mapping.AddLayer (df, lyrLayer, "AUTO_ARRANGE")
lyr4 = lyrLayer
df.panToExtent (lyr4.getExtent ())

qarağac üçün arcpy.mapping.ListLayoutElements (mxd, "TEXT_ELEMENT"):
əgər elm.text == "0001":
elm.text = param3


qarağac üçün arcpy.mapping.ListLayoutElements (mxd, "TEXT_ELEMENT"):
əgər elm.text == "& ltACP & gtProject & lt/ACP & gt":
elm.text = "& ltACP & gt" + param4 + "& lt/ACP & gt"

arcpy.RefreshActiveView ()
mxd.save ()
del mxd, inFC, df, lyrLayer, lyr4
elif file.lower (). endwith ("3.mxd"):
mxd = arcpy.mapping.MapDocument (os.path.join (yol, fayl))
inFC = "Project_Location_XY.shp"
arcpy.MakeFeatureLayer_management (inFC, "Yer")
arcpy.RefreshActiveView ()
df = arcpy.mapping.ListDataFrames (mxd) [0]
df.spatialReference = sr
lyrLayer = arcpy.mapping.Layer ("Yer")
arcpy.mapping.AddLayer (df, lyrLayer, "AUTO_ARRANGE")
lyr4 = lyrLayer
df.panToExtent (lyr4.getExtent ())

qarağac üçün arcpy.mapping.ListLayoutElements (mxd, "TEXT_ELEMENT"):
əgər elm.text == "0001":
elm.text = param3


qarağac üçün arcpy.mapping.ListLayoutElements (mxd, "TEXT_ELEMENT"):
əgər elm.text == "& ltACP & gtProject & lt/ACP & gt":
elm.text = "& ltACP & gt" + param4 + "& lt/ACP & gt"

arcpy.RefreshActiveView ()
mxd.save ()
del mxd, inFC, df, lyrLayer, lyr4
elif file.lower (). endwith ("1.mxd") ilə:
mxd = arcpy.mapping.MapDocument (os.path.join (yol, fayl))
inFC = "Project_Location_XY.shp"
inFC2 = r "// corp.se.sempra.com/homeprofile/homedc1/FDuenas1/F_Duenas.gdb/Boundaries/USA_Counties_CA_NV_AZ"
arcpy.MakeFeatureLayer_management (inFC, "Yer")
arcpy.MakeFeatureLayer_management (inFC2, "USA_Counties2")
arcpy.RefreshActiveView ()
df = arcpy.mapping.ListDataFrames (mxd) [0]
df.spatialReference = sr
lyrLayer = arcpy.mapping.Layer ("Yer")
lyrLayer2 = arcpy.mapping.Layer ("USA_Counties2")
arcpy.mapping.AddLayer (df, lyrLayer, "AUTO_ARRANGE")
arcpy.SelectLayerByLocation_management ('USA_Counties2', 'kəsişmək', 'Yer')
df.panToExtent (lyrLayer2.getSelectedExtent ())
arcpy.RefreshActiveView ()

qarağac üçün arcpy.mapping.ListLayoutElements (mxd, "TEXT_ELEMENT"):
əgər elm.text == "0001":
elm.text = param3


qarağac üçün arcpy.mapping.ListLayoutElements (mxd, "TEXT_ELEMENT"):
əgər elm.text == "& ltACP & gtProject & lt/ACP & gt":
elm.text = "& ltACP & gt" + param4 + "& lt/ACP & gt"

#Bu addım, Layihə Məkanını və ulduz simvolunu hərəkətə gətirir
framevaluex = df.extent.XMax - df.extent.XMin
framevaluey = df.extent.YMax - df.extent.YMin

heightratio = framevaluey / df.elementHeight
widthratio = framevaluex / df.elementWidth

imleci olaraq arcpy.da.SearchCursor ("Yer", "[email protected]") ilə:
kursordakı sıra üçün:
answerx = (sıra [0])

imleci olaraq arcpy.da.SearchCursor ("Yer", "[email protected]") ilə:
kursordakı sıra üçün:
answery = (sıra [0])

maplocx = answerx - df.extent.XMin
maplocy = answery - df.extent.YMin

xposition = maplocx / widthratio
yposition = maplocy / heightratio

truemaplocx = xposition + df.elementPositionX
truemaplocy = yposition + df.elementPositionY


qarağac üçün arcpy.mapping.ListLayoutElements (mxd, "TEXT_ELEMENT"):
əgər elm.name == "Çağırış":
elm.elementPositionX = truemaplocx
elm.elementPositionY = truemaplocy
qarağac üçün arcpy.mapping.ListLayoutElements (mxd, "GRAPHIC_ELEMENT"):
əgər elm.name == "Ulduz":
elm.elementPositionX = truemaplocx
elm.elementPositionY = truemaplocy

arcpy.RefreshActiveView ()
mxd.save ()
del mxd

Mxd şablonunun iki şəkil arasında necə dəyişdiyinə diqqət yetirin. Verilən məlumat UCSD -nin coğrafi yeri idi və aşağı şəkil indi bunu əks etdirir. Kod bu mxd üçün fərqli işləyirdi, çünki layihə yerini bildirərkən San Diego County -ə getmək istəyirdim. Məlumat çərçivəsinin ölçüsünü və şəkil fayl xüsusiyyətlərini bəzi tənliklər ilə birlikdə istifadə edərək regional xəritələr üçün bu tələbi yerinə yetirə bildim:


İstifadə

X-COORD və Y-COORD elementləri artıq varsa, onların üzərinə yazılacaq.

Girişin əhatə dairəsi bir dəqiqlikdirsə, maddələr maddə eni 4, ekran genişliyi 12, maddə növü F və ondalık yerlər 3 ilə təyin ediləcək. Giriş əhatə dairəsi ikiqat dəqiqlikdədirsə, maddələr maddə eni 8, göstərici ilə təyin olunacaq. eni 18, F növü və Ondalı yerlər 5. Təyin edildikdən sonra, əldə edilən dəqiqlik dəyişdirilsə belə bu tərif dəyişməyəcək.

Əlavə XY Koordinatları istifadə edildikdən sonra nöqtə və ya qovşaq yerləri köçürülürsə, X-COORD və Y-COORD dəyərləri yeni yerləri təmsil etməyəcək. Dəyərlərini yeni yerə yeniləmək üçün aləti yenidən işə salın. X-COORD və Y-COORD dəyərləri Project və Transform kimi digər vasitələr tərəfindən dəyişdirilmir.

Giriş əhatə dairəniz coğrafi koordinat sistemindəysə, X-COORD və Y-COORD sırasıyla uzunluq və enliyi təmsil edir.


Sintaksis

Tamponlanacaq giriş nöqtəsi, xətt və ya çoxbucaqlı xüsusiyyətlər.

Çıxış xüsusiyyət tamponlarını ehtiva edən xüsusiyyət sinfi.

Tampon zonalarının yaradıldığı giriş xüsusiyyətlərinin ətrafındakı məsafə. Məsafələr ya xətti bir məsafəni təmsil edən bir dəyər olaraq, ya da hər bir xüsusiyyəti tamponlamaq üçün xətti məsafələri ehtiva edən giriş xüsusiyyətlərindən bir rəqəmsal sahə olaraq verilə bilər.

Əgər Məsafə xətti vahidləri göstərilməyibsə və ya Bilinməyən kimi daxil edilibsə, giriş xüsusiyyətlərinin məkan istinadının xətti vahidi istifadə olunur.

Tamponlanacaq giriş xüsusiyyətlərinin tərəfləri.

  • FULL - Xətt giriş xüsusiyyətləri üçün xəttin hər iki tərəfində tamponlar yaradılacaq. Çoxbucaqlı giriş xüsusiyyətləri üçün, tamponlar çoxbucağın ətrafında yaradılacaq və giriş xüsusiyyətlərinin sahəsini ehtiva edəcək və üst -üstə düşəcəkdir. Nöqtə giriş xüsusiyyətləri üçün, nöqtə ətrafında tamponlar yaradılacaq. Varsayılan budur.
  • SOL - Xətt daxiletmə xüsusiyyətləri üçün xəttin topoloji solunda tamponlar yaradılacaq. Bu seçim çoxbucaqlı giriş xüsusiyyətləri üçün keçərli deyil.
  • SAĞ - Xətt giriş xüsusiyyətləri üçün xəttin topoloji sağında tamponlar yaradılacaq. Bu seçim çoxbucaqlı giriş xüsusiyyətləri üçün keçərli deyil.
  • OUTSIDE_ONLY - Çoxbucaqlı giriş xüsusiyyətləri üçün tamponlar yalnız giriş poliqonunun xaricində yaradılacaq (giriş çoxbucağının içindəki sahə çıxış tamponundan silinəcəkdir). Bu seçim xətt giriş xüsusiyyətləri üçün keçərli deyil.

Bu əlavə parametr ArcView və ya ArcEditor lisenziyası ilə mövcud deyil.

Xəttin giriş xüsusiyyətlərinin sonundakı tamponun forması. Bu parametr çoxbucaqlı giriş xüsusiyyətləri üçün keçərli deyil.

  • ROUND - Tamponun ucları yuvarlaq, yarım dairə şəklində olacaq. Varsayılan budur.
  • FLAT - Tamponun ucları düz və ya kvadrat şəklində olacaq və giriş xətti xüsusiyyətinin son nöqtəsində bitəcək.

Bu əlavə parametr ArcView və ya ArcEditor lisenziyası ilə mövcud deyil.

Çıxış buferinin üst -üstə düşməsini aradan qaldırmaq üçün yerinə yetirilməli olan həllini təyin edir.

  • NONE - Üst -üstə düşmədən asılı olmayaraq hər bir xüsusiyyət üçün fərdi bufer saxlanılır. Varsayılan budur.
  • BÜTÜN - Bütün tamponlar birlikdə üst -üstə düşmələri aradan qaldıraraq tək bir xüsusiyyətdə həll olunur.
  • LIST - Listelenen sahələrdə atribut dəyərlərini paylaşan (giriş xüsusiyyətlərindən götürülmüş) hər hansı bir tampon həll edilir.

Çıxış tamponlarını həll etmək üçün giriş xüsusiyyətlərindən olan sahələrin siyahısı. Listelenen sahələrdə atribut dəyərlərini paylaşan hər hansı bir tampon (giriş xüsusiyyətlərindən köçürülür) ləğv edilir.


Ehtimal olunan dəyərli məlumat sistemləri üçün dinamik dəyişən dəqiqlik kobud çoxluq yanaşması ☆

Dəyərli məlumat sistemləri, qeyri-müəyyən və natamam məlumatları xarakterizə etmək üçün atribut dəyərlərinin dəstlər tərəfindən təsvir edildiyi bir çox real tətbiqetmədə əhəmiyyətli bir məlumat cədvəli növüdür. Bununla birlikdə, bəzi real vəziyyətlərdə müəyyən dəyərlər ehtimal paylamaları ilə təsvir edilə bilər ki, nəticədə kəsişmə əməliyyatına əsaslanan ənənəvi tolerantlıq əlaqəsi obyektlərin fərqlənmə əlaqəsini ağlabatan şəkildə təsvir edə bilməz. Bu problemi həll etmək üçün ehtimal olunan dəyər dəyərli məlumat sistemləri (PSvIS) konsepsiyasını təqdim edirik və genişləndirilmiş dəyişən dəqiq kobud çoxluq modelini (VPRS) təqdim edirik. λBhattacharyya məsafəsi baxımından tolerantlıq əlaqəsi. Məlumat sistemlərinin xüsusiyyətlərinin dinamik bir məlumat mühitində zaman keçdikcə inkişaf edəcəyini nəzərə alaraq, məlumat qranulyasiyası və yaxınlaşma strukturlarının dəyişməsinə səbəb olacaqdır. Kobud yaxınlaşmanın matris təsviri iki matris operatoru və PSvIS -də iki vektor funksiyası əsasında təqdim olunur. Daha sonra kobud yaxınlaşmaları yeniləmək üçün əvvəllər öyrənilmiş təxmini nəticələrin və bölgə əlaqəli matrislərin istifadəsi ilə artan mexanizmlər təklif olunur və müvafiq alqoritmlər işlənib təhlil edilir. Eksperimental nəticələr göstərir ki, təklif olunan alqoritmlər PSvIS -ə atributları daxil edərkən və ya ondan çıxararkən statik alqoritmləri və əlaqəli artan alqoritmləri üstələyir.


Videoya baxın: ArcGIS - Converting a geodatabase to shapefiles (Oktyabr 2021).