一、Geos库的安装和计算多边形是否相交

本文档详细介绍了如何在JetsonNano开发板上编译和安装Geos_c库,并提供了C和C++两种语言实现的多边形相交判断代码示例。通过自定义安装目录,确保在GCC编译时能够正确链接到库文件。C语言示例展示了如何使用GEOSIntersects等函数检查两个多边形是否相交,而C++示例则演示了创建和操作多边形对象以及进行相交检测的方法。

1.Geos库的安装

背景:项目需要判断多边形ROI区域和识别目标Bounding Box是否重叠。作者是在Jetson nano开发板上编译Geos,因为deepstream使用的是c语言,因此我使用Geos_c库。

1.1 下载 geos-3.8.0.tar.bz2

geos官网

1.2 安装

cd geos-3.6.2
./configue  //或选择安装的目录./configure --prefix=/usr/geos
make 
make install 

我这里建议(Jetson环境下)自定义安装目录,方便在gcc编译的时候,添加:
头文件“-I/home/lieryang/geos/include”,
库文件地址-L/home/lieryang/geos/lib","-lgeos_c"

2.计算多边形是否相交

2.1 C语言实现

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

#include "geos_c.h"

void
notice(const char *fmt, ...) {
   
   
	va_list ap;

        fprintf( stdout, "NOTICE: ");
        
	va_start (ap, fmt);
        vfprintf( stdout, fmt, ap);
        va_end(ap);
        fprintf( stdout, "\n" );
}

void
log_and_exit(const char *fmt, ...) {
   
   
	va_list ap;

        fprintf( stdout, "ERROR: ");
        
	va_start (ap, fmt);
        vfprintf( stdout, fmt, ap);
        va_end(ap);
        fprintf( stdout, "\n" );
	exit(1);
}

int
main(int argc, char **argv)
{
   
   

	int i, n=1;

	initGEOS(notice, log_and_exit);
	printf("GEOS version %s\n", GEOSversion());
	
    GEOSGeometry* g1;
	GEOSGeometry* g2;
	GEOSGeometry* shell;
	const GEOSGeometry* gtmp;

	GEOSCoordSequence* cs;
	

	unsigned int npoints, ndims;

	g1 = GEOSGeomFromWKT("POLYGON((0 0, 0  10,10 10,0 0 ))"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值