Eve*_*ert 2 postgresql postgis doctrine-orm
因此,我第一次要做一个涉及地图和地图之上的图层的项目,地图上有很多点和很多多边形。
我倾向于为点和多边形创建单独的表,然后在它们和图层表之间创建多对多关系。如果我这样做,我最终会得到 5 个表:points
、polygons
、layers
和layers_points
。layers_polygons
但是,我看到 PostGIS 还提供了名为MULTIPOINT
和 的类型MULTIPOLYGON
。如果我使用这些类型,那么我可以将其全部放入表中layers
。我想这会让查询更快,因为我需要更少的连接。然而,我不确定以后我是否会后悔,如果这意味着处理单个点和多边形变得不可能。我什至还不确定是否有必要对各个点和多边形进行计算,但很高兴知道这两种方法是否可行。
所以基本上我要问的是,这些不同方法的优点和缺点是什么?
通常,您会考虑使用多重多边形来表示具有不相交曲面的实体(例如,阿拉斯加的几何图形)或无法表示为多边形的其他拓扑。这里的关键是单个实体需要用多边形来表示
你不会做的是与群体无关的事情为多边形,因为您将无法在子多边形级别执行查询,除非将环提取到另一个几何体中。如果多边形不相关,您可能需要单独查询它们。即使它们共享一个层,您也可以使用业务逻辑来管理该关系,而无需合并它们,因为它们不代表同一实体。
请记住,前端的几何工具不一定将多边形视为有效的几何体或多对象。在检查点是否包含在多边形中时,看起来像您的用例的多边形中的点算法不一定有效。
像 Wicket.js 这样的工具(从 WKT/geojson/native 对象转换)不支持多边形。Google 地图 API v3 不支持除数据层之外的多边形(但您无法像在多边形要素上那样对数据层进行操作)。Turf.js 的操作可以在包含多个多边形的要素集合上运行,但不能在多重多边形上运行。
在不知道您的确切用例的情况下,这是我能告诉您的最好的信息,TL/DR:保持多边形不变。
归档时间: |
|
查看次数: |
760 次 |
最近记录: |