为点要素分配唯一的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 2010年

1
您能否提供有关您的项目的更多详细信息。功能代表什么?他们是否已经具有自然的唯一ID。您打算将此号码用于什么目的(例如,跟踪功能,到其他数据源的链接等),所有这些因素都是处理ID创建的最佳方法。
克里斯M,2010年

点要素代表集水盆地。没有自然的唯一ID。DPW工作人员希望链接到有关集水盆清洁计划的信息表。我没有更多细节,但推测,在现场工作人员将作出对清洗时发生的,集液槽的条件等笔记
中央气象局

对于盆地,您有盆地号。我的猜测是它是独一无二的。寻找奥托巴比亚(ottobasins)以掌握方法论。我只在葡萄牙语中找到了结果。
乔治席尔瓦,

Answers:


18

如果您将该ID用作与另一个表相关的外键之类的东西,则由于某种原因不得不移动一个点时,整个数据库将遇到很大麻烦。然后,即使它不再描述xy坐标,您也可能必须保留该id。

作为唯一键,通常最好不要透露任何有关数据的信息,因为大多数数据可能会更改。

/尼克斯


7
+1从来没有使用过代表某些含义的ID或在其中使用业务数据。我工作中的某个人被烧死了,因为他们在ID和lo中使用了道路名称,并认为必须更改道路名称,现在ID是错误的。
内森·W

4

加上Nicklas的答案和我的评论。

我要说的是最常用的约定,最推荐的就是使用自动递增的ID,例如从1开始并一直继续。没有逻辑又简单。

如果您有分布式系统,或者不喜欢自动递增数字,则可以使用GUID。大多数数据库都会为您创建这种ID。但是,它们给用户手动输入,进行搜索等带来麻烦,因此请记住这一点。

另一个选择是使用某种类型的数据哈希,但是我不建议这样做。这意味着您需要编写一种算法来为您执行此操作,您无法始终确保唯一性,而输入它们也往往使搜索困难。

这些只是我的意见,但是根据个人经验,请相信我,永远不要在ID中使用业务数据。


4

后续问题:是否最好在DBMS(SQL Server)或GIS软件(ArcGIS)中创建和维护唯一ID?

我强烈建议您检查DBMS内部的唯一性。这是DBMS的众多优势之一。它还使您可以使用可能不会意识到唯一约束的其他GIS软件访问数据。


3

我不是选择我们的身份识别方案,而是如下:2,3,4个字符代码,这是资产的类别和一个6位数字的序号(您可以选择对您有用的任何数字计数)。存储过程将创建这些ID,并依赖同一SQL Server数据库中的几个非地理数据库表。

我确实保留了一个单独的顺序自动递增ID。我还保留了一个13个字符的geohash字段(用于点要素),但是我永远不会将其用作键。每当移动功能时,都会自动填充该字段(通过自定义编辑器扩展名)。

如果您的GIS数据将与任何种类的资产管理系统一起使用,则您希望ID在地理数据库中是全局唯一的(并且在组织内的所有地理数据库中可能唯一)。这也将使将来进行地理数据库重构更加容易。


1

通常,我过去使用CRC计算来创建相似的值。创建起来不太困难,并且可以在线获取库/算法。

这样做的好处是,您可以做的特征要比点大,而级联实际上必须仅是点特征(除非您想要一个非常大的键)。

而且我认为最终用户不太可能会通过此ID进行搜索,因此我认为这不是问题。

话虽如此,分配这样的ID并不会带来很多明显的好处。我可能会使用该方法进行更改检测(因为与两个几何集相比,比较两个CRC值的方式效率更高),但即使如此-为什么将其用作主要ID?



0

ESRI的Arc Hydro Tools带有一个工具栏,该工具栏还安装了一个在后台运行的唯一ID管理器。工具栏使您可以为每个要素类或每个地理数据库分配唯一的ID。默认情况下,ID管理器仅处理称为HydroID的唯一ID属性,例如HydroID,它是Arc Hydro数据模型的一部分。但是也可以将其设置为处理其他属性。这些工具附带了许多文档,因此根据您的需要配置ID管理器不成问题。

据我所知,唯一的ID始终是整数。分配唯一ID后,经理将负责为每个适合配置的新创建的功能分配新的唯一ID。

对于不支持自动递增数字(例如个人地理数据库)的数据库后端,唯一的ID管理器可能很有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.