PostgresSQL支持geometry类型

本文详细介绍如何在PostgreSQL环境中创建用户与数据库,包括环境安装步骤、用户与数据库的创建、登录数据库、修改用户密码及扩展命令的执行。通过本文,读者将了解如何使用createuser与createdb命令创建用户与数据库,以及如何通过执行扩展命令来增强数据库功能。

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

  1. 环境安装 https://www.cnblogs.com/ilifeilong/p/6979288.html
  2. 创建用户与数据库
    su - postgres
    创建一个新的用户wibo
    $ createuser wibo
    $ createdb wibodb -O wibo
    
    登录wibodb数据库
    $ psql wibodb
    修改wibo用户的密码
    wibodb=> alter user wibo with password 'password';
    执行扩展命令
    wibodb=> CREATE EXTENSION postgis;
    

    执行该命令后会新增一张名为“spatial_ref_sys”的表,如下所示:

  3. 在pgAdmin中打开wibodb数据库,创建一张新表,查看当前支持的字段类型,如下所示:

### 使用 PostgreSQL 进行查询并将结果在 ArcMap 中可视化的教程 #### 1. 前置条件准备 为了能够在 ArcMap 中显示来自 PostgreSQL 的数据,需要完成以下准备工作: - 安装并配置 PostgreSQL 和 PostGIS 扩展[^2]。 - 确保 PostgreSQL 数据库中的表已包含几何字段(geometry),并且该字段已被正确设置 SRID(例如 WGS84,SRID=4326)。 #### 2. 创建连接至 PostgreSQL 数据库 ArcMap 支持通过 OLE DB 或直接使用 `Database Connections` 功能来访问 PostgreSQL 数据库。以下是创建连接的具体步骤: 1. **启动 ArcCatalog** 并导航到 `Database Connections` 文件夹。 2. 单击右键选择 `Add Database Connection...`。 3. 在弹出窗口中填写以下参数: - **Database Platform**: 选择 `PostgreSQL`。 - **Instance**: 输入 PostgreSQL 实例地址(通常是 localhost 或 IP 地址加端口号,例如 `localhost:5432`)。 - **Authentication Mode**: 如果启用了密码验证,则选择 `DBMS Authentication`;否则选择匿名模式。 - **User Name/Password**: 提供具有读取权限的用户名和密码。 4. 测试连接是否成功,并保存连接文件以便后续调用。 此过程完成后,您将在 `Database Connections` 下看到新建立的连接项[^1]。 #### 3. 查询 PostgreSQL 数据 利用 SQL 查询语言可以从 PostgreSQL 数据库提取所需的数据子集。假设目标是从名为 `lakes` 的表中获取所有位于特定区域内的湖泊记录,SQL 语句可能如下所示: ```sql SELECT * FROM lakes WHERE ST_Within(geometry_column, ST_GeomFromText('POLYGON((...))', 4326)); ``` 执行以上命令前需确认所使用的空间函数(如 `ST_Within`, `ST_Intersects` 等)以及输入坐标系统的匹配性[^2]。 #### 4. 导入查询结果至 ArcMap 一旦定义好查询逻辑,在 ArcMap 中可通过以下途径导入查询结果作为图层: 1. 右键点击左侧目录树中的数据库连接节点,选择 `New Query Layer...`。 2. 设置对话框内指定数据源为刚才链接好的 PostgreSQL 表,并粘贴自定义 SQL 查询字符串。 3. 验证语法无误后提交,等待生成临时图层。 4. 将生成的图层拖拽至地图文档主界面以查看效果。 此时,基于 PostgreSQL 查询返回的结果已经能在 ArcMap 上呈现出来,并可进一步应用样式渲染、标注等功能增强表现力[^1]。 #### 5. 注意事项 - 确认 PostgreSQL 表格结构兼容 GIS 应用需求,特别是 geometry 类型列的存在及其属性设定。 - 若遇到性能瓶颈问题,考虑优化索引策略或者调整客户端缓存机制提升响应速度。 ```python # 示例 Python 脚本用于自动化加载 PostgreSQL 图层到当前活动 Map Document (mxd) import arcpy conn_path = r"C:\path\to\your.sde" query_sql = """SELECT * FROM public.lakes""" arcpy.MakeQueryLayer_management(conn_path, "Lakes_Query", query_sql, "", "OBJECTID", "") active_mxd = arcpy.mapping.MapDocument("CURRENT") data_frame = active_mxd.activeDataFrame new_layer = arcpy.mapping.Layer("Lakes_Query") arcpy.mapping.AddLayer(data_frame, new_layer, "AUTO_ARRANGE") del active_mxd, data_frame, new_layer ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汀桦坞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值