如何查询postgresql+openstreetmap

先行输入:psql gis
\d  显示当前数据表
               List of relations
 Schema |        Name        | Type  |  Owner
--------+--------------------+-------+----------
 public | geography_columns  | view  | postgres
 public | geometry_columns   | table | gis
 public | planet_osm_line    | table | user
 public | planet_osm_nodes   | table | user
 public | planet_osm_point   | table | user
 public | planet_osm_polygon | table | user
 public | planet_osm_rels    | table | user
 public | planet_osm_roads   | table | user
 public | planet_osm_ways    | table | user
 public | spatial_ref_sys    | table | gis
(10 rows)

再进入某一个数据表,语句为:\d planet_osm_roads

就会出现如下的显示:

     Table "public.planet_osm_roads"
       Column       |   Type   | Modifiers
--------------------+----------+-----------
 osm_id             | bigint   |
 access             | text     |
 addr:housename     | text     |
 addr:housenumber   | text     |
 addr:interpolation | text     |
 admin_level        | text     |
 aerialway          | text     |
 aeroway            | text     |
 amenity            | text     |
 ....
 waterway           | text     |
 wetland            | text     |
 width              | text     |
 wood               | text     |
 z_order            | integer  |
 way_area           | real     |
 way                | geometry |

然后就可以进行访问操作了,如下:

SELECT osm_id,name,way FROM planet_osm_roads LIMIT 1;

但是,后来在python中发现,psycopg2似乎不支持\d的输入,所以,我后来又换了一种查询的方法:

select planet_osm_roads.\"OSM_ID\", ST_AsText(planet_osm_roads.\"the_geom\") from public.planet_osm_roads;

这个语句相对来说更加正规一点,但是使用起来会麻烦一些,需要从最头上进入到数据库中,但是,查询结果肯定是一样的。

另外,由于openstreetmap中的the_geom是通过geometry数据类型来存储的,所以以上我使用了ST_AsTExt 函数进行格式转换。

格式转换之后,显示为:

( ‘LINESTRING(12936024.28 4839648.07,12935424.71 4838722.06,12934892.21 4837629.71,12934289.2 4836007.5,12933955.4 4834815.49,12933523.99 4834253.51,12932398.66 4833859.51,12930942.93 4833698.73,12930017.2 4833337.34,12928792.52 4832545.6,12927333.4 4830992.71,12926605.54 4830332.04,12925976.25 4830134.83,12925216.94 4830137.07,12924226.69 4830471.27,12923535.34 4830870.63,12923537.07 4831566.67,12923670.37 4832229,12924035.56 4832857.78,12924368.51 4833585.97,12924703.14 4834446.89,12923880.16 4835708.54,12922724.27 4836241.84,12922132.27 4836939.92,12921903.85 4838034.36,12921642.24 4839195.88,12921447.77 4840290.58,12921153.05 4841352.77,12920474.79 4841645.26,12918234.82 4842608.73)‘)

应该代表的是各个node的GPS坐标值。

另外附上ST的函数集合:

获取几何对象的WKT描述 ST_AsText(geometry)
获取几何对象的WKB描述 ST_AsBinary(geometry)
获取几何对象的空间参考ID ST_SRID(geometry)
获取几何对象的维数 ST_Dimension(geometry)
获取几何对象的边界范围 ST_Envelope(geometry)
判断几何对象是否为空 ST_IsEmpty(geometry)
判断几何对象是否不包含特殊点(比如自相交) ST_IsSimple(geometry)
判断几何对象是否闭合 ST_IsClosed(geometry)
判断曲线是否闭合并且不包含特殊点 ST_IsRing(geometry)
获取多几何对象中的对象个数 ST_NumGeometries(geometry)
获取多几何对象中第N个对象 ST_GeometryN(geometry,int)
获取几何对象中的点个数 ST_NumPoints(geometry)
获取几何对象的第N个点 ST_PointN(geometry,integer)
获取多边形的外边缘 ST_ExteriorRing(geometry)
获取多边形内边界个数 ST_NumInteriorRings(geometry)
同上 ST_NumInteriorRing(geometry)
获取多边形的第N个内边界 ST_InteriorRingN(geometry,integer)
获取线的终点 ST_EndPoint(geometry)
获取线的起始点 ST_StartPoint(geometry)
获取几何对象的类型 GeometryType(geometry)
类似上,但是不检查M值,即POINTM对象会被判断为point ST_GeometryType(geometry)
获取点的X坐标 ST_X(geometry)
获取点的Y坐标 ST_Y(geometry)
获取点的Z坐标 ST_Z(geometry)
获取点的M值 ST_M(geometry)

