Daugiau

Kaip „ArcGIS“ sukurti kvadratinį daugiakampį ar buferį su kvadrantais?

Kaip „ArcGIS“ sukurti kvadratinį daugiakampį ar buferį su kvadrantais?


Turiu 32 taškus, nei man reikia, kad aplink sukurtumėte 2 mylių kvadratinį daugiakampį ir suskirstyčiau kiekvieną daugiakampį į 4 kvadratus. Išbandžiau keletą dalykų, įskaitant MBR (Minimalus ribojantis stačiakampis) sukūrimą aplink standartinį buferį, tačiau jie dėl kažkokių priežasčių nepateikia tobulų kvadratų, o tai nebūtinai yra visiškai svarbu, bet bandydamas pataikiau į sieną kvadratinius daugiakampius suskaidyti į kvadratus.

Žemėlapiui naudoju NAD 1983 UTM Zone 12N koordinačių sistemą. Mano duomenų geoduomenų bazė yra GCS_North_American_1983. Aš naudoju „ArcGIS 10.3.1“

Štai pavyzdys to, ko man paprastai reikia.


Atsižvelgiant į tai, kaip jūsų ekrane rodomas žemėlapis yra projektuojamas, gaunama forma gali atrodyti ne visiškai kvadratas. Pasižiūrėk čia.

Sunku būtų išskaidyti savo daugiakampį į linijas, gauti tiesių vidurio taškus, nubrėžti linijas tarp jų, sujungti rezultatą į daugiakampį ir tada panaudoti pradinį kvadratą. Tačiau turi būti geresnis būdas.


Naudokite buferius kaip pirmąjį scenarijaus parametrą:

Kaip antrą scenarijaus parametrą naudokite tuščią aplanką. Paleisti scenarijų. Sujunkite visus formos failus įvesties aplanke, kad gautumėte tai:

Scenarijus:

importuoti arcpy, traceback, os, sys iš arcpy importuoti env env.overwriteOutput = True inFC = arcpy.GetParameterAsText (0) outFolder = arcpy.GetParameterAsText (1) tempf = r'in_memory  many 'def showPyMessage (): arc str (time.ctime ()) + "-" + pranešimas) pabandykite: m, n = 0,0 su arcpy.da.SearchCursor (inFC, "SHAPE @") kaip eilutes: eilutėms eilutėse: shp = eilutė [ 0] išplėtimo = shp.extent origPoint = "% s% s"% (ulatus.XMin, apimtis.YMin) yPoint = "% s% s"% (mastas.XMin, apimtis.YMax) endPoint = "% s% s "% (määral.XMax, mastas.YMax) nRows, nCols = 2,2 arcpy.CreateFishnet_management (tempf, origPoint, yPoint," 0 "," 0 ", nRows, nCols, endPoint," NO_LABELS "," "," POLYGON ") arcpy.AddField_management (tempf," Label "," Text ", 25) m + = 1 arcpy.AddMessage (m) su arcpy.da.da.UpdateCursor (tempf, (" SHAPE @ "," Label ")) kaip eilutes : eilutėms eilutėse: m + = 1 eilutė [1] = str (m) .zfill (8) eilutės.updateRow (eilutė) n + = 1 arcpy.CopyFeatures_management (tempf, '% s% sfnet_% s'% (outFolder, os.sep, str (n) .zfill (4))), išskyrus: pranešimas = " n *** PITONO KLAIDOS ***"; showPyMessage () message = "Python Traceback Info:" + traceback.format_tb (sys.exc_info () [2]) [0]; showPyMessage () message = "Python klaidos informacija:" + str (sys.exc_type) + ":" + str (sys.exc_value) + " n"; showPyMessage ()

Atkreipkite dėmesį, kad matmenys gali būti šiek tiek ne, nes buferis nėra tiksliai apskritimas, tik sujungtų taškų rinkinys