1. 概述

Shapefile是常用的空间数据文件格式,MySQL是常用的关系型数据库

MySQL遵从OpenGIS联盟(OGC)的规范,MySQL实施了空间扩展,更详细的信息可以参考:

ogr2ogr是GDAL下的一个子模块,可用于在文件格式之间转换简单要素数据,具体可参考:

ogr2ogr支持将ESRI Shapefile转换为数据库文件(如MySQL)

本文使用ogr2ogr将ESRI Shapefile导入MySQL

2. 环境准备

GDAL的下载参考:

参考这篇文章:

QGIS安装目录的bin文件夹下自带了ogr2ogr,笔者这里使用的是QGIS下的ogr2ogr

关于Shapefile文件,笔者使用的是GeoServer提供的美国各州的行政区划数据,下载地址:

数据的大致信息如下:

MySQL数据库版本为为5.7.34

这里笔者使用Docker安装(任何安装方式都行):

docker pull mysql:5.7.34

运行MySQL镜像:

docker run --name mysql-5.7.34 -p 3306:3306 -e MYSQL_ROOT_PASSWORD="root" -d mysql:5.7.34

3. 导入数据

3.1 创建数据库

连接到MySQL并创建一个数据库

笔者这里是进入Docker容器内部登录MySQ:

mysql -u root -p

回车输入密码进行登录

创建数据库:

CREATE DATABASE IF NOT EXISTS test_db;

查询现有数据库确保创建成功:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_db |
+--------------------+
5 rows in set (0.00 sec)

3.2 导入shp

参考官方的导入示例和其他博客:

一个简单的导入语句为:

ogr2ogr –f MySQL MySQL:database_name,host=localhost,user=database_username, password=database_password path/to/shapefile -nln datatable_name -update -overwrite -lco engine=MYISAM

具体的参数信息查询:

笔者使用以下语句导入:

ogr2ogr -f MySQL MySQL:test_db,user=root,password="root" E:\tmp\shapefiles\states.shp -update -overwrite

如果顺利的话已经导入成功,可以查询数据库验证一下:

mysql> use test_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| geometry_columns |
| spatial_ref_sys |
| states |
+-------------------+
3 rows in set (0.00 sec)

查询一下数据:

mysql> select OGR_FID, state_name from states limit 10;
+---------+----------------------+
| OGR_FID | state_name |
+---------+----------------------+
| 1 | Illinois |
| 2 | District of Columbia |
| 3 | Delaware |
| 4 | West Virginia |
| 5 | Maryland |
| 6 | Colorado |
| 7 | Kentucky |
| 8 | Kansas |
| 9 | Virginia |
| 10 | Missouri |
+---------+----------------------+
10 rows in set (0.00 sec)

可以在图形化的数据库管理软件中查看空间数据,笔者这里使用的是DBeaver:

可以看到shapefile 导入完成

注意:

  • 数据集中含有中文的注意数据库编码格式
  • 数据库IP和端口与默认不同的请配置相应的参数

4. 参考资料

[1]Insert Shapefile in MySql as Spatial Data - (igismap.com)

[2]19.1. 前言_MySQL 中文文档 (mysqlzh.com)

[3]MySQL :: MySQL 8.0 Reference Manual :: 11.4 Spatial Data Types

[4]ogr2ogr — GDAL documentation

[5]将SHP导入MySQL中 - ParamousGIS - 博客园 (cnblogs.com)

