postgresql+postgis

记录一些常用语句,随时会增加

postgresql9.4, postgis2.1


创建postgis数据库

1.在postgresql的bin目录下打开命令行,输入:

createdb -U postgres -E UTF8 osm 

其中osm是数据库的名称,postgres是数据库的用户名。执行完成后我们打开pgAdmin III客户端刷新,就可以看到刚才创建的数据库。

2.createlang -U postgres plpgsql osm

一般这一步都不需要,默认已经安装上去了。

3.添加PostGIS功能到数据库,执行如下命令:

psql -U postgres -d osm -f “你PostgreSQL安装路径/share/contrib/postgis-2.1/postgis.sql”

控制台会打印如下一些命令:


4.往spatial_ref_sys表中输入你需要使用的空间坐标系,如epsg4326:

INSERT into spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext) values ( 4326, 'epsg', 4326, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ', 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]');
不同坐标系的insert语句可以在这个网站找到 http://spatialreference.org/ref/epsg/4326/

点击PostGIS spatial_ref_sys INSERT statement链接可以得到insert语句(这里有一个问题是主键是94326,在geoserver中不能自动识别,所以手动改成了4326)


创建数据表

CREATE TABLE stations ( id varchar(12) primary key, lonlat geometry(Point,4326), area float8, polygon geometry(Polygon,4326) );

插入数据

INSERT INTO stations (id, lonlat, area, polygon) VALUES ('A12345',ST_GeomFromText('POINT(121.50 31.22)',4326),22222.1234,ST_GeomFromText('POLYGON ((121.71436091670316 31.38080337674083, 121.70173615072089 31.388605486784197, 121.70751628677645 31.4199972067024, 121.71832867120243 31.437168981489133, 121.73193985623796 31.37984624401758, 121.71436091670316 31.38080337674083))',4326)); 

查询数据

直接select * 查询的话,lonlat和polygon的坐标是无法阅读的16进制格式。
要以 WKT 文本显示,使用 ST_AsText(the_geom) 或 ST_AsEwkt(the_geom) 函数。
也可以使用 ST_X(the_geom) 和 ST_Y(the_geom) 显示一个维度的坐标。
select id, area, ST_AsText(lonlat), ST_AsEwkt(polygon) from stations



打开postgresql远程连接



1.postgresql.conf
将该文件中的listen_addresses项值设定为“*”,在9.0 Windows版中,该项配置已经是“*”无需修改。

2.pg_hba.conf
在该配置文件的host all all 127.0.0.1/32 md5行下添加以下配置,或者直接将这一行修改为以下配置
host    all    all    0.0.0.0/0    md5
如果不希望允许所有IP远程访问,You can use your network/mask instead of 0.0.0.0/0 to only allow access from certain IP addresses.

3.关闭windows防火墙

导出数据库

pg_dump -h localhost -U postgres(用户名) -d 数据库名(缺省时同用户名) > /data/dum.sql(导出路径)

导出某个表

pg_dump -h localhost -U postgres(用户名) -d 数据库名(缺省时同用户名)  -t table(表名) > /data/dum.sql(导出路径)

导入数据库

psql -U postgres(用户名)  -d 数据库名(缺省时同用户名) < /data/dum.sql(路径)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL+PostGIS 相对于 Oracle Spatial 在以下几个方面具有优势: 1. 开源和免费:PostgreSQL+PostGIS 是开源的数据库系统,可以免费使用,并且在开源社区中有广泛的支持和贡献。相比之下,Oracle Spatial 是商业数据库产品,可能需要支付高额的许可费用。 2. 社区支持和生态系统:PostgreSQL+PostGIS 有庞大的开源社区支持,许多开发者和组织都在为其开发新功能、解决问题和提供支持。这意味着用户可以从活跃的社区中获取帮助、学习和分享经验。 3. 扩展性和灵活性:PostgreSQL 是一个高度可扩展的数据库系统,可以轻松处理大规模数据集。PostGIS 扩展为 PostgreSQL 提供了丰富的地理空间功能,包括拓扑关系查询、空间索引、几何运算等。用户可以根据自己的需求选择性地安装和配置 PostGIS 扩展,使其更适合特定的应用场景。 4. 标准兼容性:PostgreSQL+PostGIS 遵循 SQL 和 OGC(Open Geospatial Consortium)的标准,支持标准的地理空间数据模型和函数。这使得它与其他遵循相同标准的地理空间数据系统具有良好的互操作性。 5. 可定制性和开发灵活性:开源的 PostgreSQL+PostGIS 提供了许多扩展和插件,用户可以根据自己的需求进行定制和开发。这使得用户可以根据具体应用的要求,灵活地扩展和定制地理空间功能。 需要注意的是,选择使用 PostgreSQL+PostGIS 还是 Oracle Spatial 取决于具体的需求和环境。如果对性能、功能全面性和与商业软件集成有较高要求,以及有相应的预算支持,那么 Oracle Spatial 可能更适合。而如果希望免费使用、享受开源社区支持、具备灵活性和可定制性,那么 PostgreSQL+PostGIS 是一个更好的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值