특징을 지적하기 위해 고유 ID를 할당


10

MassGIS 소포 표준 (http://www.mass.gov/mgis/ParstndrdVer1_5_1.pdf)은 x 및 y 좌표의 정수 부분을 연결하여 피처의 고유 ID (LOC_ID)를 만듭니다. 포인트 피쳐 클래스에 대해서도 동일한 작업을 고려하고 있습니다. 나는 일관된 방법론을 좋아하지만 아마도 뭔가를 간과하고있을 것입니다. 포인트 피처에 대한 고유 ID를 만드는 표준 또는 모범 사례가 있습니까?


후속 질문 : DBMS (SQL Server) 또는 GIS 소프트웨어 (ArcGIS)에서 고유 ID를 작성하고 유지하는 것이 가장 좋습니까?
cwb

1
프로젝트에 대한 자세한 내용을 제공 할 수 있습니까? 기능은 무엇을 나타 냅니까? 그들은 이미 고유 한 고유 ID를 가지고 있습니까? 이 번호를 사용하여 무엇을 계획하고 있습니까 (예 : 추적 기능, 다른 데이터 소스에 대한 링크 등)이 모든 것이 ID 생성을 처리하는 가장 좋은 방법입니다.
Chris M

포인트 피처는 캐치 분지를 나타냅니다. 고유 한 고유 ID가 없습니다. DPW 직원은 집수구 청소 프로그램에 대한 정보 테이블에 연결하려고합니다. 자세한 내용은 없지만 현장 직원이 청소가 진행될 때, 물동이의 상태 등을 기록 할
것이라고 생각합니다

분지의 경우 오토 보틴 번호가 있습니다. 내 추측은 그것이 독특하다는 것입니다. 방법론을 이해하기 위해 ottobacia (ottobasins)를 찾으십시오. 포르투갈어로만 결과를 찾았습니다.
George Silva

답변:


18

다른 테이블과 관련하여 외래 키와 같은 것으로 해당 ID를 사용하면 어떤 이유로 포인트를 이동해야 할 경우 전체 데이터베이스에 큰 문제가 발생합니다. 아마도 xy 좌표를 더 이상 설명하지 않더라도 id를 유지해야 할 것입니다.

대부분의 데이터가 변경 될 수 있으므로 고유 키는 종종 데이터에 대해 아무 것도 말하지 않는 것이 가장 좋습니다.

/ 니클라스


7
+1 절대로 무언가를 의미하거나 비즈니스 데이터를 사용하는 ID를 절대 사용하지 마십시오. 내 직장에서 누군가 ID에 도로 이름을 사용하고 도로 이름을 변경해야했기 때문에 화상을 입었으므로 ID가 잘못되었습니다.
Nathan W

4

Nicklas 답변과 내 의견에 추가하십시오.

가장 많이 사용되는 규칙이라고 말하고 가장 권장되는 것은 자동 증가 ID를 사용하는 것입니다. 예를 들어 1에서 시작하여 계속 진행하십시오. 논리가없고 단순합니다.

분산 시스템이 있거나 자동 증가 숫자가 마음에 들지 않으면 GUID를 사용할 수 있습니다. 대부분의 데이터베이스는 이러한 종류의 ID 작성을 처리합니다. 그러나 사용자가 수동으로 입력하거나 검색하는 데 어려움을 겪기 때문에 명심하십시오.

다른 옵션은 일종의 데이터 해시를 사용하는 것이지만 권장하지는 않습니다. 그것은 당신을 위해이 작업을 수행하기 위해 알고리즘을 작성해야한다는 것을 의미하며, 항상 독창성을 보장 할 수는 없으며 검색을 위해 입력하는 것이 고통스러운 경향이 있습니다.

이것들은 내 의견 일 뿐이지 만 개인적인 경험을 통해 나를 믿고 비즈니스 ID를 ID로 사용하지 마십시오.


4

후속 질문 : DBMS (SQL Server) 또는 GIS 소프트웨어 (ArcGIS)에서 고유 ID를 작성하고 유지하는 것이 가장 좋습니까?

DBMS 내부에서 고유성을 확인하는 것이 좋습니다. 이것이 DBMS의 많은 장점 중 하나입니다. 또한 고유 제한 조건을 인식하지 못하는 다른 GIS 소프트웨어를 사용하여 데이터에 액세스 할 수 있습니다.


3

우리의 식별 체계는 나에 의해 선택되지 않았지만 다음과 같습니다 : 자산 클래스와 6 자리 순차 번호 인 2,3,4 문자 코드 (자릿수에 맞는 숫자를 선택하십시오). 저장 프로시 저는 이러한 ID를 생성하고 동일한 SQL Server 데이터베이스의 비지오 데이터베이스 테이블에 의존합니다.

별도의 순차적 자동 증분 ID를 유지합니다. 또한 13 문자 geohash 필드 (포인트 기능 용)를 유지하지만 절대 키로 사용하지는 않습니다. 피처를 이동할 때마다 필드가 자동으로 채워집니다 (사용자 정의 편집기 확장으로).

GIS 데이터를 모든 종류의 자산 관리 시스템과 함께 사용하려는 경우 ID가 지오 데이터베이스 내에서 고유하게 (그리고 아마도 조직 내 모든 지오 데이터베이스 내에서 고유해야 함) 원합니다. 또한 향후 지리 데이터베이스 리팩토링을 좀 더 쉽게 할 수 있습니다.


1

Perrsonally 나는 과거에 비슷한 값을 만들기 위해 CRC 계산을 사용했습니다. 만들기가 어렵지 않고 온라인으로 라이브러리 / 알고리즘을 사용할 수 있습니다.

이점은 포인트보다 큰 피쳐를 수행 할 수있는 반면 연결은 실제로 포인트 키만 필요하다는 것입니다 (실제로 큰 키를 원하지 않는 한).

어쨌든 최종 사용자 가이 ID로 검색하지 않을 것 같으므로 문제로 보지 않습니다.

그렇게 말했지만, ID를 할당하면 많은 명백한 이점이 없습니다. 변경 감지 방법을 사용할 수 있습니다 (두 세트의 지오메트리보다 두 개의 CRC 값을 비교하는 것이 효율적이지 않기 때문에). 그러나 왜 그것을 기본 ID로 사용합니까?


1

"GUID는 물론 VB Script를 사용하여 생성 할 수 있습니다. 그러나 ESRI에 의한 VB Script의 점진적인 디엠 퍼시스를 감안할 때, 우리는 세계 9 번째 불가사의 인 Python을 사용하여 ArcMap에서 GUID 생성을 수행 할 것입니다. "파이썬은 GIS 해커를 심의하는 하나님의 선물입니다. 내 충고 : 배우고, 살아보세요! 사랑합니다!"

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


0

ESRI의 Arc Hydro Tools 는 백그라운드에서 실행되는 고유 ID 관리자를 설치하는 툴바와 함께 제공됩니다. 툴바를 사용하면 지형지 물 클래스 또는 지오 데이터베이스별로 고유 한 ID를 할당 할 수 있습니다. 기본적으로 ID 관리자는 Arc Hydro 데이터 모델의 일부인 HydroID와 같은 고유 ID 속성 만 처리합니다. 그러나 다른 속성도 처리하도록 설정할 수 있습니다. 이 도구에는 많은 설명서가 포함되어 있으므로 ID 관리자를 필요에 맞게 구성해도 문제가되지 않습니다.

내가 아는 한 고유 ID는 항상 정수입니다. 관리자가 고유 ID를 할당 한 후 관리자는 구성에 맞는 새로 작성된 모든 기능에 대해 새 고유 ID를 할당합니다.

고유 ID 관리자는 (AFAIK) 개인 지리 데이터베이스와 같은 자동 증가 숫자를 지원하지 않는 데이터베이스 백엔드에 유용 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.