призначити унікальний ідентифікатор для точкових функцій


10

Стандарт посилки MassGIS (http://www.mass.gov/mgis/ParstndrdVer1_5_1.pdf) використовує об'єднання цілої частини числових координат x- та y для створення унікального ідентифікатора (LOC_ID) для функцій. Я думаю про те, щоб зробити те ж саме для точкового класу функцій. Мені подобається послідовна методологія, але, можливо, я щось пропускаю. Чи існує стандартна чи найкраща практика створення унікальних ідентифікаторів для точкових функцій?


Подальше запитання: Чи найкраще створювати та підтримувати унікальний ідентифікатор у СУБД (SQL Server) або в програмному забезпеченні GIS (ArcGIS)?
cwb

1
Чи можете ви надати більш детальну інформацію про ваш проект. Що представляють особливості? У них вже є природний унікальний ідентифікатор. Для чого ви плануєте використовувати це число (тобто функцію відстеження, посилання на інші джерела даних тощо). Це все враховує найкращий спосіб обробляти ідентифікатор.
Кріс М

Особливості точки представляють басейни улову. Природного унікального ідентифікатора немає. Працівники DPW хочуть прив’язати до таблиці інформації про програму очищення улову басейну. У мене немає більше деталей, але припускаю, що персонал на місцях буде робити записки про те, коли відбулася чистка, стан басейну вилову тощо.
cwb

для басейнів у вас номер оттобасу. Я здогадуюсь, що він унікальний. шукайте отобацію (отобасини), щоб зрозуміти методику. Я знайшов результати лише на португальській мові.
Джордж Сільва

Відповіді:


18

Якщо ви використовуєте цей ідентифікатор для чогось на зразок зовнішнього ключа по відношенню до іншої таблиці, вся ваша база даних матиме великі проблеми, якщо вам доведеться перенести крапку з якоїсь причини. Ймовірно, тоді вам доведеться зберегти ідентифікатор, навіть якщо він більше не описує координати xy.

Оскільки унікальний ключ часто найкраще мати щось, що нічого не розповідає про дані, тому що більшість даних може змінитися.

/ Ніклас


7
+1 Ніколи ніколи не використовуйте ідентифікатори, які щось означають, або не використовуйте в них бізнес-дані. Хтось на моїй роботі просто згорів, тому що він використовував назви доріг у посвідченні особи, і ось ось назву дороги потрібно було змінити, тепер ідентифікатор невірний.
Nathan W

4

Додавання від відповіді Нікласа та мого коментаря.

Я б сказав, що найчастіше використовується звичайний конвент, і найбільш рекомендується використовувати просто ідентифікатор автоматичного збільшення, наприклад, починати з 1 і просто продовжувати. Без логіки і просто.

Якщо у вас розподілена система або вам не подобається автоматичне збільшення номерів, ви можете використовувати GUID. Більшість баз даних працюватимуть із створенням такого типу ідентифікатора для вас. Однак користувачеві це болісно вводити вручну, для пошуку тощо, тому просто пам’ятайте про це.

Інший варіант - використовувати якийсь хеш даних, але я б не рекомендував цього. Це означало б, що вам потрібно написати алгоритм, щоб це зробити для вас, ви не завжди можете забезпечити унікальність, вони також мають біль для пошуку.

Це лише моя думка, але з особистого досвіду, повірте, ніколи не використовуйте бізнес-дані в посвідченнях особи.


4

Подальше запитання: Чи найкраще створювати та підтримувати унікальний ідентифікатор у СУБД (SQL Server) або в програмному забезпеченні GIS (ArcGIS)?

Я настійно пропоную перевірити унікальність всередині СУБД. Це одна з багатьох переваг СУБД. Це також дозволяє отримати доступ до своїх даних за допомогою різного програмного забезпечення GIS, яке, ймовірно, не знало б про унікальні обмеження.


3

Наша схема ідентифікації не була обрана мною, але така: 2,3,4 символьного коду, що є класом активу, і 6-розрядним послідовним номером (ви вибрали б те, яке число цифр працює для вас). Збережена процедура створює ці ідентифікатори та спирається на пару таблиць без геоданих у тій самій базі даних SQL Server.

Я зберігаю окремий послідовний ідентифікатор автоматичного збільшення. Я також зберігаю поле для геохашів 13 символів (для особливостей точок), але я ніколи не використовую це як ключ. Поле автоматично заповнюється (за допомогою спеціального розширення редактора) під час переміщення функції.

Якщо ваші дані GIS використовуватимуться в будь-якій системі управління активами, вам потрібно, щоб ваші ідентифікатори були глобально унікальними у вашій базі даних геоданих (і, можливо, були унікальними у всіх базах даних геоданих у вашій організації). Це також трохи спростить майбутнє рефакторинг геоданих.


1

Персонально я раніше використовував обчислення CRC для створення подібних значень. Не надто складно створити, а бібліотеки / алгоритми доступні в Інтернеті.

Перевага полягає в тому, що ви можете робити функції, що перевищують точки, тоді як конкатенація справді повинна бути лише точковими функціями (якщо ви не хочете дійсно масивного ключа).

І я думаю, що навряд чи кінцевий користувач все одно шукатиме цей ідентифікатор, тому я не вважаю це проблемою.

Сказавши це, я не бачу багато явних переваг присвоєння такої особи. Я можу використовувати метод виявлення змін (тому що це багаторезультативно порівняти два значення CRC, ніж два набори геометрії), але навіть тоді - навіщо використовувати його як основний ідентифікатор?


1

"GUIDs, звичайно, можуть бути створені за допомогою сценарію VB. Але, зважаючи на поступову деемфазу VB Script від ESRI, ми виконаємо генерацію GUID в ArcMap, використовуючи дев'яте диво світу, Python. знайте, Python - це подарунок Божий для відвертих хакерів ГІС. Моя порада: Дізнайтеся! Живіть! Любіть це! "

http://eaglemap.com/blog/bid/45555/How-to-Generate-GUIDs-in-ArcMap


0

Arc Hydro Tools ESRI поставляються з панеллю інструментів, яка також встановлює унікальний менеджер ідентифікаторів, який працює у фоновому режимі. Панель інструментів дозволяє призначити унікальні ідентифікатори для класу характеристик або за базою геоданих. Менеджер ідентифікаторів за замовчуванням обробляє лише унікальні атрибути ID, які називаються, наприклад, HydroID, що є частиною моделі даних Arc Hydro. Але він може бути налаштований і для обробки інших атрибутів. Інструменти оснащені великою кількістю документації, тому налаштування менеджера ідентифікаторів під ваші потреби не повинно бути проблемою.

Наскільки мені унікальний ідентифікатор - це ціле число. Після призначення унікальних ідентифікаторів, як тільки менеджер береться за призначення нових унікальних ідентифікаторів для кожної новоствореної функції, яка відповідає конфігурації.

Унікальний менеджер ідентифікаторів може бути корисним для резервних файлів бази даних, які (AFAIK) не підтримують автоматичне збільшення номерів, таких як особиста база даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.