Shapefile导入MySQL的更多相关文章

  1. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引

    什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...

  2. mysql安装和mysql图形界面安装以及文本文件导入mysql

    本人大一大二一直使用windows系统,被微软爸爸给惯坏了,一看到cmd命令行就吓尿.现在用ubuntu,每一个操作都是语句,也是得到锻炼(个jb). ubuntu安装mysql和python代码 s ...

  3. (转) PowerDesigner逆向工程导入MYSQL数据库总结

    PowerDesigner逆向工程导入MySQL数据库总结 由于日常数据建模经常使用PowerDesigner,使用逆向工程能更加快速的生成模型提高效率,所以总结使用如下: 1.      安装MYS ...

  4. 使用Python 将shapefile导入mongodb

    使用Python 将shapefile导入mongodb 随着big data时代的到来,各个行业都在考虑能不能把big data的思路.方法引入进来,GIS行业也不能免俗. 下面就介绍一下如何将sh ...

  5. 数据库是.frm,.myd,myi备份如何导入mysql (转)

    今天找了个案例,琢磨了半天,才分析大概出来,数据库是.frm,.myd,myi备份,不会导入mysql,到网上找了些资料,导入成功. 首先说一下这几种文件是干什么的,*.frm是描述了表的结构,*.M ...

  6. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...

  7. python2.7 爬虫_爬取小说盗墓笔记章节及URL并导入MySQL数据库_20161201

    1.爬取页面 http://www.quanshu.net/book/9/9055/ 2.用到模块urllib(网页下载),re正则匹配取得title及titleurl,urlparse(拼接完整ur ...

  8. piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql

    piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql 需要不个mssql的sql文件导入mysql.他们的时间戳格式不同..ms用的是自定义的时 ...

  9. 使用MySQL Migration Toolkit快速将Oracle数据导入MySQL[转]

    使用MySQL Migration Toolkit快速将Oracle数据导入MySQL上来先说点废话本人最近在学习一些数据库方面的知识,之前接触过Oracle和MySQL,最近又很流行MongoDB非 ...

  10. 用命令行导出和导入MySQL数据库

    php 用命令行导出和导入MySQL数据库   命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files ...

随机推荐

  1. 自定义RBAC(5)

    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 把实体类及Service类都准备好了之后,就可以开始继续写业务代码了.Spring Security的强大之一就在于它的拦截器.那么这里也可以参 ...

  2. Clickhouse表引擎探究-ReplacingMergeTree

    作者:耿宏宇 1 表引擎简述 1.1 官方描述 MergeTree 系列的引擎被设计用于插入极大量的数据到一张表当中.数据可以以数据片段的形式一个接着一个的快速写入,数据片段在后台按照一定的规则进行合 ...

  3. JavaScript:操作符:算术运算符(加减乘除模幂)及其隐式转换数据类型

    加法+ 减法- 乘法* 除法/ 模运算% 幂运算**,即a ** b求的是a的b次方 执行上述运算时,当两个操作数有非数字时,JS会隐式转换为数字,再进行运算: 一些特殊的非数字,会进行如下转换: t ...

  4. python从公众号文章中获取二维码

    在做一个公众号采集的项目中,客户有个要求,想把二维码的url保存到数据库中,如图. 原本以为要各种骚操作各种逆向才能获取得到,没想到竟然很简单. 第一步 观察二维码url的规范 https://mp. ...

  5. 万字长文详解 YOLOv1-v5 系列模型

    一,YOLOv1 Abstract 1. Introduction 2. Unified Detectron 2.1. Network Design 2.2 Training 2.4. Inferen ...

  6. openEuler 部署Kubernetes(K8s)集群

    前言 由于工作原因需要使用 openEuler,openEuler官方文档部署K8s集群比较复杂,并且网上相关资料较少,本文是通过实践与测试整理的 openEuler 22.03 部署 Kuberne ...

  7. P5687 [CSP-S2019 江西] 网格图

    题面 给定一个 \(n\times m\) 的网格图,行从 \(1\sim n\) 编号,列从 \(1\sim m\) 编号,每个点可用它所在的行编号 \(r\) 与所在的列编号 \(c\) 表示为 ...

  8. BC4-牛牛学说话之-浮点数

    题目描述 会说整数之后,牛牛开始尝试浮点数(小数),输入一个浮点数,输出这个浮点数. 输入描述 输入一个浮点数 输出描述 输出一个浮点数,保留三位小数 示例 1 输入:1.359578 输出:1.36 ...

  9. while循環的一些判斷條件和讀取循環精簡方法

    while是入口條件循環 在進入循環體時必須要有獲取輸入數據并判斷的并檢查輸入數據的值,所以在while之前放一個scanf函數,讓循環繼續執行. 如果想讓循環繼續進行,那麽還需要在循環内設置一個讀取 ...

  10. 什么是C语言

    什么是C语言? C语言是一门计算机语言 计算机语言是什么呢? 人和计算机交流的语言,如C/C++.Java.python 计算机语言的发展? 二进制语言(硬件-电-正电1/负电0 1010100101 ...