CN106095431A - 基于Python的3DGIS系统及其快速开发的方法 - Google Patents
基于Python的3DGIS系统及其快速开发的方法 Download PDFInfo
- Publication number
- CN106095431A CN106095431A CN201610401943.4A CN201610401943A CN106095431A CN 106095431 A CN106095431 A CN 106095431A CN 201610401943 A CN201610401943 A CN 201610401943A CN 106095431 A CN106095431 A CN 106095431A
- Authority
- CN
- China
- Prior art keywords
- python
- module
- 3dgis
- threedimensional model
- spatial analysis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于Python的3DGIS系统及其快速开发的方法,涉及计算机软件开发技术领域。本系统是将三维模型构建模块(20)、空间分析模块(30)、用户界面模块(40)和数据库模块(50)通过Python语言程序模块(10)集成,借助计算机硬件(60)形成3DGIS软件系统(70)。本方法包括:①基于多语言集成的三维模型构建模块的实现方法;②基于GRASS GIS后台调用的空间分析模块的实现方法;③基于Python语言“粘合剂”的3DGIS平台开发方法。本发明简化了软件开发过程,减轻了开发者工作负担;弥补了目前3DGIS系统从底层开发与二次开发两种方法的不足;适用于3DGIS系统平台的快速开发。
Description
技术领域
本发明涉及计算机软件开发技术领域,尤其涉及一种基于Python的3DGIS系统及其快速开发的方法,具体涉及三维地理信息系统、三维地质建模以及模型空间数据分析。
背景技术
目前,随着计算机、图形处理技术的发展,GIS技术在多个领域中得到推广与应用。相比二维GIS,三维GIS为空间信息的展示提供了更丰富、逼真的平台,使人们将抽象难懂的空间信息可视化和直观化,进而做出准确而快速的判断,并且三维GIS在可视化方面有着得天独厚的优势。然而3DGIS需要与具体领域中关注的特定问题进行结合,才能发挥强大的功能。因此,有必要研究一种3DGIS系统平台的快速开发方法。
在3DGIS系统开发中,一种方式是采用C或者C++等语言从底层开发。这种方法开发难度大,耗时长,对于仅仅采用3DGIS技术解决某一领域的专业问题而言,效率较低;另一种方式,基于已有的GIS软件平台或者提供的一些控件(如:MapX,MapObject等)进行二次开发,这种方法虽然起点高,但是在程序编写中无法触及软件或者控件的源代码,程序操控的灵活性差,根据具体领域需要解决的问题,软件将来进一步深入拓展的空间不足。
鉴于此,本发明基于Python语言,将三维建模、数学计算以及GIS等开源模块进行集成与耦合,可直接在已有源代码基础上进行开发,弥补了目前从底层开发与二次开发两种方法的不足,为某一专业领域3DGIS技术的应用提供了一种系统平台快速开发的方法。
发明内容
本发明的目的在于克服现有针对特定专业领域3DGIS软件底层开发中效率较低,二次开发程序操控灵活性差等不足,提供一种基于Python的3DGIS系统及其快速开发的方法。
本发明解决其技术问题所采用的技术方案是:
基于Python语言,通过调用Python开源库、Python动态链接库以及VTK开源库,实现三维建模基础算法;通过Python语言在后台运行GRASS GIS软件,形成系统的空间分析功能;将数据库、用户界面开源模块等进行耦合,完成3DGIS系统平台的建立。
具体地说:
一、基于Python的3DGIS系统(简称系统)
本系统包括Python语言程序模块、三维模型构建模块、空间分析模块、用户界面模块、数据库模块、计算机硬件和3DGIS软件系统;
将三维模型构建模块、空间分析模块、用户界面模块和数据库模块通过Python语言程序模块集成,借助计算机硬件形成3DGIS软件系统。
二、一种基于Python的3DGIS系统平台快速开发方法(简称方法)
本方法包括以下步骤:
①基于多语言集成的三维模型构建模块的实现方法
在三维模型构建模块中通过Python开源库中的Scipy与Numpy数学计算模块,实现三维建模中基本数学运算功能;
将具有三维建模常用算法功能的C、C++模块通过Swig与VC++编译成Python的动态链接库;
将具有三维建模常用算法功能的Fortran模块通过f2py开源软件编译成Python的动态链接库;
通过Python语言直接调用Python开源库、Python的动态链接库以及VTK开源库,形成多语言集成的三维模型构建模块;
②基于GRASS GIS后台调用的空间分析模块的实现方法
通过Python语言在后台运行GRASS GIS软件,并直接调用GRASS GIS开源库提供的相应功能,实现系统的空间分析模块;
③基于Python语言“粘合剂”的3DGIS平台开发方法
从数据库模块中提取Access与PostgreSQL中基础数据;
通过调用三维模型构建模块中Python开源库、Python动态链接库以及VTK开源库,实现三维模型构建方法;
调用GRASS GIS开源库,针对生成的三维模型进行空间分析;
调用用户界面模块中wxPython界面库与Matplotlib图形库,实现对三维模型以及空间分析结果的三维显示与曲线统计;
将通过Python语言程序模块耦合形成的系统安装在计算机硬件中,形成3DGIS软件系统。
本发明具有下列特点:
①基于开源软件模块构建3DGIS系统平台,实现了基于底层的开发方法,提高了软件开发效率;
②采用Python语言直接调用GRASS GIS空间分析模块,并对C、C++以及Fortran模块进行“粘合”,提高了计算效率;
③在程序编写中能够直接修改所调用开源软件模块的源代码,提高了程序开发的灵活性;
④通过Python对不同语言编写的程序模块进行调用,不同于采用其它单一语言的开发模式与开发环境。
依据上述特点和实际应用,本发明收到下列的有益效果:
①简化了软件开发过程,减轻了开发者工作负担;
②弥补了目前3DGIS系统从底层开发与二次开发两种方法的不足;
③适用于3DGIS系统平台的快速开发。
附图说明
图1是本系统的结构方框图。
其中:
10—Python语言程序模块;
20—三维模型构建模块;
21—Python开源库;
211—Scipy;212—Numpy;
22—Python动态链接库;
221—C、C++模块;222—Fortran模块;
23—VTK模块;
30—空间分析模块;
31—GRASS GIS开源库;
40—用户界面模块;
41—wxPython界面库;42—Matplotlib图形库;
50—数据库模块;
51—Access;52—PostgreSQL;
60—计算机硬件;
70—3DGIS软件系统。
具体实施方式
以下结合附图进行详细说明:
一、系统
1、总体
如图1,本系统包括Python语言程序模块10、三维模型构建模块20、空间分析模块30、用户界面模块40、数据库模块50、计算机硬件60和3DGIS软件系统70;
将三维模型构建模块20、空间分析模块30、用户界面模块40和数据库模块50通过Python语言程序模块10集成,借助计算机硬件60形成3DGIS软件系统70。
2、功能块
1)Python语言程序模块10
Python语言程序模块10包括用Python语言编写的对计算效率要求不高的常规性程序代码,同时还包含对各个模块进行“粘合”与数据传输的接口程序模块。
2)三维模型构建模块20
三维模型构建模块20包括Python开源库21、Python动态链接库22以及VTK模块23;
Python开源库21包括Scipy211与Numpy212,形成三维建模基础算法功能;
Python动态链接库22包含C、C++模块221与Fortran模块222,用于三维建模中对计算效率要求较高的矩阵计算、插值和裁剪运算功能;
VTK模块23包含三维建模与显示的一些重要算法。
3)空间分析模块30
空间分析模块30包括GRASS GIS开源库31,GRASS GIS开源库31包含了GIS中针对栅格与矢量地图进行空间分析的所有功能。
4)用户界面模块40
用户界面模块40包括wxPython界面库41与Matplotlib图形库42;
wxPython界面库41用于对三维模型与空间分析结果进行显示;
Matplotlib图形库42能够生成结果数据的分析曲线图。
5)数据库模块50
数据库模块50包括Access51与PostgreSQL52,主要用于系统数据存储。
6)计算机硬件60
计算机硬件60为软件安装载体。
7)3DGIS软件系统70
3DGIS软件系统70为最终形成的3DGIS软件系统。
二、方法
1、基于多语言集成的三维模型构建模块的实现方法
1)下载Python、swigwin、Scipy与Numpy模块并安装;
2)通过f2py、swigwin与VC++将调试好的Fortran或者C/C++代码,生成Python动态链接库(假设为test.pyd);
3)下载并安装便于Python调用的VTK模块vtkPython;
4)在Python程序中通过程序代码“import scipy,numpy,test,vtk”
即可实现对三维模型构建模块20中Python开源库21、Python动态链接库22以及VTK模块23的调用。
2、基于GRASS GIS后台调用的空间分析模块的实现方法
1)主要调用程序代码如下:
import os,sys
GrassGISbase="C:\Program Files(x86)\GRASS GIS 7.0.2"
os.environ['GISBASE']=GrassGISbase
os.environ['PATH']+=os.pathsep+os.path.join(GrassGISbase,
'extrabin')
home=os.path.expanduser("~")
print"home",home
os.environ['PATH']+=os.pathsep+os.path.join(home,'AppData',
'Roaming','grass7','addons','scripts')
gpydir=os.path.join(GrassGISbase,"etc","python")
sys.path.append(gpydir)
GrassGISdb=os.path.join('C:Users','user','Documents',
'grassdata')
location="AP_newLocation"
mapset="Meihuashan"
import grass.script as gscript
gsetup.init(GrassGISbase,GrassGISdb,location,mapset)
2)在Python程序中通过以上代码可控制GRASS GIS开源库31在后台运行,实现三维模型的空间分析功能。
3、基于Python语言“粘合剂”的3DGIS平台开发方法
1)下载PostgreSQL、wxPython以及Matplotlib并安装:
2)在Python程序中输入“import win32com.client,pg”;
3)通过win32com.client.Dispatch('ADODB.Connection')与pg.connect(dbname=”)可实现对数据库Access51与PostgreSQL52的操作;
4)在Python程序中输入“import wx,matplotlib”后可实现在Python程序中调用wxPython界面库41与Matplotlib图形库42的目的;
5)将通过Python语言程序模块10耦合形成的系统安装在计算机硬件60中,形成3DGIS软件系统70。
Claims (7)
1.一种基于Python的3DGIS系统,其特征在于:
包括Python语言程序模块(10)、三维模型构建模块(20)、空间分析模块(30)、用户界面模块(40)、数据库模块(50)、计算机硬件(60)和3DGIS软件系统(70);将三维模型构建模块(20)、空间分析模块(30)、用户界面模块(40)和数据库模块(50)通过Python语言程序模块(10)集成,借助计算机硬件(60)形成3DGIS软件系统(70)。
2.按权利要求1所述的基于Python的3DGIS系统,其特征在于:
所述的Python语言程序模块(10)包括用Python语言编写的对计算效率要求不高的常规性程序代码,同时还包含对各个模块进行“粘合”与数据传输的接口程序模块。
3.按权利要求1所述的基于Python的3DGIS系统,其特征在于:
所述的三维模型构建模块(20)包括Python开源库(21)、Python动态链接库(22)以及VTK模块(23);
Python开源库(21)包括Scipy(211)与Numpy(212),形成三维建模基础算法功能;
Python动态链接库(22)包含C、C++模块(221)与Fortran模块(222),用于三维建模中对计算效率要求较高的矩阵计算、插值和裁剪运算功能;
VTK模块(23)包含三维建模与显示的一些重要算法。
4.按权利要求1所述的基于Python的3DGIS系统,其特征在于:
所述的空间分析模块(30)包括GRASS GIS开源库(31),GRASS GIS开源库(31)包含了GIS中针对栅格与矢量地图进行空间分析的所有功能。
5.按权利要求1所述的基于Python的3DGIS系统,其特征在于:
所述的用户界面模块(40)包括wxPython界面库(41)与Matplotlib图形库(42);
wxPython界面库(41)用于对三维模型与空间分析结果进行显示;
Matplotlib图形库(42)能够生成结果数据的分析曲线图。
6.按权利要求1所述的基于Python的3DGIS系统,其特征在于:
所述的数据库模块(50)包括Access(51)与PostgreSQL(52),用于系统数据存储。
7.基于权利要求1-6所述基于Python的3DGIS系统快速开发的方法,其特征在包括下列步骤:
①基于多语言集成的三维模型构建模块的实现方法
在三维模型构建模块(20)中通过Python开源库(21)中的Scipy(211)与Numpy(212)数学计算模块,实现三维建模中基本数学运算功能;
将具有三维建模常用算法功能的C、C++模块(221)通过Swig与VC++编译成Python的动态链接库(22);
将具有三维建模常用算法功能的Fortran模块(222)通过f2py开源软件编译成Python的动态链接库(22);
通过Python语言直接调用Python开源库(21)、Python的动态链接库(22)以及VTK开源库(23),形成多语言集成的三维模型构建模块;
②基于GRASS GIS后台调用的空间分析模块的实现方法
通过Python语言在后台运行GRASS GIS软件,并直接调用GRASS GIS开源库(31)提供的相应功能,实现系统的空间分析模块(30);
③基于Python语言“粘合剂”的3DGIS平台开发方法
通过Python语言程序模块(10)从数据库模块(50)中提取Access(51)与PostgreSQL(52)中基础数据;
通过调用三维模型构建模块(20)中Python开源库(21)、Python动态链接库(22)以及VTK开源库(23),对获得的基础数据进行处理,实现三维模型构建方法;
通过Python语言程序模块(10)调用GRASS GIS开源库(31),针对生成的三维模型进行空间分析;
通过Python语言程序模块(10)调用用户界面模块(40)中wxPython界面库(41)与Matplotlib图形库(42),实现对三维模型以及空间分析结果的三维显示与曲线统计;
将通过Python语言程序模块(10)耦合形成的系统安装在计算机硬件(60)中,形成3DGIS软件系统(70)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610401943.4A CN106095431A (zh) | 2016-06-08 | 2016-06-08 | 基于Python的3DGIS系统及其快速开发的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610401943.4A CN106095431A (zh) | 2016-06-08 | 2016-06-08 | 基于Python的3DGIS系统及其快速开发的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106095431A true CN106095431A (zh) | 2016-11-09 |
Family
ID=57228838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610401943.4A Pending CN106095431A (zh) | 2016-06-08 | 2016-06-08 | 基于Python的3DGIS系统及其快速开发的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106095431A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463614A (zh) * | 2017-06-30 | 2017-12-12 | 中国科学院寒区旱区环境与工程研究所 | 基于建模框架的生态水文模型构建与参数模拟方法 |
CN108304174A (zh) * | 2017-08-22 | 2018-07-20 | 北京智行鸿远汽车有限公司 | 一种基于numpy的高精度C语言算法验证方法 |
CN109446286A (zh) * | 2018-09-28 | 2019-03-08 | 山东中创软件商用中间件股份有限公司 | 一种高速公路路网图的可视化方法及装置 |
CN112527268A (zh) * | 2020-12-16 | 2021-03-19 | 极弦科技有限公司 | 一种面向高性能复杂测试测量应用的高效率软件开发模式和架构 |
CN112560260A (zh) * | 2020-12-11 | 2021-03-26 | 博迈科海洋工程股份有限公司 | 基于三维模型下电缆材料参数快速显示方法 |
CN113470178A (zh) * | 2020-12-15 | 2021-10-01 | 北京构力科技有限公司 | 生成三维建筑模型的方法、电子设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1746627A (zh) * | 2004-09-10 | 2006-03-15 | 旺玖科技股份有限公司 | 三维电子地图系统及方法 |
-
2016
- 2016-06-08 CN CN201610401943.4A patent/CN106095431A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1746627A (zh) * | 2004-09-10 | 2006-03-15 | 旺玖科技股份有限公司 | 三维电子地图系统及方法 |
Non-Patent Citations (1)
Title |
---|
刘振平等: "基于Python 的三维建模可视化系统的研究", 《岩土力学》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463614A (zh) * | 2017-06-30 | 2017-12-12 | 中国科学院寒区旱区环境与工程研究所 | 基于建模框架的生态水文模型构建与参数模拟方法 |
CN108304174A (zh) * | 2017-08-22 | 2018-07-20 | 北京智行鸿远汽车有限公司 | 一种基于numpy的高精度C语言算法验证方法 |
CN109446286A (zh) * | 2018-09-28 | 2019-03-08 | 山东中创软件商用中间件股份有限公司 | 一种高速公路路网图的可视化方法及装置 |
CN109446286B (zh) * | 2018-09-28 | 2022-01-04 | 山东中创软件商用中间件股份有限公司 | 一种高速公路路网图的可视化方法及装置 |
CN112560260A (zh) * | 2020-12-11 | 2021-03-26 | 博迈科海洋工程股份有限公司 | 基于三维模型下电缆材料参数快速显示方法 |
CN113470178A (zh) * | 2020-12-15 | 2021-10-01 | 北京构力科技有限公司 | 生成三维建筑模型的方法、电子设备和存储介质 |
CN112527268A (zh) * | 2020-12-16 | 2021-03-19 | 极弦科技有限公司 | 一种面向高性能复杂测试测量应用的高效率软件开发模式和架构 |
CN112527268B (zh) * | 2020-12-16 | 2023-10-27 | 成都立思方信息技术有限公司 | 一种面向高性能复杂测试测量应用的软件开发系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106095431A (zh) | 基于Python的3DGIS系统及其快速开发的方法 | |
KR102637513B1 (ko) | 애니메이션 메이킹 방법 및 장치, 컴퓨팅 디바이스 및 저장 매체 | |
CN102622476B (zh) | 用于建筑算量领域的cad图纸整合系统 | |
WO2016082311A1 (zh) | 生成数控机床加工控制数据的系统及方法 | |
CN102054217B (zh) | 基于元模型的工具中的实体变形 | |
CN106681718A (zh) | 一种基于工具集的桌面端插件框架及实现方法 | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
CN105339889A (zh) | 用于计算机应用的语言翻译本地化的技术 | |
US8413109B2 (en) | Systems and methods for metamodel transformation | |
CN108536964A (zh) | 存储介质、卫星星座覆盖性能仿真分析方法及其系统 | |
CN109196476A (zh) | 共享垃圾收集器的不同类型图之间的无缝高性能互操作性 | |
CN107608663A (zh) | 一种移动应用插件及移动应用的开发方法及装置 | |
WO2023035935A1 (zh) | 数据处理方法、装置、电子设备和存储介质 | |
WO2017035748A1 (zh) | 一种代码编译方法及代码编译器 | |
US8732655B2 (en) | Systems and methods for metamodel transformation | |
US20130019225A1 (en) | Incremental Inferences for Developing Data Models | |
CN114356341A (zh) | 一种数据处理方法、装置、设备、存储介质及产品 | |
CN102637123B (zh) | 共同映射通信算子 | |
CN105260177A (zh) | 基于SiPESC平台的Python扩展模块开发方法 | |
CN103677767A (zh) | 一种处理应用程序的方法、操作系统及电子设备 | |
CN112256252A (zh) | 接口生成方法、装置、存储介质及电子设备 | |
CN115794400A (zh) | 深度学习模型的内存管理方法、装置、设备及存储介质 | |
CN115098082A (zh) | 基于Jenkins插件的流水线脚本生成方法、系统、设备及介质 | |
CN114218261A (zh) | 数据查询方法、装置、存储介质以及电子设备 | |
CN106126056A (zh) | 一种基于PowerPoint的幻灯片自动创建方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20161109 |