15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 空间数据库

空间数据库

时间:2023-05-07 22:39:01 | 来源:网站运营

时间:2023-05-07 22:39:01 来源:网站运营

空间数据库:PostSQL+PostGIS+plv8

使用步骤

pgadmin可视化非结构数据库

=》shapefile文件

聚簇索引

数组+链表+红黑树

*使用红黑树的原因

JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也很难达到元素百分百均匀分布。当 HashMap 中有大量的元素都存放到同一个桶中时,这个桶下有一条长长的链表,这个时候 HashMap 就相当于一个单链表,假如单链表有 n 个元素,遍历的时间复杂度就是 O(n),完全失去了它的优势。

针对这种情况,JDK 1.8 中引入了 红黑树(查找时间复杂度为 O(logn))来优化这个问题。

红黑树限制从根到叶子的最长的可能路径不多于最短的可能路径的两倍长,结果是这个树大致上是平衡的,以此来减少插入/删除时的平衡调整耗时,从而获取更好的性能,而这虽然会导致红黑树的查询会比AVL稍慢,但相比插入/删除时获取的时间,这个付出在大多数情况下显然是值得的。

在HashMap中的应用:HashMap在进行插入和删除时有可能会触发红黑树的插入平衡调整(balanceInsertion方法)或删除平衡调整(balanceDeletion )方法,调整的方式主要有以下手段:左旋转(rotateLeft方法)、右旋转(rotateRight方法)、改变节点颜色(x.red = false、x.red = true),进行调整的原因是为了维持红黑树的数据结构。

参考来自

增大链表索引效率->红黑树结构(平衡二叉树的一种)


空间数据库模型

Point 点
Geometry 几何
Feature 要素
Feature Class 要素类要素的集合,地理对象
Geometry

PointCurve 曲线Surface 面
Curve

LineStringLineLinearRing
闭合线,不算作面
面对象类型

Polygon 多边形

Triangle :一种特殊的Polygon

MultiPointMultiLingStringMultiPolygon
群岛点河流水系分支群岛块



ln -s /usr/local/share/postgresql/extension/postgis* /usr/local/Cellar/postgresql/13.1/share/postgresql/extension/ln -s /usr/local/lib/postgresql/postgis-3.so /usr/local/Cellar/postgresql/13.1/lib/postgresqlln -s /usr/local/lib/postgresql/rtpostgis-2.3.so /usr/local/Cellar/postgresql/13.1/lib/

空间参考坐标系

如果在一开始忘记添加空间参考系,可设置set-SRID

GeoJson 爬虫直接存储数据到这个里面

先做个粗判断,再做细(精确拓扑关系)

docker上使用postgis

这里的账号和密码,在docker上删除后可重建新的postgres名和账号和密码

sudo docker run -it --name pgsql -e "POSTGRES_PASSWORD=~" -e POSTGRES_USER=Alex -p 5432 -d postgresdocker ps -a #启动也选用postgresql集成postGIS好的

docker pull kartoza/postgisdocker start jiang_postgisdocker pull dpage/pgadmin4docker ps #启动docker exec -it f14ca5f1cd9d bashcat /etc/hosts官网

host.docker.internal注意这时候我设置的用户名和密码已经是Alex,~

http://localhost:5433/ #也可以网页打开http://172.17.0.2:5433/ #一般是这个重启后的电脑

进入页面

再次启动才能进去

sudo docker run --name postgrest_tut -p 54321:5432 -e POSTGRES_MULTIPLE_EXTENSIONS=postgis -d -t kartoza/postgis要在docker中安装虚拟机 LInux

docker container lsdocker run --name my_postgis_server -p 5433:5432 -e POSTGRES_USER=postgres -d mdillon/postgisgeom 就是地理位置(可以是国家也可以是城市)

解决命令后问题

DB Manange

端口占用,杀死端口

PG_MODE=primaryPG_PRIMARY_USER=postgresPG_PRIMARY_PASSWORD=postgres PG_DATABASE=postgisdbPG_USER=pgisdbPG_PASSWORD=postgresPG_ROOT_PASSWORD=postgresPG_PRIMARY_PORT=5433
用Notepad写的.txt转成.list
docker run --publish 5451:5451 / --volume=pgvolume:/pgdata / --env-file=pg-env.list / --name=postgres / --hostname=postgres / --network=pgnetwork / --detach /crunchydata/crunchy-postgres-gis:centos8-13.2-3.0-4.6.2一行

docker run --publish 5432:5432 --volume=pgvolume:/pgdata --env-file=pg-env.list --name=postgres --hostname=postgres --network=pgnetwork --detach crunchydata/crunchy-postgres-gis:centos8-13.2-3.0-4.6.2


PGADMIN_SETUP_EMAIL=pgadminPGADMIN_SETUP_PASSWORD=pgadminSERVER_PORT=5050


docker run --publish 5050:5050 / --volume=pgvolume:/pgdata / --env-file=pgadmin-env.list / --name=pgadmin / --hostname=pgadmin / --network=pgnetwork / --detach /crunchydata/crunchy-pgadmin4:centos8-13.2-4.6.2arm64下的postgis

http://localhost:5051/查看IP



关键词:数据,空间

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