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

发布时间 2023-08-23 12:45:21作者: 游侠舒迟

实验二 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,如有侵权,请联系删除。