GIScript2015的第一个入门教程-使用UbuntuKylin15.04

    GIScript2015是一个通用的GIS脚本库,可以帮助进行地理空间数据的处理和分析,提高数据处理的效率,帮助进行地理科学的研究。GIScript2015是一个开源工程,已建立Git版本库和虚拟Team、微信群(两个:GIScript语言、GIScript开发者)。

    GIScript2015与GIScript的区别是2015版完全采用SIP进行封装,与Qt和PyQt具有较好的相容性,接口可以与C++保持一致,从而减少了封装维护资源和增加了易用性。GIScript2015现已完成Windows/Linux的64位基础版本,可运行于UbuntuKylin15.04。

    GIScript2015可以支持Python并行框架Celery(本人已测试通过),从而实现分布式的数据处理调度操作。这个跟Hadoop和Spark应该也可以挂接上去运行的,有兴趣的同学可以试试。另外,这个里面的UGC基础库可以支持MongoDB,这个对大数据的存储和处理可是个利器。

    现在,我们开始一个简单的例程,感受一下GIScript运行的过程,体验一下使用脚本的“懒人模式”。

    GIScript完全是绿色软件、拷贝即用,不需要特殊的复杂安装,使用Python3。

    但是呢,UGC的SIP封装由于全部开放源码出来了,如果是获取的原始工程,需要自己先进Linux64-gcc4.9/SIP/UGC这个目录运行make/make install进行编译和安装(如果是编好的特定操作系统的版本,那么拷贝就可以用的)。由于使用sip封装,因此需要先编译安装sip才行的哦。

    SIP和PyQt的安装参考http://my.oschina.net/u/2306127/blog/484061。需要了解SIP封装的详细的内容可以看这里:http://my.oschina.net/u/2306127/blog/470102。这是一个开放的支持库模式,自己也可以写一个C++的库,参考这个封装过程做成Python来使用,把不同的功能集成到一起。

    进系统目录。

#运行gis.sh,进入Python3
./gis.sh

    或者,直接运行一个测试。

./gisrun.sh /testbed/test.py

    下面我们先看一下gisrun.sh的内容。

#!/bin/sh

echo "========================================================"
echo "*GIScript---Scripting The World.                       *"
echo "********************************************************"
echo "*GIScript Starting...                                  *"
echo "*Project: https://git.oschina.net/supergis/GIScript2015*"
echo "*DevTeam: https://team.oschina.net/GIScript/tweet      *"
echo "========================================================"

#set the enviroment-variable.
export SUPERMAP_HOME=/home/supermap/GIScript/GIScript2015/Linux64-gcc4.9
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SUPERMAP_HOME/Bin

#start run python script.
if [ x$1 != x ]
then
    echo "Run file:" $1
    python3 $1
else
    echo "Usage: gisrun.sh myprocess.py"
fi

这个脚本将设置环境变量,然后启动python3去运行一个Python文件。

如果GIScript2015的安装路径与上面的SUPERMAP_HOME不同,修改改路径即可。

我们再来看看test.py里面的内容:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import sys
import os
import PyUGC
from PyUGC import UGC
from PyUGC import OGDC

if __name__=='__main__':
    ds = UGC.UGDataSourceManager.CreateDataSource(UGC.UDB)
    con = ds.GetConnectionInfo()
    strTemp = OGDC.OgdcMBString("/home/supermap/GIScript/GIScript2015/data/world.udb")
    OGDC.MBString2Unicode(strTemp, con.m_strServer)
    bOpen = ds.Open()
    if bOpen[0] == 1:
        print("打开数据源成功!!")
    else:
        print("打开数据源失败!!")

    strFileName = OGDC.OgdcUnicodeString()
    strTemp = OGDC.OgdcMBString("/home/supermap/GIScript/GIScript2015/data/grid_Int32.grd")
    OGDC.MBString2Unicode(strTemp, strFileName)
    importParams = UGC.UGExchangeParamsManager.MakeImportParams(UGC.UGFileType.AIASCIIGrid)
    importParams.SetImportMode(UGC.UGImportParams.ModeGrid)
    importParams.SetFilePathName(strFileName)
    
    dataExchange = UGC.UGDataExchange()
    dataExchange.AttachDataSource(ds)
    bIsSuccss = dataExchange.Import(importParams)

    if bIsSuccss == 1:
        print("数据导入成功!!")
    else:
        print("数据导入失败!!")
        pass

    del importParams

    ds.Close()
    del ds

    pass

这个例程打开一个数据源,然后将一个栅格文件导入其中。

照着这个例子,可以编写一个批量数据导入的脚本,实现数据的快速导入。



你可能感兴趣的:(python,Gis,UGC,giscript,ogdc)