Vairāk

Vai izveidot daudzstūrus no punktiem, kas attēlo stūra virsotnes (ArcGIS)?


Es izmantoju ArcGIS 10.3.1. Man ir punktu pazīmju klase, kas attēlo daudzstūru stūra virsotnes. Tie atrodas regulārā režģī. Etiķetes apzīmē OBJECTID. Punktus var digitalizēt nejaušā secībā bez jebkādas secības. Nav definēti atribūti.

Tas, kas man jādara, ir izveidot atsevišķus daudzstūrus (būtībā savienojošus punktus ar dažiem gandrīz izvietotiem punktiem). Ja es varēšu tos savienot, kā parādīts attēlā, es no šīm līnijām izveidotu daudzstūrus (ti, daudzstūrus(17,18,21,22);(18,19,22,23)un tā tālāk). Virsotņu secībai daudzstūros nav nozīmes.

Tā kā šie daudzstūri var atšķirties pēc formas (var būt kvadrāti vai taisnstūri ar dažādu sānu izmēru), man ir grūti atrast algoritmu, lai savienotu tikai noteiktus punktus (cilvēku izteiksmē tikai horizontāli vai vertikāli). Paļauties uz lat / long nav iespēja, jo punkti var nebūt precīzi uz tām pašām koordinātu līnijām (ti, var būt nobīdīti kā zemāk). Tomēr visi punkti "rindās" un "kolonnās" atrodas uz iedomātas līnijas, kas iet caur režģa malu punktiem (ti, punkti 22, 23, 29 atrodas uz līnijas, kas iet no 21 līdz 24).

Es mēģinu pilnībā automatizēt procesu, taču, ja manuāli veikt vajadzīgas noteiktas darbības, kurām nav vajadzīgs daudz laika, tas ir pieņemami. Citiem vārdiem sakot, es meklēju jebkādu veidu, kā paātrināt šo procesu.

Es izmantoju arcpy un Python metodes, lai atrastu 5 tuvākos punktus katram punktam un savienotu tos, izveidojot jaunu līniju segmentu. Kā redzat, dažas izveidotās līnijas izveidoto taisnstūru iekšienē iet pa diagonālēm, un tās ir jāsakopj.

Lietas var kļūt grūtākas, ja režģim ir atšķirīgs attālums starp kolonnām / rindām, piemēram, uz šī attēla (22. punkts tiek savienots ne tikai ar 28., bet arī ar 27. punktu - ārpus izveidotā taisnstūra).

Esmu apskatījis paku redaktoru ArcGIS - nevarēju atrast nevienu iespēju, kas ļautu automātiski izveidot daudzstūrus. Man ir sajūta, ka, uzzinot līniju un rezultātu poligonu filtrēšanas secību un atkārtojot produkcijas atkārtojumu, es varētu iegūt pietiekami labus rezultātus.

Vai kādam ir kādi padomi, kā pieiet šai problēmai, lai izveidotu daudzstūrus no punktiem, kas attēlo stūrus?


Mēģināsim atjaunot parādītos taisnstūrus, izmantojot stūra punktus (sarkani)

un B.N. Delaunay trijstūri:

Nosauciet trīsstūra malas un aprēķiniet to garumu:

Telpiski savienojiet trīsstūrus ar malām:

Kārtojiet pievienoto tabulu dilstošā secībā, izmantojot mala garums:

Izvēlēties visus ne pirmais trijstūru sastopamība apvienotajā tabulā

Pārslēdziet atlasi un izšķīdiniet trīsstūrus, izmantojot garāko kopējo malu:

Izdzēsiet visas figūras, kur punktu skaits ir <> 5. Zemāk redzamās atlikušās formas:

Kā redzams, algoritms nedarbosies ar vairāk nekā 1 mazāku taisnstūri uz lielāku. Šaurākas rindas / kolonnas ir Ok, tādējādi jūs esat pārklāts.

Piezīme: Es izmantoju savus skriptus, lai kārtotu tabulu un atrastu “dublikātus”, jo man nav uzlabotas licences.