bhbhxy 发表于 2022-6-6 13:57

数据库应该怎么建表保存空间数据[发重了,请版主删除]

本帖最后由 bhbhxy 于 2022-6-6 14:09 编辑

现在有一个场景,有几个经纬度
Point(113.559587,34.633359)
Point(114.019519,34.196901)
Point(114.663425,34.141466)
组成一条线,名称叫线段1,依此类推还有线段2、3、4。。。
目前表结构是这样:

IDLngLatLineName
1113.55958734.633359线段1
2114.01951934.196901线段1
3114.66342534.141466线段1

请问上面这种表结构合理吗,还是像这样的合适:

ID Coordinates LineName
1 113.559587,34.633359,114.019519,34.196901,114.663425,34.141466 线段1
或者上面两种都不对,应该采取别的方式建表?

另外还有个问题,如果两条线段有公共的部分,如何提取这一部分呢,请大佬指导

metaxman 发表于 2022-6-6 14:06

楼主可以去搜索地理信息系统相关的数据库设计

xiaoyxf 发表于 2022-6-6 14:09

很简单啊
id   x坐标   y坐标   线段   线段id
1    113.3   33.3      线段1   1
2    113.3   33.3      线段1   2
3    113.3   33.3      线段1   3
4    113.3   33.3      线段2   1
5    113.3   33.3      线段2   2
6    113.3   33.3      线段2   3

bhbhxy 发表于 2022-6-6 14:10

xiaoyxf 发表于 2022-6-6 14:09
很简单啊
id   x坐标   y坐标   线段   线段id
1    113.3   33.3      线段1   1


怎么找两条线段的公共组成部分呢

bhbhxy 发表于 2022-6-6 14:11

metaxman 发表于 2022-6-6 14:06
楼主可以去搜索地理信息系统相关的数据库设计

百度bing好久了,都没找到具体的资料

xiaoyxf 发表于 2022-6-6 14:13

bhbhxy 发表于 2022-6-6 14:10
怎么找两条线段的公共组成部分呢

指的是两条线段重叠的坐标点还是?

很快再相见123 发表于 2022-6-6 14:15

本帖最后由 很快再相见123 于 2022-6-6 14:22 编辑

建议使用PostgreSQL/PostGIS数据库,借助内置的函数,插入Geometry类型数据
`INSERT INTO haz_che_dis_bear_gas_station ( "id", "name", "address", "location","category" ) VALUES (1000,'name字段','address字段',st_geomfromewkt ('SRID=4326;Point(116.39946968797244 33.95045007394849)'),'table_name' );`

```
获取两个几何对象相交的部分 ST_Intersection(geometry, geometry)
```

xiaoyxf 发表于 2022-6-6 14:16

肯定是第一种,如果坐标要排序的话,还要加上线段序号,第二种不好取数据

bhbhxy 发表于 2022-6-6 14:18

xiaoyxf 发表于 2022-6-6 14:13
指的是两条线段重叠的坐标点还是?

比如地图导航从起点到终点可以有几种路线规划,其中某条线路是这几种规划必经的,也就是公共部分,被几条线段共用,应该属于坐标点重叠吧

bhbhxy 发表于 2022-6-6 14:21

很快再相见123 发表于 2022-6-6 14:15
建议使用PostgreSQL/PostGIS数据库,借助内置的函数,插入Geometry类型数据
`INSERT INTO haz_che_dis ...

也找了一些spatial database的资料,不过没深入了解,抽空学习一下,感谢感谢~
页: [1] 2
查看完整版本: 数据库应该怎么建表保存空间数据[发重了,请版主删除]