GIS开发与应用(PostgreSQL空间数据库各种查询语句范例以及SQL语句查询空间关系)

本实验旨在熟悉PostGIS,通过创建空间数据库、插入几何要素、查询元数据和图形信息,以及进行空间数据操作。实验涉及面积计算、边界表示、街道长度、空间关系等问题,使用了如ST_GeometryType、ST_Length等空间函数,解决实际地理信息问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


实验目的:

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
如果这篇文章对你和你的同学有帮助,可以点赞关注多多支持哦~~
学习学习学习!!!

03-11
<think>嗯,用户想了解如何配置和使用yum源。首先,我需要回忆一下关于yum源的基本知识。记得yum源是软件仓库,用来管理RPM包的安装和依赖关系。配置yum源通常涉及编辑.repo文件,这些文件位于/etc/yum.repos.d/目录下。还有可能涉及到本地源和网络源的配置。 根据用户提供的引用内容,引用[2]提到yum的配置文件分为main和repository部分,main在/etc/yum.conf,而repository在/etc/yum.repos.d/里的各个文件。所以配置的时候需要关注这两个部分。用户可能遇到的问题包括如何创建新的源文件,如何指向本地或网络路径,以及如何处理GPG检查。 用户的问题可能包括步骤不清晰,比如如何挂载ISO镜像来配置本地源。引用[3]中提到了创建local.repo文件,并指定baseurl为file:///路径。这时候需要确保挂载点正确,并且权限设置没问题。另外,可能需要禁用默认的网络源,避免冲突。 用户还可能关心如何测试配置后的yum源是否生效,比如运行yum clean all和yum makecache。此外,常见问题如无法找到包,可能和baseurl的配置错误有关,或者网络源不可达。需要检查URL是否正确,网络连接是否正常。 可能还需要解释不同的源类型,比如本地、网络(如阿里云、清华源),以及如何备份原有的配置文件,避免出错后恢复。引用[1]提到可以将默认文件移到/opt下或重命名,这样可以禁用默认源,避免干扰。 总结下来,回答的结构应该分步骤,包括备份、创建repo文件、配置内容、清理缓存,然后验证。同时,常见问题部分需要列出可能的问题和解决方法,如GPG检查、路径错误等。还要注意使用正确的格式,行内变量用$符号,独立公式用$$,不过这里可能数学公式不多,但需要确保LaTeX正确。</think>### 如何配置和使用yum源? #### 一、yum源的核心配置方法 1. **备份默认源** 操作前建议备份系统原有源配置: ```bash mv /etc/yum.repos.d/*.repo /opt/backup/ # 将默认源文件移动到备份目录 ``` 这是为了防止原有配置新配置产生冲突[^1]。 2. **本地yum源配置** - **挂载镜像文件** 将CentOS镜像文件挂载到指定目录: ```bash mount -o loop /path/to/CentOS-ISO /mnt/cdrom ``` - **创建配置文件** 新建`/etc/yum.repos.d/local.repo`并写入: ```ini [local-base] name=Local-CentOS-Base baseurl=file:///mnt/cdrom gpgcheck=0 enabled=1 ``` 关键参数说明: - `baseurl`:本地路径使用`file://`协议头[^3] - `gpgcheck=0`表示跳过数字签名验证 3. **网络yum源配置** 以阿里云源为例,创建`/etc/yum.repos.d/aliyun.repo`: ```ini [aliyun-base] name=Aliyun-CentOS-Base baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1 ``` 注意:`$releasever`和`$basearch`会自动解析为系统版本和架构[^2] #### 二、关键操作命令 1. **清理缓存并更新** ```bash yum clean all # 清除旧缓存 yum makecache # 生成新缓存 yum repolist all # 验证源状态 ``` 2. **典型使用场景** ```bash yum install httpd -y # 安装软件包 yum update # 更新所有软件 yum search python3 # 搜索软件包 ``` #### 三、常见问题排查 | 问题现象 | 解决方案 | |---------|----------| | `Could not resolve host` | 检查网络连接和`baseurl`地址 | | `Package not found` | 确认仓库是否包含该软件包版本 | | GPG签名校验失败 | 设置`gpgcheck=0`或导入正确密钥 | #### 四、进阶配置技巧 1. **多源优先级控制** 安装`yum-plugin-priorities`插件,在`.repo`文件中添加: ```ini priority=1 # 数字越小优先级越高 ``` 2. **仓库分组管理** 通过`[epel]`、`[docker]`等独立仓库配置实现分类管理
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zzq_Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值