SQL Server geometri satırında (ArcSDE) yinelenen köşeleri bulma


10

Geçersiz bir geometriye sahip bir ZM çoklu çizgi özellik sınıfı içinde bir satır var. Benim şüphe hattı SQL Server hoşlanmadığı buldum bir yere kendi üzerine iki katına olmasıdır. Herkes benim geometri kriko şüpheli kötü noktaları tanımlamak yardımcı olabilir hızlı bir SQL yöntemi veya sorgu biliyor musunuz? Dize gösterimi şöyle görünür:

1835815.86 12887142.42 0 0, 1835816.72 12887142.68 170 170, 1835817.53 12887142.76 349.99 350, 1835817.52 12887142.76 559.99 560, 1835817.78 12887142.76 659.99 660, ....

Ayrıca, ben düzenli bir ifade ve ileriye bakmak ve / veya yinelenen sayılar bulmak için arkasına bakmak olabilir merak ediyorum?

Yanıtlar:


5

İşte Python ile bir yol. Linestring ikilisini dize olarak veritabanından alın:

select shape.ToString() from table_in_sde

daha sonra bunu al ve python'da bir değişkene koy, dupları bulmak için bazı regex, liste ve sözlük iyiliği kullan (dürüst olmak gerekirse, sözlük dup şeyler bulmak için Googled):

>>> import re
>>> s = 'LINESTRING (1835815.86 12887142.42 0 0, 1835816.72 12887142.68 170 170, 1835817.53 12887142.76 349.99 350, 1835817.52 12887142.76 559.99 560,....)'
>>> l = re.findall(r'(\d+.\d{2})\s',s)

>>> icount = {}
>>> for i in l:
...     icount[i] = icount.get(i,0) + 1

>>> for key, value in icount.iteritems():
...     if value > 1:
...             dups[key] = value
...
>>> dups
{'12887142.42': 2, '12887142.76': 3, '3081.28': 2}
>>>

Üçüncü sözlük öğesi önemsizdir (Z değerleri ve birden çok kez mevcut olabilirler). İlk iki öğe yinelenen Y değerleridir. Anahtar koordinattır, değer dizede kaç kez göründüğünün sayısıdır.


3

Regex rota aşağı gitmeden önce SQL Server'ın ile başlayacak STIsValid () ile kombinasyon halinde MakeValid () . SDE tarafındaki şeyleri kontrol etmek istiyorsanız, sdelayer -o feature_info -r invalid komutunu kullanın .


MakeValid () ile ilgili sorun, Z amd M değerlerinin hesaplamalarda taşınmamasıdır, bu nedenle MakeValid () işlevinin bir ZM linestring üzerinde çalıştırılması, Z am M değerleri olmayan çok satırlı sonuç ile sonuçlanır ve ZM değerlerim olması gerekir.
Chad Cooper

Ah, bunun farkında değildim. STIsValid () kötü geometrilerinizi işaretliyor mu?
Derek Swingley

Evet, STIsValid () işareti geçersiz.
Chad Cooper
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.