Bir çok noktayı nasıl uzamsal olarak bölümlerim?


9

Tüm ülkeye yayılmış 130 milyondan fazla kaydı bulunan müşterilere ait konum verilerim var. Bu PostGIS'te Mekansal Bir Tablodur

Şimdi tüm ülkeyi 'hizmet alanlarına' bölmek istiyorum, böylece her hizmet alanı:

  • En az 30 Müşteri
  • En fazla 1000 km2'dir.

ArcGIS'in Toplu aracını araştırdım, ancak kriterlerimi karşılamıyor, çünkü:

  • Minimum sayımı dikkate almaz
  • Elimde sadece Qgis & Grass var.

Bunu başarmak için hangi aracı / süreci kullanabilirim?

Yanıtlar:


4

Küçük bir deneme yaptım:

  • 900 rastgele puan üretti
  • onları minimum yayılan ağaç kullanarak bağladılar
  • ortasında bir yerde lavabo aldı

resim açıklamasını buraya girin

  • yönlü grafik oluşturmak için bağlantıları çevirdi, yani her bir düğüm sonunda aynı lavaboya akıyor

resim açıklamasını buraya girin

  • 30 ortalama "boyutu" almaya çalışırken büyük olanlar içine küçük havza toplamak için kullandığım komut dosyası koştu.

SONUÇ:

resim açıklamasını buraya girin

İlginizi çekiyorsa bana bildirin, betiği kazabilirim (zaten bu sitede bir yerde yayınlanmış olabilir) veya iş akışını daha ayrıntılı olarak açıklayabilirim. ArcGIS kullandım.

-------------------------------------

** GÜNCELLEME Eylül 2017

Yukarıdakine çok benzer, ancak raster yaklaşımı, ArcGIS'ten Mesafe ve Hidroloji araçları kullanılır. Zor kısmı, minimum yayılan ağacın oluşturulması ve raster formatında 'yakalama' çıkışlarının bulunmasıdır.

İzlediğim adımlar şunlardır:

  • Düğümleri üçgenleyin (kümeye işaret eder), üçgen ağ kenarlarını ayıklayın, düğümleri AĞIRLIK rasterine dönüştürün :

resim açıklamasını buraya girin

  • Kenarlar tablosundaki hesaplama alanı: (ShapeLength ^ 3 / 1e6) kullanıyorum. Raster dönüştürmek, COST raster oluşturmak için çok yüksek değer boşlukları doldurun . Bu, birbirine yakın noktalar arasındaki akışı teşvik eder. Akış yollarının lavaboya doğru giden düz çizgilere yakın olmak yerine minimum yayılma ağacına (MST) benzeyeceği umulmaktadır.
  • Herhangi bir düğümü (OUTLET / SINK) seçin ve kaynak olarak COST yüzeyini ve SINK kullanarak Cost Back Link raster'ı oluşturun. Geri bağlantı raster kullanarak iyi Akış Yön raster dönüştürün Int(Power(2,"backlink"-1)). Akış yönü ve ağırlık rasterini kullanarak akışı biriktirin. Maliyet atama hilesi gerçekten MST'ye benzer bir şey üretir:

resim açıklamasını buraya girin

Puanları 50'ye göre gruplamaya karar verdim. Ağın fraktal yapısını akılda tutarak, sınırı 'Yüksek Akış Akımları' başlangıcında, yani Con ("FlowAccum"> 45,1) başında biraz daha düşük INLET puanları belirledim. Girişler, hücreler olarak tanımlanır.

Yüksek Akış var ve odak istatistikleri = 2 ve hücre bir EVYE değil (Akış Yönünde veri değeri yok) :

resim açıklamasını buraya girin

Havzaları tanımlamak için girişleri akma noktaları ve akış yönü olarak kullanın. Resimde elde edilen 115 havza gösterilmektedir:

resim açıklamasını buraya girin

İstatistikleri: ortalama = 50.33, min = 46 ve maks = 74.

İkinci havza setini elde etmek için, önceden tanımlanmış havzalarda AĞIRLIK rasterini silmek, Akış Toplama'yı hesaplamak vb.

Yöntem, raster tabanlı olduğu için milyonlarca puan için işe yarayacak, bu sayıların üçgenlenmesi de bir sorun olmayacak.


1
Bunun benim için kullanılabilir olup olmayacağını bilmiyorum, ama cehennem gibi ilginç görünüyor ... Eğer mümkünse komut dosyasını gönderin.
Devdatta Tengshe

Senaryoyu bugün ya da Pazartesi sonrası göndereceğim, işten bir gün izin aldım. Bu arada arkasındaki fikri tarif ettiğim gis.stackexchange.com/questions/179559/… ' a bir göz atın
FelixIP

Bir gecede 100.000 puan üzerinde test ettim. Son adım 6 saate yaklaştı ve en azından ArcGIS'te değil, yaklaşma yok . MST'yi kendim kodlamak zorunda olduğumdan bahsetmiyorum, çünkü Patterson'un aracı I sıkışmıştı.
FelixIP

Çözmeyi başardın mı? Raster yaklaşım kullanarak yaptığım, bu ilgi varsa iş akışı gönderebilirsiniz /
FelixIP

Lütfen yap. Amacım için yeterince iyi bir Bruteforce yöntemi ile çözdüm; Ama eminim başkaları sizin yeni yaklaşımınızdan faydalanabilir.
Devdatta Tengshe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.