gán id duy nhất cho các tính năng điểm


10

Tiêu chuẩn bưu kiện MassGIS (http://www.mass.gov/mgis/ParstndrdVer1_5_1.pdf) sử dụng phép nối toàn bộ phần số của tọa độ x và y để tạo id duy nhất (LOC_ID) cho các tính năng. Tôi đang xem xét làm tương tự cho một lớp tính năng điểm. Tôi thích phương pháp nhất quán, nhưng có lẽ tôi đang xem xét một cái gì đó. Có một thực tiễn tiêu chuẩn hoặc tốt nhất để tạo id duy nhất cho các tính năng điểm không?


Câu hỏi tiếp theo: Tốt nhất là tạo và duy trì id duy nhất trong DBMS (SQL Server) hoặc trong phần mềm GIS (ArcGIS)?
cwb

1
Bạn có thể cung cấp thêm chi tiết về dự án của bạn. Các tính năng của teh đại diện cho cái gì? Do họ đã có một ID duy nhất tự nhiên. Bạn dự định sử dụng số này để làm gì (tức là tính năng theo dõi, liên kết đến các nguồn dữ liệu khác, v.v.) Đây là tất cả các yếu tố trong cách tốt nhất để xử lý việc tạo ID.
Chris M

Các tính năng điểm đại diện cho lưu vực đánh bắt. Không có ID duy nhất tự nhiên. Nhân viên DPW muốn liên kết với một bảng thông tin về chương trình làm sạch lưu vực đánh bắt. Tôi không có thêm thông tin chi tiết, nhưng phỏng đoán rằng nhân viên trong lĩnh vực này sẽ ghi chú khi làm sạch diễn ra, tình trạng của lưu vực đánh bắt, v.v.
cwb

đối với lưu vực bạn có số lượng ottobasins. Tôi đoán là nó là duy nhất. tìm kiếm ottobacia (ottobasins) để hiểu rõ hơn về phương pháp luận. Tôi chỉ tìm thấy kết quả ở Bồ Đào Nha.
George Silva

Câu trả lời:


18

Nếu bạn sử dụng id đó cho một cái gì đó giống như một khóa ngoại liên quan đến một bảng khác, toàn bộ cơ sở dữ liệu của bạn sẽ gặp rắc rối lớn nếu bạn phải di chuyển một điểm vì một số lý do. Có lẽ sau đó bạn sẽ phải giữ id ngay cả khi nó không mô tả tọa độ xy nữa.

Vì một khóa duy nhất thường là tốt nhất để có một cái gì đó không nói gì về dữ liệu, bởi vì hầu hết dữ liệu có thể thay đổi.

/ Nicklas


7
+1 Chưa bao giờ sử dụng id có nghĩa là một cái gì đó hoặc sử dụng dữ liệu kinh doanh trong đó. Một người nào đó trong công việc của tôi vừa bị cháy vì họ đã sử dụng tên đường trong ID và lo và tên đường phải được thay đổi, bây giờ ID bị sai.
Nathan W

4

Thêm vào từ câu trả lời của Nicklas và nhận xét của tôi.

Tôi muốn nói rằng quy ước được sử dụng nhiều nhất và được khuyến nghị nhất là chỉ sử dụng ID tăng tự động, ví dụ: bắt đầu từ 1 và cứ tiếp tục. Không logic và đơn giản.

Nếu bạn có một hệ thống phân tán hoặc không thích số tự động tăng, bạn có thể sử dụng GUID. Hầu hết các cơ sở dữ liệu sẽ xử lý việc tạo loại ID này cho bạn. Tuy nhiên, chúng là một nỗi đau cho người dùng nhập thủ công, để tìm kiếm vv, vì vậy chỉ cần ghi nhớ điều đó.

Tùy chọn khác là sử dụng một số loại băm của dữ liệu nhưng tôi không khuyến nghị điều này. Điều đó có nghĩa là bạn sẽ cần phải viết một thuật toán để làm điều này cho bạn, bạn không thể luôn đảm bảo tính duy nhất, chúng cũng có xu hướng gây khó khăn cho việc tìm kiếm.

Đây chỉ là ý kiến ​​của tôi, nhưng từ kinh nghiệm cá nhân, hãy tin tôi, không bao giờ sử dụng dữ liệu kinh doanh trong ID.


4

Câu hỏi tiếp theo: Tốt nhất là tạo và duy trì id duy nhất trong DBMS (SQL Server) hoặc trong phần mềm GIS (ArcGIS)?

Tôi thực sự khuyên bạn nên kiểm tra tính duy nhất bên trong DBMS. Đó là một trong nhiều điểm mạnh của DBMS. Nó cũng cho phép bạn truy cập dữ liệu của mình bằng các phần mềm GIS khác nhau mà có lẽ sẽ không nhận thức được các ràng buộc duy nhất.


3

Lược đồ nhận dạng của chúng tôi không được tôi chọn nhưng như sau: mã 2,3,4 ký tự là loại tài sản và số thứ tự 6 chữ số (bạn sẽ chọn bất kỳ số lượng chữ số nào phù hợp với mình). Một thủ tục được lưu trữ tạo ra các ID này và dựa vào một vài bảng cơ sở dữ liệu phi địa lý trong cùng một cơ sở dữ liệu SQL Server.

Tôi giữ một ID tăng tự động tuần tự riêng biệt. Tôi cũng giữ trường geohash 13 ký tự (cho các tính năng điểm), nhưng tôi sẽ không bao giờ sử dụng nó làm khóa. Trường được tự động điền (bởi tiện ích mở rộng trình chỉnh sửa tùy chỉnh) bất cứ khi nào tính năng được di chuyển.

Nếu dữ liệu GIS của bạn được sử dụng với bất kỳ loại hệ thống quản lý tài sản nào, bạn sẽ muốn ID của mình là duy nhất trên toàn cầu trong cơ sở dữ liệu địa lý của bạn (và có lẽ là duy nhất trong tất cả các cơ sở dữ liệu địa lý trong tổ chức của bạn). Điều này cũng sẽ làm cho việc tái cấu trúc cơ sở dữ liệu địa lý trong tương lai dễ dàng hơn một chút.


1

Trước đây, tôi đã sử dụng các tính toán CRC để tạo các giá trị tương tự. Không quá khó để tạo và thư viện / thuật toán có sẵn trực tuyến.

Ưu điểm ở đây là bạn có thể thực hiện các tính năng lớn hơn điểm, trong khi đó việc ghép nối thực sự chỉ phải là tính năng điểm (trừ khi bạn muốn có một khóa thực sự lớn).

Và tôi nghĩ rằng dù sao thì người dùng cuối cũng không thể tìm kiếm bằng ID này, vì vậy tôi không coi đó là một vấn đề.

Phải nói rằng, tôi không thấy nhiều lợi ích rõ ràng của việc gán ID như thế. Tôi có thể sử dụng phương pháp để phát hiện thay đổi (vì cách này hiệu quả hơn so với hai giá trị CRC so với hai bộ hình học) nhưng ngay cả khi đó - tại sao lại sử dụng nó làm ID chính?


1

"Tất nhiên, GUID có thể được tạo bằng VB Script. Nhưng do ESRI định nghĩa dần dần, chúng ta sẽ thực hiện việc tạo GUID trong ArcMap bằng cách sử dụng kỳ quan thứ chín của thế giới, Python. hãy biết, Python là món quà của Thượng đế cho những kẻ tấn công GIS vô địch. Lời khuyên của tôi: Hãy học nó! Hãy sống! Hãy yêu nó! "

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


0

Công cụ Arc Hydro của ESRI đi kèm với một thanh công cụ cũng cài đặt trình quản lý ID duy nhất chạy trong nền. Thanh công cụ cho phép bạn chỉ định ID duy nhất cho mỗi lớp tính năng hoặc mỗi cơ sở dữ liệu địa lý. Trình quản lý ID theo mặc định chỉ xử lý các thuộc tính ID duy nhất được gọi là HydroID, một phần của mô hình dữ liệu Arc Hydro. Nhưng nó cũng có thể được thiết lập để xử lý các thuộc tính khác. Các công cụ đi kèm với rất nhiều tài liệu, vì vậy việc cấu hình trình quản lý ID theo nhu cầu của bạn không phải là vấn đề.

ID duy nhất của tôi, luôn là một số nguyên. Sau khi gán ID duy nhất một lần, người quản lý sẽ chỉ định ID duy nhất mới cho mọi tính năng mới được tạo phù hợp với cấu hình.

Trình quản lý ID duy nhất có thể hữu ích cho các phụ trợ cơ sở dữ liệu mà (AFAIK) không hỗ trợ các số tự động tăng như cơ sở dữ liệu địa lý cá nhân.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.