PostGIS批量导入导出shapefile文件
目前,数据库中有表global_24h 和 countries,分别记录了热点信息和国家信息。
在pgAdmin中查看global_24h如下:
1.查询坐标系信息。
SELECT ST_SRID(the_geom) from global_24h;
SELECT ST_SRID(the_geom) from countries;
查询结果表明:countries的坐标系为EPSG:4326,global_24h 的几何坐标系为EPSG:3857,
首先,需要将表global_24h转换到坐标系EPSG:4326。
2.转换坐标系
ALTER TABLE global_24h
ALTER COLUMN the_geom
SET DATA TYPE geometry(Point,4326)
USING ST_Transform(the_geom,4326)
现在,两张表的坐标系都为EPSG:4326。
3.统计每个国家的热点个数
select c.name, MIN(c.iso2) as ios2,count(*) as spot_count
from global_24h as f
join countries as c
on ST_Contains(c.the_geom, f.the_geom) group by c.name order by c.name
在pgAdmin中的显示如下:
4. 将查询结果写入csv文件
ogr2ogr -f CSV hs_countries.csv -sql "select c.name, MIN(c.iso2) as ios2,count(*) as spot_count from global_24h as f join countries as c on ST_Contains(c.the_geom, f.the_geom) group by c.name order by c.name" PG:"host=localhost port=5432 dbname=postgis_32_sample user=postgres password=postgres schemas=public"
5.批量生成每个国家热点信息的shapefile
先从hs_countries.csv中获取name, ios2 和 count,分别赋值给%%a, %%b,%%c。然后用一个for循环遍历hs_countries.csv中的每一行记录,分别生成对应的shapefile。
@echo off
for /f "tokens=1-3 delims=, skip=1" %%a in (hs_countries.csv) do (echo "Generating shapefile %%b.shp for country %%a (%%b) containing %%c features"ogr2ogr out_shapefiles/%%b.shp PG:"dbname='postgis_32_sample' user='postgres' password='postgres'" -sql "SELECT ST_Transform(hs.the_geom, 4326), hs.acq_date, hs.acq_time, hs.bright_t31 FROM global_24h as hs JOIN countries as c ON ST_Contains(c.the_geom, ST_Transform(hs.the_geom, 4326)) WHERE c.iso2 = '%%b'"
)
生成的结果如下:
在QGIS中查看国家Brazil(BR)中的热点。
6.批量上传每个国家热点信息的shapefile
遍历文件夹中的shp文件,依次上传到postgis。
@echo off
for %%I in (out_shapefiles\*.shp*) do (echo Importing shapefile %%~nxI to public.hs_uploaded PostGIS table...ogr2ogr -append -update -f PostgreSQL PG:"dbname='postgis_32_sample' user='postgres' password='postgres'" out_shapefiles/%%~nxI -nln public.hs_uploaded -sql "SELECT acq_date, acq_time, bright_t31, '%%~nI' AS iso2, '%date%' AS upload_datetime, 'out_shapefiles/%%~nxI' as shapefile FROM %%~nI"
)
7.查询上传结果
select * from hs_uploaded where ISO2='AT'
在pgAdmin中的显示如下:
PostGIS批量导入导出shapefile文件相关推荐
- 批量导入/导出Excel文件(Python+Matlab)
简单整理了下批量导入/导出Excel的Python和Matlab代码. Matlab 连续数字型.xlsx文件(如file_1.xlsx, file_2.xlsx, file_3.xlsx) clc, ...
- 本地使用shell脚本批量导入导出镜像文件
背景 对于一些不通外网的环境进行部署的时候,需要进行离线部署项目,所以需要导出镜像后本地导出.一下做个脚本把需要导出的java项目批量处理. 导出本地镜像 shell脚本如下: #/bin/bash ...
- postgis导入导出shp文件
postgis导入导出shp文件,主要有两种方式: 一.借助PostGIS shapefile工具 具体操作可参考 PostGIS教程四:加载空间数据 https://blog.csdn.ne ...
- 使用cardme读写VCard文件,实现批量导入导出电话簿
转载自 使用cardme读写VCard文件,实现批量导入导出电话簿 首先下载jar包cardme. http://sourceforge.net/projects/cardme/?source=nav ...
- Java实现文件批量导入导出实例(兼容xls,xlsx)
<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON"> &l ...
- java导入导出有版本兼容问题_Java实现文件批量导入导出实践(兼容xls,xlsx)
小Hub领读: 使用poi导入导出xls文件还是比较容易的,有完整的项目代码,可以clone下来好好研究哈! 1.介绍 java 实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写 ...
- 如何在SQL Server 2016中使用R导入/导出CSV文件
介绍 (Introduction) Importing and exporting CSV files is a common task to DBAs from time to time. 导入和导 ...
- AD域中如何批量导入导出账号
本帖出现于51CTO论坛中,是一位网友自己的实际工作经历.是在AD域中如何批量导入导出账号.工作上有一个需求,需要批量的导入一些账号,并要求有一些属性,比如:部门,职位,分机等! 如果您有兴趣也可以去 ...
- CATIA批量导入导出数据到EXCEL
CATIA批量导入导出数据到EXCEL 序言 一.EXCEL数据点批量导入到CATIA 二.CATIA数据点批量导入到EXCEL 三.VB批量输出点到EXCEL 序言 工作中,由于测量基准和建模基准不 ...
- android手机导出联系人,OPPO Reno如何批量导入/导出联系人?
准备换新手机,怎么将联系人号码全部存到新机里呢?现在的手机都有导入/导出联系人的功能,很方便哦! OPPO Reno如何批量导入/导出联系人? 1.依次进入手机[设置]-[系统应用]-[电话本]-[导 ...
最新文章
- java 重用性_提高Java代码重用性的三个方法
- 《C++ Primer 5th》笔记(5 / 19):语句
- mysql to data_mysql str_to_date 字符串转换为日期
- pxe安装linux dhcp失败,利用PXE自动化安装Centos时启动DHCP服务时遇到错误,请求大佬指教...
- MySQL数据库MyISAM和InnoDB存储引擎的比较
- ios ffmpeg h264 decode
- java-设计模式(行为型)-【命令模式】
- UVa 400 Unix Is
- win10北通手柄没反应_【游戏手柄攻略】WIN10怎样校准和设置游戏手柄
- 计算机无法备份,iTunes无法备份是怎么回事?iTunes无法备份怎么解决?
- latex linux 安装教程,Deepin安装LaTex,
- 淘宝搜索上传图片获得上传sid
- treeset可以重复吗_社保和商业医疗险可以重复报销吗?报销攻略请收好
- 海外服务器租用主要要看三个方面
- python面向对象基础-01
- NYOJ:71-独木舟上的旅行
- FPGA数字信号处理(八)Quartus FFT IP核实现
- Linux Nginx安装配置及HTTPS配置
- matlab怎么标记节点,为图节点和边添加标签
- 使用word插入无法编辑的对象