назначить уникальный идентификатор точечным объектам

10

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

CWB
источник
Следующий вопрос: лучше ли создавать и поддерживать уникальный идентификатор в СУБД (SQL Server) или в программном обеспечении ГИС (ArcGIS)?
cwb
1
Можете ли вы предоставить более подробную информацию о вашем проекте. Что представляют собой функции? У них уже есть естественный уникальный идентификатор. Для чего вы планируете использовать этот номер (т. Е. Функция отслеживания, ссылки на другие источники данных и т. Д.). Все это влияет на лучший способ обработки создания идентификатора.
Крис М
Точечные элементы представляют собой уловные бассейны. Там нет естественного уникального идентификатора. Сотрудники DPW хотят дать ссылку на таблицу информации о программе очистки водосборного бассейна. У меня нет более подробной информации, но я предполагаю, что персонал на местах будет делать заметки о том, когда была проведена уборка, о состоянии водосборного бассейна и т. Д.
cwb
для бассейнов у вас есть номер для оттобаков. Я думаю, что это уникально. ищите отобаксию (ottobasins), чтобы овладеть методологией. Я нашел результаты только на португальском.
Джордж Сильва

Ответы:

18

Если вы используете этот идентификатор для чего-то вроде внешнего ключа по отношению к другой таблице, вся ваша база данных столкнется с большими проблемами, если вам по какой-то причине придется переместить точку. Возможно, вам придется сохранить идентификатор, даже если он больше не описывает координаты xy.

В качестве уникального ключа часто лучше всего иметь что-то, что ничего не говорит о данных, потому что большинство данных может измениться.

/ Никлас

Никлас Авен
источник
7
+1 Никогда и никогда не используйте идентификаторы, которые что-то значат или используют в них бизнес-данные. Кто-то на моей работе просто сгорел, потому что они использовали названия дорог в удостоверении личности, и вот, имя дороги пришлось изменить, теперь удостоверение неверно.
Натан W
4

Добавление от Никласа ответа и моего комментария.

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

Если у вас распределенная система или вам не нравятся автоматически увеличивающиеся числа, вы можете использовать GUID. Большинство баз данных будут обрабатывать создание такого рода идентификатора для вас. Однако пользователю неудобно вводить данные вручную, для поиска и т. Д., Так что имейте это в виду.

Другой вариант - использовать какой-то хэш данных, но я бы не рекомендовал это. Это означало бы, что вам нужно написать алгоритм, чтобы сделать это для вас, вы не всегда можете гарантировать уникальность, они также, как правило, доставляют боль при поиске.

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

Натан У
источник
4

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

Я настоятельно рекомендую проверить уникальность внутри СУБД. Это одна из сильных сторон СУБД. Это также позволяет вам получать доступ к вашим данным с помощью другого программного обеспечения ГИС, которое, вероятно, не будет знать об уникальных ограничениях.

Подземье
источник
3

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

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

Если ваши ГИС-данные будут использоваться с какой-либо системой управления активами, вы хотите, чтобы ваши идентификаторы были глобально уникальными в вашей базе геоданных (и, возможно, уникальными во всех базах геоданных в вашей организации). Это также облегчит рефакторинг базы геоданных в будущем.

Джей Камминс
источник
1

В прошлом я использовал вычисления CRC для создания аналогичных значений. Не так уж сложно создать и библиотеки / алгоритмы доступны онлайн.

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

И я думаю, что вряд ли конечный пользователь будет искать по этому идентификатору, так что я не вижу в этом проблемы.

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

Марк Ирландия
источник
1

«Конечно, GUID могут быть сгенерированы с использованием VB Script. Но, учитывая постепенный упадок VB Script от ESRI, мы выполним генерацию GUID в ArcMap, используя девятое чудо света, Python. Для тех, кто еще не в знаешь, Python - это дар Бога заядлым хакерам ГИС. Мой совет: учись, живи! люби! »

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

Саймон
источник
0

Инструменты Arc Hydro от ESRI поставляются с панелью инструментов, на которой также устанавливается уникальный ID-менеджер, работающий в фоновом режиме. Панель инструментов позволяет назначать уникальные идентификаторы для каждого класса пространственных объектов или для каждой базы геоданных. Менеджер ID по умолчанию обрабатывает только уникальные атрибуты ID, называемые, например, HydroID, который является частью модели данных Arc Hydro. Но его можно настроить и для других атрибутов. Инструменты поставляются с большой документацией, поэтому настройка ID-менеджера в соответствии с вашими потребностями не должна быть проблемой.

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

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

И один
источник