Daha çox

X çoxbucaqlının neçə faizi rastr piksel y -də səmərəli şəkildədir


Bunun böyüklüyünə görə rəqabətə layiq bir problem olduğunu düşünürəm.

Raster piksel dəstini bir çoxbucaqlı dəstinin xüsusiyyətlərinə görə ağırlaşdırmaq istərdim. Bunu etmək üçün hər bir rastr pikselindəki hər bir çoxbucağın nisbətini bilmək lazımdır.

Həm pikselin, həm də çoxbucağın kimliklərini son çıxışda saxlamaq istərdim.

Bəzən çoxbucaqlar piksellərdən daha böyük, bəzən daha kiçik olur. 0 dəyəri olan piksellər istisna edilə bilər.

İşlədiyim çoxbucaqlar Statistika Sahəsi Səviyyə 1 (SA1) ASGS Ed 2011 -dir və bu səhifənin altında tapa bilərsiniz:

http://www.abs.gov.au/AUSSTATS/[email protected]/DetailsPage/1270.0.55.001July%202011?OpenDocument

İşlədiyim raster burada:

http://www.abs.gov.au/AUSSTATS/[email protected]/DetailsPage/1270.0.55.0072011?OpenDocument

İnanıram ki, bunlar GDA94, çoxbucaqlar epsg: 4283, raster epsg: 3577

Gördüyünüz kimi bunların hər ikisi böyükdür, bu səbəbdən səmərəlilik vacibdir.

Hər hansı bir açıq mənbə həlli (R, QGIS və s.) Ən yaxşı olardı, baxmayaraq ki, ArcGIS və ya MapInfo -da effektiv bir həll varsa, bunu bilmək maraqlı olardı.


sualınızı başa düşməyimə və məlumatlara baxaraq hər bir çoxbucağa bir populyasiya təyin etmək istəyirsiniz. Pseudocode -da, buna bənzər bir şey

hər çoxbucaqlı popn üçün <- 0 hər kəsişmə üçün (çoxbucaqlı, piksel konturlu) fraksiya <- kəsişmə sahəsini hesablayın (piksel kontur dəyərinin faizi olaraq) popn <- popn + (populyasiya*fraksiya)

Bunu etmək üçün QGIS və PostgreSQL/PostGIS istifadə edə bilərsiniz

QGIS -də

  • rasteri çoxbucaqlılara çevirin. 'DN' qutusunu yoxladığınızdan əmin olun, buna görə piksel dəyərləri kopyalanır. Unutmayın ki, bu, piksellər və çoxbucaqlar arasında 1: 1 nisbətində olmayacaq - eyni dəyəri olan bitişik piksellər bir sahə meydana gətirəcək. Bu barədə daha sonra…

  • > 0 dəyəri olan bütün çoxbucaqlıları seçin və seçimi yeni bir şəkil faylı olaraq qeyd edin. Bu, əsasən boş olan Ausun çox hissəsini çıxararaq işləri sürətləndirəcək;)

Böyütməklə indi belə bir şey görməlisiniz

Düzensiz formaların tək bir dəyərə sahib olduğunu unutmayın - məs. 3. Bu o deməkdir ki, şəkildəki hər pikselin dəyəri 3 -ə bərabərdir, buna görə də formanın sahəsi 5 pikselə bərabərdirsə, bu formanın əslində 15 əhalisi var.

  • bu şəkil faylını "piksel" cədvəli olaraq shp2pgsql istifadə edərək postgresə idxal edin

  • "sahələr" cədvəli kimi statistik sahələr üçün də eyni şeyi edin

Epsg: 3577 istifadə etdim, vacib olan hər ikisinin eyni olmasıdır.

İndi hər bir çoxbucağın hər bir "piksel sahəsi" çoxbucağı ilə kəsişməsini almaq və hər bir çoxbucağın dəyərlərini ümumiləşdirmək üçün postgisdən istifadə edə bilərsiniz.

(a/b) * (pop * (b/p))
  • burada a - piksel sahəsi ilə kəsişmənin sahəsi
  • burada b-piksel sahəsinin sahəsi (bəlkə də bir piksel və ya bir neçə)
  • burada p - tək pikselin sahəsi (sabit, 1 km^2)
  • burada pop, piksel sahəsinin dəyəridir (əhali)

qədər sadələşdirilməlidir

pop * (a/p)

Beləliklə, bənzər bir şey

p, sahələr olaraq piksellərdən (a.sa1_main11, p.DN * (ST_Area (ST_Intersection (a.geom, p.geom))/1000000.0) seçin) a.geom && p.geom limiti 10000);

Bunu yenidən QGIS -ə gətirərək və hər kəsişməni təsadüfi rəngləndirərək, sahələrin necə ayrıldığını görə bilərsiniz.

Populyasiyaların orijinal ilə eyni dəyərlərə əlavə etdiyini görə bilməlisiniz.

İndi sa1_main11 sahəsindəki ağırlıqlı populyasiyaları toplamaq üçün bir sorğu edə bilərsiniz. Bu sorğunun nəticəsi üçün orijinal sahə şəklinizə qoşula bilərsiniz.

Aydındır ki, hər şeyi etmək istədiyiniz zaman limiti götürün. Bunu yoxlamaq üçün bir neçə dəqiqə ərzində bir nəticə əldə etmək üçün etdim ... amma Qərbi Avstraliyanın çox hissəsində var.


Bura belə bir problem üçün kimsə gəlmişsə, burada bir neçə qeyd var:

• epsg: 3577 (Steven Kayın istifadə etdiyi kimi) bu vəziyyətdə (Avstraliya) sahəni qoruduğu üçün doğru məkan istinadıdır. Sahəni tam olaraq qoruya bilməyən məkan istinadları (epsg: 4283 kimi) bir az səhv sahəni qaytaracaq. Hər şeyin proyeksiyanı qoruyaraq seçilmiş sahəyə yenidən yansıtılması lazımdır (bunu göstərdiyiniz üçün aarynoya təşəkkürlər.)

• Eyni dəyəri olan bitişik piksellər bir sahə meydana gətirməməlidir - çünki çəkisiz əhali eyni olsa da, ağırlıqlı əhali fərqli olacaq.

• Düşünürəm ki, PostGIS -də düzgün funksiyalar həndəsədən (Kartezyen) çox deyil, coğrafiyadır (sferik).

• Həndəsənin istifadəsinin üstünlüyü, daha az mürəkkəb olması və buna görə də daha sürətli qaçmasıdır - mümkün olan yerə qədər. Ən azından sistem məhdudiyyətlərim altında, 500.000 tək tələb olunsun, 10.000 ilə məhdudlaşsa belə, coğrafiya mümkün deyil.

• İstifadə etdiyim həll, Steven Kayın cavabına görə, proqnozlaşdırılmamış həndəsəyə əsaslanan üst-üstə düşməni hesablamaqdır. Daha sonra ortaya çıxan çoxbucaqlıları 'coğrafiyaya' yenidən layihələndirmək və ərazini hesablamaq üçün ikinci addım olaraq.


Videoya baxın: Tes toplusu Fiqurların sahəsi Çevrənin və çoxbucaqlının sahəsi 4-cü hissə Nicat Bağışzadə (Sentyabr 2021).