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?
10
Odpowiedzi:
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
źródło
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.
źródło
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ń.
źródło
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.
źródło
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?
źródło
„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
źródło
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.
źródło