ST_Union kullanarak ArcGIS for Desktop'tan Dissolve'e eşdeğer nasıl elde edilir?


11

PostGIS'ten ST_Union kullanarak ArcGIS for Desktop'tan Dissolve aracına eşdeğer bir başarı elde etmeye çalışıyorum, ancak beklenen sonucu almıyorum gibi görünüyor.

Çokgen Geometrisi ile belirli özniteliklere sahip bir tablo var. (FID, Locstat, Loccnt, Shape gibi)

İşte benim sorgu:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;

1
Hangi sonuçları beklediğinizi ve ne elde ettiğinizi açıklayabilir misiniz? Çalışıyor: SELECT AsText (ST_Union ...) FROM ... hatayı bulmanıza yardımcı olabilir.
Micha

Tabloda 6842 kayıt var, ArcGIS sonuçlarına göre ben sorgu olarak 6842 kayıtları alıyorum 1683 kayıtları almak gerekir. Ayrıca bana null Geometri ile 742 Kayıt vermek ST_Aggr_Union denedim.
Dhams

Yanıtlar:


14

Sorununuz büyük olasılıkla gruba göre eklediğiniz içerikten kaynaklanıyor olabilir.

ST_UNION bir toplama işlevidir, yani GROUPparametre olarak belirttiğiniz şeye göre çözülür .

Girdiğiniz bilgiler:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;

Buna göre fid, muhtemelen benzersiz bir tanımlayıcı olan ve ayrıca boundaryshapegeometri olan, göre gruplandırıyorsunuz . Buradaki sorun, benzersiz bir kimliği paylaşan özelliklerin aynı geometrilere sahip olması pek olası değildir. Bu nedenle, ST_Unionmuhtemelen aşağıdaki gibi bir şeyle sonuçlanacaktır:

Input:   
fid     boundaryshape  
1         11  
1         12  
1         11  
1         13  
2         12  
2         13  
2         12  
3          5  
3          2  
3          4  

Output:  
fid     boundaryshape  
1        (11 + 11)  
1        12  
1        13  
2        (12 + 12)  
2        13  
3        2  
3        4  
3        5

Bu durumda, fidkurtulmaya çalıştığınız aynı yinelenen geometrilere sahip değilseniz, yalnızca benzersiz tanımlayıcınıza dayalı olarak çözünmelisiniz . Ancak bu durumda bile, sadece grup bazında gruplandırmanız gerekir fidve birlik geometri çoğalmasına dikkat eder.

Aşağıdakileri deneyeceğim:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;

Bu, ortak özelliğe göre tüm özellikleri çözmenin istenen sonucunu vermelidir fid.

PostGIS sitesindeki yardım belgesi: ST_Union

Altta listelenen ilk örneğe bakın ve geometriyi grup bölüm bölüm içermediğine dikkat edin.


1
Bazı durumlarda, birleşim yapmadan önce geometrileri ızgaraya yapıştırmak daha iyidir: SELECT ST_Union (ST_SnapToGrid (geom, 0.0001)) FROM geo_area grubundan level_identifier;
Maxim Eliseev
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.