如何查询postgresql+openstreetmap,布布扣,bubuko.com

时间: 2024-08-27 22:28:16

如何查询postgresql+openstreetmap的相关文章

PostgreSQL与MySQL比较(转)

Mysql 使用太广泛了,以至于我不得不将一些应用从mysql 迁移到postgresql, 很多开源软件都是以Mysql 作为数据库标准,并且以Mysql 作为抽象基础的,但是具体使用过程中,发现Mysql 有很多问题,所以都迁移到postgresql上了,转一个Mysql 和Postgresql 对比的文章: PostgreSQL由于是类似Oracle的多进程框架,所以能支持高并发的应用场景,这点与Oracle数据库很像,所以把Oracle DBA转到PostgreSQL数据库  上是比较容

在CentOS 7 / RHEL 7安装PostgreSQL 10

CentOS 到了7.x版本, PostgreSQL也来到了10.x版本. 前些天MySQL都直接跨到了8.0版本. 本文是一篇在CentOS 7.4上安装安装PostgreSQL 10.3 的教程. 本文发布于2018-04-28. 1. 切换到root用户: sudo su 2. 把最新的rpm包添加到系统库: PostgreSQL会为所有的Linux平台发布rpm包, 而且会比其他的的库更新的更快.可以试试在浏览器输入 https://download.postgresql.org/pub

vs2015 搭建libpqxx 环境

最近工作上一个项目要求查询postgreSQL数据库中数据做处理显示,需要在Windows环境下使用,查了相关资料可以使用libpqxx的开源库来做数据库的登录,查询. 具体的数据库登录,查询等,在这里不需赘述,网络上有很多资料介绍,我也就不班门弄斧了,写一个认为不错的教程链接http://www.tutorialspoint.com/postgresql/postgresql_c_cpp.htm,希望对你有帮助. 下面就进入重点,libpqxx环境的搭建.(参考了其他博主的笔记http://w

开源数据库的现状

数据库作为业务的核心,在整个基础软件栈中是非常重要的一环.近几年社区也是新的方案和思想层出不穷,接下来我将总结一下近几年一些主流的开源数据库方案和背后的设计思想以及适用场景.本人才疏学浅如有遗漏或者错误请见谅.本次分享聚焦于数据库既结构化数据存储 OLTP 及 NoSQL 领域,不会涉及 OLAP.对象存储.分布式文件系统. 开源RDBMS与互联网的崛起 很长时间以来,关系型数据库一直是大公司的专利,市场被 Oracle / DB2 等企业数据库牢牢把持.但是随着互联网的崛起.开源社区的发展,上

kali rolling 的metasploit开启数据库连接!

最新版的kali rolling 已经发布,用了 debian内核,增加了及时更新!但是其内置的,metasploit用的是:metasploit-framework 版本!跟以前的不一样了"bt5,kali linux "他的最新服务,没有了metasploit 服务!所以 service metasploit start 是没有用的! 而启动 postgresql 的服务,也变成了 "service postgresql start" !而且 还不会自动连接 数

Presto实战

一.Presto简介 1.PRESTO是什么? Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节. Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题. 2.它可以做什么? Presto支持在线数据查询,包括Hive, Cassandra, 关系数据库以及专有数据存储.一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析. Presto以分析师的需求作为目标,他们期望响应时

postgre与mysql区别

SQL兼容性 PostgreSQL 9.5 兼容 SQL:2011 子集 http://www.postgresql.org/docs/9.5/static/features-sql-standard.html MySQL 5.7 兼容 SQL:1999 子集 功能差异 - 高级SQL 递归查询, connect by, 树形查询 PostgreSQL 通过(with 或 tablefunc支持)支持,MySQL 不支持 例子 https://yq.aliyun.com/articles/240

Postgresql-11.X 性能优化详解

postgres 性能优化 系统优化 修改 /etc/grub.conf 关闭 numa=off ,修改磁盘IO调度方式 elevator=deadline 修改方法: grubby --update-kernel=ALL --args="transparent_hugepage=never" --args="elevator=deadline" 验证: grubby --info=ALL 返回 args="ro crashkernel=auto rhgb

EF框架操作postgresql,实现WKT类型坐标的插入,查询,以及判断是否相交

1.组件配置 首先,要下载.NET for Postgresql的驱动,npgsql,EF6,以及EntityFramework6.Npgsql,版本号 3.1.1.0. 由于是mvc项目,所以,把相应的配置文件写在web.config里面,如下: 1 <configSections> 2 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?L