przypisz unikalny identyfikator do obiektów punktowych

10

Standard paczki MassGIS (http://www.mass.gov/mgis/ParstndrdVer1_5_1.pdf) wykorzystuje konkatenację części liczbowej współrzędnych xi y, aby stworzyć unikalny identyfikator (LOC_ID) dla obiektów. Zastanawiam się nad zrobieniem tego samego w przypadku klasy obiektów punktowych. Lubię spójną metodologię, ale być może coś pomijam. Czy istnieje standardowa lub najlepsza praktyka tworzenia unikalnych identyfikatorów dla obiektów punktowych?

cwb
źródło
Dalsze pytanie: czy najlepiej jest utworzyć i utrzymywać unikalny identyfikator w DBMS (SQL Server) lub w oprogramowaniu GIS (ArcGIS)?
cwb
1
Czy możesz podać więcej szczegółów na temat swojego projektu. Co oznaczają funkcje? Czy mają już naturalny unikalny identyfikator? Do czego zamierzasz użyć tego numeru (tj. Funkcja śledzenia, link do innych źródeł danych itp.) Wszystkie te czynniki wpływają na najlepszy sposób obsługi tworzenia identyfikatorów.
Chris M
Funkcje punktowe reprezentują baseny połowowe. Nie ma naturalnego unikalnego identyfikatora. Pracownicy DPW chcą połączyć się z tabelą informacji o programie czyszczenia basenu. Nie mam więcej szczegółów, ale przypuszczam, że personel w terenie będzie robił notatki, kiedy miało miejsce czyszczenie, stan
akwarium
dla umywalek masz numer ottobasins. Domyślam się, że jest wyjątkowy. poszukaj ottobacia (ottobasins), aby opanować metodologię. Znalazłem tylko wyniki w języku portugalskim.
George Silva,

Odpowiedzi:

18

Jeśli użyjesz tego identyfikatora do czegoś takiego jak klucz obcy w stosunku do innej tabeli, cała baza danych będzie miała poważne kłopoty, jeśli z jakiegoś powodu będziesz musiał przenieść punkt. Prawdopodobnie będziesz musiał zachować identyfikator, nawet jeśli nie opisuje on już współrzędnych xy.

Jako unikalny klucz często najlepiej jest mieć coś, co nie mówi nic o danych, ponieważ większość danych może się zmienić.

/ Nicklas

Nicklas Avén
źródło
7
+1 Nigdy nie używaj identyfikatorów, które coś znaczą, ani nie wykorzystuj w nich danych biznesowych. Ktoś w mojej pracy właśnie spłonął, ponieważ używał nazw dróg w identyfikatorze, a oto nazwa drogi musiała zostać zmieniona, teraz identyfikator jest błędny.
Nathan W
4

Dodanie odpowiedzi od Nicklasa i mojego komentarza.

Powiedziałbym, że najczęściej stosowaną konwencją i najbardziej zalecaną jest po prostu użycie identyfikatora automatycznego zwiększania, np. Zacznij od 1 i po prostu kontynuuj. Bez logiki i proste.

Jeśli masz system rozproszony lub nie lubisz automatycznego zwiększania liczb, możesz użyć identyfikatora GUID. Większość baz danych poradzi sobie z tworzeniem tego rodzaju identyfikatora. Jednak jest to dla użytkownika utrudnieniem dla ręcznego wprowadzania, wyszukiwania itp., Więc pamiętaj o tym.

Inną opcją jest użycie pewnego rodzaju skrótu danych, ale nie poleciłbym tego. Oznaczałoby to, że gdybyś musiał napisać algorytm, aby zrobić to za Ciebie, nie zawsze możesz zapewnić wyjątkowość, są też trudnością w poszukiwaniu.

To tylko moje opinie, ale z własnego doświadczenia, zaufaj mi, nigdy nie używaj danych biznesowych w identyfikatorach.

Nathan W.
źródło
4

Dalsze pytanie: czy najlepiej jest utworzyć i utrzymywać unikalny identyfikator w DBMS (SQL Server) lub w oprogramowaniu GIS (ArcGIS)?

Zdecydowanie sugeruję sprawdzenie wyjątkowości w DBMS. To jedna z wielu zalet DBMS. Umożliwia także dostęp do danych za pomocą innego oprogramowania GIS, które prawdopodobnie nie byłoby świadome wyjątkowych ograniczeń.

podmrok
źródło
3

Nasz schemat identyfikacji nie został wybrany przeze mnie, ale jest następujący: 2,3,4-znakowy kod, który jest klasą aktywów i 6-cyfrowy numer sekwencyjny (wybrałbyś dla siebie dowolną liczbę cyfr). Procedura składowana tworzy te identyfikatory i opiera się na kilku tabelach innych niż geobaza w tej samej bazie danych SQL Server.

Mam osobny, sekwencyjny identyfikator automatycznego przyrostu. Posiadam również pole geohash 13 znaków (dla obiektów punktowych), ale nigdy nie użyłbym tego jako klucza. Pole jest automatycznie wypełniane (niestandardowym rozszerzeniem edytora) za każdym razem, gdy funkcja jest przenoszona.

Jeśli twoje dane GIS mają być używane z dowolnym systemem zarządzania zasobami, będziesz chciał, aby twoje identyfikatory były globalnie unikalne w twojej geobazie (i być może unikalne we wszystkich geobazach w twojej organizacji). Ułatwi to również refaktoryzację geobazy w przyszłości.

Jay Cummins
źródło
1

Perrsonally używałem obliczeń CRC w przeszłości do tworzenia podobnych wartości. Tworzenie niezbyt trudnych bibliotek i algorytmów jest dostępnych online.

Zaletą jest to, że możesz wykonywać operacje większe niż punkty, podczas gdy konkatenacja naprawdę musiałaby być tylko funkcjami punktowymi (chyba że potrzebujesz naprawdę ogromnego klucza).

I myślę, że jest mało prawdopodobne, aby użytkownik końcowy i tak szukał tego identyfikatora, więc nie uważam tego za problem.

Powiedziawszy to, nie widzę wielu wyraźnych korzyści z przypisywania takiego identyfikatora. Mógłbym użyć metody wykrywania zmian (ponieważ jest o wiele bardziej wydajne porównywanie dwóch wartości CRC niż dwóch zestawów geometrii), ale nawet wtedy - po co używać jej jako podstawowego identyfikatora?

Mark Ireland
źródło
1

„Identyfikatory GUID można oczywiście generować za pomocą skryptu VB. Jednak biorąc pod uwagę stopniowe odrzucanie skryptu VB przez ESRI, przeprowadzimy generowanie identyfikatorów GUID w ArcMap przy użyciu dziewiątego cudu świata, Python. Dla tych z was, którzy nie są jeszcze w wiem, że Python jest darem Bożym, który ma na celu zaatakować hakerów GIS. Moja rada: Naucz się! Żyj! Kochaj!

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

Szymon
źródło
0

Arc Hydro Tools firmy ESRI są wyposażone w pasek narzędzi, który również instaluje unikalny menedżer identyfikatorów działający w tle. Pasek narzędzi pozwala przypisywać unikalne identyfikatory dla poszczególnych klas obiektów lub geobazy. Menedżer identyfikatorów domyślnie obsługuje tylko unikalne atrybuty identyfikatorów zwane np. HydroID, który jest częścią modelu danych Arc Hydro. Ale można go skonfigurować tak, aby obsługiwał także inne atrybuty. Narzędzia są dostarczane z dużą ilością dokumentacji, więc skonfigurowanie menedżera identyfikatorów do własnych potrzeb nie powinno stanowić problemu.

Według mojej wiedzy unikatowy identyfikator jest zawsze liczbą całkowitą. Po przypisaniu unikalnych identyfikatorów menedżer zajmuje się przypisywaniem nowych unikalnych identyfikatorów do każdej nowo utworzonej funkcji, która pasuje do konfiguracji.

Unikalny menedżer identyfikatorów może być przydatny w przypadku baz danych bazy danych, które (AFAIK) nie obsługują automatycznego zwiększania liczb, takich jak osobna geobaza.

I jeden
źródło