首页 > 数据库 >GIS开发与应用(PostgreSQL空间数据库各种查询语句范例以及SQL语句查询空间关系)_postgresql语句查询实现基于空间范围查询_Zzq_Fighting的博客

GIS开发与应用(PostgreSQL空间数据库各种查询语句范例以及SQL语句查询空间关系)_postgresql语句查询实现基于空间范围查询_Zzq_Fighting的博客

时间:2023-08-23 12:55:34浏览次数:44  
标签:语句 几何图形 geometries geometry ST St 空间 nyc 查询

实验二 PG空间数据库应用


实验目的:

1、熟悉PostGIS空间数据库;
2、掌握利用PG进行空间数据操作;
3、熟悉PG空间函数;


实验准备

Windows操作系统、Postgresql、postgis、nyc矢量文件rar
实验数据下载链接:
nyc矢量文件.rar


实验内容及要求

  1. 创建空间数据库nyc,在nyc空间数据库中创建geometries表,对表中插入Point、Linestring、Polygon、PolygonWithHole、collection等几何要素。

  2. 查看geometries表中的几何图形的元数据:
    使用ST_GeometryType(geometry):返回几何图形的类型;ST_NDims(geometry):返回几何图形维数;ST_SRID(geometry):返回几何图形的空间参考标识码。

  3. 查看geometries表多边形的图形信息
    SQL语句:SELECT ST_AsText(geom) FROM geometries WHERE name LIKE 'Polygon%';

  4. 导入nyc_census_blocks、nyc_neighborhoods、nyc_streets、nyc_subway_stations等矢量文件。根据以上数据解决以下问题
    ①’West Village’社区(neighborhood)的面积是多少?
    提示:面积以平方米为单位。
    要得到一个以公顷为单位的面积,需要再对其除以10000;
    要得到一个以英亩为单位的面积,需要对其除以4047。

    ②曼哈顿(Manhattan)的面积是多少英亩?
    提示:nyc_census_blocks和nyc_neighborhoods中都有boroname - rorough name - 行政区名

    ③纽约市(New York)的街道总长度(公里)是多少?
    提示:空间数据的测量单位是,1公里=1000m
    提示:ST_Length(geom)

    ④"West Village’边界的JSON表示是怎样的?
    提示:ST_AsGeoJSON(geom)

  5. 根据4中的数据解决以下空间关系问题。

    ①名为"Atlantic Commonts"的街道的geometry值是什么?
    提示:ST_AsText(geometry)

    ②’Broad St’地铁站处于哪一个区域?
    提示:ST_Intersects(geometry,geometry)

    ③计算’Broad St’和’Nevins St’两个地铁站直接的距离。
    提示:ST_Distance(geometry,geometry)

    ④找出’Broad St’地铁站10米范围内的所有街道。
    提示:ST_Dwithin(geometry,geometry,distance)


实验过程及步骤:

1、创建空间数据库nyc,在nyc空间数据库中创建geometries表,对表中插入Point、Linestring、Polygon、PolygonWithHole、collection等几何要素。

1


2、查看geometries表中的几何图形的元数据。

使用ST_GeometryType(geometry):返回几何图形的类型;

2


使用ST_NDims(geometry):返回几何图形维数;

3


使用ST_SRID(geometry):返回几何图形的空间参考标识码。

4


3、查看geometries表多边形的图形信息。

SQL语句:SELECT ST_AsText(geom) FROM geometries WHERE name LIKE 'Polygon%';
5


4、导入nyc_census_blocks、nyc_neighborhoods、nyc_streets、nyc_subway_stations等矢量文件。 根据下图数据解决以下问题。

6

'West Village'社区(neighborhood)的面积是多少?

注意:面积以平方米为单位;
7


要得到一个以公顷为单位的面积,需要再对其除以10000
8


要得到一个以英亩为单位的面积,需要对其除以4047
9


② 曼哈顿(Manhattan)的面积是多少英亩?

提示:nyc_census_blocks和nyc_neighborhoods中都有boroname - rorough name - 行政区名
10


③ 纽约市(New York)的街道总长度(公里)是多少?(提示:空间数据的测量单位是米,每公里有1000米)

提示:ST_Length(geom)
11


"West Village"边界的JSON表示是怎样的?

提示:ST_AsGeoJSON(geom)
12
完整结果:
{"type":"MultiPolygon","coordinates":[[[[583263.277659584,4509242.626023987],[583276.819906863,4509378.825446927],[583473.970960668,4509359.908944457],[583491.192260595,4509436.712101899],[583162.105573362,4509573.023287381],[583183.76292118,4509612.891701841],[583504.900373906,4509468.566869254],[583533.730272909,4509585.126406943],[583541.023197051,4509651.251073344],[583282.008654078,4509632.486606753],[583281.533887219,4509674.748429338],[583540.695778205,4509680.306080814],[583544.237980713,4509722.613197348],[583535.72484875,4509764.78446308],[583294.648844622,4509759.43009883],[583300.379681076,4509785.911472392],[583535.427203423,4509791.198110681],[583538.522863303,4509873.125708335],[583317.51254869,4509870.638359524],[583329.18165868,4509905.111607115],[583542.12448063,4509910.150107043],[583543.389429966,4509976.20688658],[583338.306958854,4509987.106862172],[583335.94145858,4510018.780658739],[583548.881014022,4510023.819403051],[583544.758100265,4510211.333753768],[583341.869402998,4510206.407989682],[583347.36205056,4510254.020356839],[583542.284574586,4510252.516427664],[583547.4483807,4510329.184002983],[583438.959078394,4510327.961884845],[583440.611305951,4510359.680905153],[583498.873829468,4510360.337047188],[583441.84719336,4510428.379068074],[583443.410155272,4510468.022196671],[583579.75565117,4510493.33384979],[583587.195917015,4510546.251834389],[583358.52614421,4510511.975929038],[583358.258767962,4510535.748236739],[583592.984585184,4510567.450755248],[583596.257726282,4510633.530279973],[583359.525036557,4510601.805025731],[583359.317068904,4510620.294600859],[583602.046291112,4510654.729212196],[583601.718528224,4510683.784265051],[584454.921019424,4510273.151246954],[584352.745014016,4510049.939239385],[584296.288829336,4509964.920445205],[584278.671791656,4509880.343595843],[584017.076215618,4509266.760846779],[584008.125670374,4509162.296346837],[583263.277659584,4509242.626023987]]]]}


