ค้นหาจุดยอดที่ซ้ำกันในบรรทัดเรขาคณิตของเซิร์ฟเวอร์ SQL (ArcSDE)


10

ฉันมีบรรทัดหนึ่งในคุณลักษณะคลาสโพลีไลน์ ZM ที่มีรูปทรงเรขาคณิตที่ไม่ถูกต้อง ความสงสัยของฉันคือเส้นนั้นกลับมาอยู่ที่ใดที่หนึ่งซึ่งฉันพบว่า SQL Server ไม่ชอบ ใครรู้วิธีการ SQL ด่วนหรือแบบสอบถามที่สามารถช่วยฉันระบุจุดที่น่าสงสัยว่าเป็นสิ่งที่เพิ่มขึ้นในเรขาคณิตของฉันได้อย่างไร การแทนค่าสตริงมีลักษณะดังนี้:

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, ....

นอกจากนี้ฉันสงสัยว่าฉันสามารถใช้การแสดงออกปกติและมองไปข้างหน้าและ / หรือมองด้านหลังเพื่อหาตัวเลขที่ซ้ำกัน?

คำตอบ:


5

นี่เป็นวิธีหนึ่งด้วย Python รับไบนารี linestring เป็นสตริงจากฐานข้อมูล:

select shape.ToString() from table_in_sde

จากนั้นนำสิ่งนั้นมาใส่ในตัวแปรในไพ ธ อนใช้ regex, list และ dictionary goodness เพื่อค้นหา dups (พูดตามตรงฉัน 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}
>>>

รายการพจนานุกรมที่สามไม่เกี่ยวข้อง (มันเป็นค่า Z และพวกเขาสามารถนำเสนอครั้ง muliple) สองรายการแรกเป็นค่า Y ที่ซ้ำกัน Key คือค่าพิกัดคือจำนวนครั้งที่ปรากฏในสตริง


3

ก่อนที่จะไปลงเส้นทาง regex ที่ผมจะเริ่มต้นด้วยของ SQL Server STIsValid ()ร่วมกับMakeValid () หากคุณต้องการที่จะตรวจสอบสิ่งที่ออกในด้าน SDE ใช้sdelayer -o feature_info -r ที่ไม่ถูกต้อง


ปัญหาเกี่ยวกับ MakeValid () คือค่า Z amd M ไม่ได้ถูกนำมาใช้ในการคำนวณดังนั้นการเรียกใช้ MakeValid () บน ZM จะทำให้ผลลัพธ์มีหลายระดับโดยไม่มีค่า Z am M และฉันต้องมีค่า ZM ของฉัน
Chad Cooper

อาฉันไม่รู้เรื่องนั้น STIsValid () ตั้งค่าสถานะรูปทรงเรขาคณิตที่ไม่ดีของคุณหรือไม่
Derek Swingley

ใช่ STIsValid () ทำเครื่องหมายว่าไม่ถูกต้อง
Chad Cooper
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.