spatialite编译使用

零、前言

sqlite本身不支持空间索引,只支持数据存储,spatialite库是对sqlite的扩展,可以对sqlite中存储的坐标进行读写操作,本文就是结合自己的使用过程总结而成,希望能够对你有所帮助。

一、安装依赖库

我这里的编译环境是ubuntu18.04下面的在线编译,spatialite所有的依赖库都是采用在线的方式进行安装,spatialite的依赖库包括:sqlite3、proj、freexl、xml2、iconv、lzma、geos、minizip等。

安装依赖库指令:sudo apt install libsqlite3-dev libproj-dev libfreexl-dev libxml2-dev libiconv-hook-dev liblzma-dev libgeos-dev libmini zip-dev -y

二、编译spatialite库

spatialite源码下载地址:http://www.gaia-gis.it/gaia-sins/libspatialite-sources/

解压源码后进入源码里面编译:
./configure --disable-rttopo --disable-gcp --enable-static=yes CXXFLAGS=-fPIC CFLAGS=-fPIC
make -jnproc
sudo make install

三、spatialite库使用

spatialite库的使用可以直接参考源码下面的example进行学习。有些代码直接改把改把就能用。下面的代码就是结合源码中的样例,直接封装的,其他库的学习,其实也是同样的道理,官方的样例最详细、最好用。

#include "sqlite3.h" // 必须把sqlite3.h放在spatialite.h前面
#include "spatialite/gaiageo.h"
#include "spatialite/gg_const.h"
#include "spatialite.h"
#include <vector>
#include <iostream>
#include <string>
using namespace std;
struct PointD
{
   
    double x = 0.;
    double y = 0.;
    double z = 0.;
};
// 这个函数演示spatialite读取数据库中坐标的方法
void getGeometryPoints(std::vector<PointD> &points, sqlite3_stmt *stmt, int index)
{
   
    u_char *pBolb = (u_char *)sqlite3_column_blob(stmt, index);
    if (pBolb != nullptr)
    {
   
        int count = sqlite3_column_bytes(stmt, index);
        gaiaGeomCollPtr geo 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值