5、 根据4中的数据解决以下空间关系问题。

① 名为"Atlantic Commonts"的街道的geometry值是什么?

提示:ST_AsText(geometry)
13
完整结果:
MULTILINESTRING((586781.7015777241 4504202.153143394,586863.5196448397 4504215.988170098))


Broad St地铁站处于哪一个区域?

提示:ST_Intersects(geometry,geometry)
14
结果:POINT(583571.9059213118 4506714.341192182)

15


③ 计算Broad StNevins St两个地铁站直接的距离。

提示:st_Distance(geometry,geometry)
16

首先确定好Nevins St地铁站的坐标:POINT(586114.6490996698 4504702.753423779);

17


④ 找出Broad St地铁站10米范围内的所有街道。

提示:ST_Dwithin(geometry,geometry,distance)
18
如果这篇文章对你和你的同学有帮助,可以点赞关注多多支持哦~~
学习学习学习!!!

本文转自 https://blog.csdn.net/qq_45566213/article/details/124082981?spm=1001.2014.3001.5502,如有侵权,请联系删除。

标签:语句,几何图形,geometries,geometry,ST,St,空间,nyc,查询
From: https://www.cnblogs.com/hustshu/p/17650897.html

相关文章

  • 一个查询数据库并解析其中的json格式的数据,并处理后保存到另外的表的python程序
    1importjson2importpymysql3importdatetime4fromdecimalimportDecimal5fromdecoupleimportconfig678#获取每日汇率的方法9defget_currency_rate(code):10currency_db_host=config("CURRENCY_DB_HOST")11curre......
  • 千万级数据深分页查询SQL性能优化实践 | 京东云技术团队
    一、系统介绍和问题描述如何在Mysql中实现上亿数据的遍历查询?先来介绍一下系统主角:关注系统,主要是维护京东用户和业务对象之前的关注关系;并对外提供各种关系查询,比如查询用户的关注商品或店铺列表,查询用户是否关注了某个商品或店铺等。但是最近接到了一个新需求,要求提供查询关注对......
  • 解决Linux磁盘空间不足的方法有哪些?
    磁盘空间不足是Linux系统非常常见的问题之一,一旦发生磁盘空间不足的情况,不仅会导致系统性能下降、应用无法正常运行,还会导致系统崩溃,因此要引起高度重视。那么解决Linux磁盘空间不足的方法有哪些?具体请看下文。1、清理无用文件首先,查找并删除无用的文件。可以使用命令......
  • 千万级数据深分页查询SQL性能优化实践
    一、系统介绍和问题描述如何在Mysql中实现上亿数据的遍历查询?先来介绍一下系统主角:关注系统,主要是维护京东用户和业务对象之前的关注关系;并对外提供各种关系查询,比如查询用户的关注商品或店铺列表,查询用户是否关注了某个商品或店铺等。但是最近接到了一个新需求,要求提供查询关注......
  • Python基础入门学习笔记 034 丰富的else语句及简洁的with语句
    丰富的else语句•要么怎样,要么不怎样if条件:  条件为真执行else:  条件为假执行    •干完了能怎样,干不完就别想怎样实例1:1defshowMaxFactor(num):2count=num//2#//为整除,判断是素数,只需依次判断当前数num除以1到(num//2)都不能整除即可3......
  • oracle 实例信息查询
    SQL>descgv$instance;NameNull?TypeINST_IDNUMBERINSTANCE_NUMBERNUMBERINSTANCE_NAMEVARCH......
  • SQL注入之联合查询
    联合查询是什么?适用数据库中的内容会回显到页面中来的情况。联合查询就是利用unionselect语句,该语句会同时执行两条select语句,实现跨库、跨表查询。必要条件两条select语句查询结果具有相同列数:对应的列数据类型相同(特殊情况下,条件被放松)。联合查询就是利用SQL语句中的uni......
  • Mysql 分页查询总结
    背景最近在做项目的时候,有一个场景需要进行分页查询某个分类下的商品信息,发现对这块不熟悉,故总结一下01表结构CREATETABLE`tb_goods`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'主键',`item_id`int(11)NOTNULLCOMMENT'商品id',`category_id`int(......
  • sql语句中exists用法详解
    文章目录一、语法说明exists:notexists:二、常用示例说明1.查询a表在b表中存在数据2.查询a表在b表中不存在数据3.查询时间最新记录4.exists替代distinct剔除重复数据总结一、语法说明exists:括号内子查询sql语句返回结果不为空(即:sql返回的结果为真),子查询的结果不为空这条件成立,执行......
  • java 如何根据经纬度查询出一千米内的资源数据
    使用地理信息系统(GIS)的相关技术和算法来实现根据经纬度查询一定范围内的资源数据。以下是一种基本的实现思路:获取资源数据:首先,您需要有一组资源数据,每个数据都包含了对应资源的经纬度信息。计算距离:使用距离计算公式(如haversine公式)来计算两个坐标点之间的距离。这可以......