1.Geos库的安装
背景:项目需要判断多边形ROI区域和识别目标Bounding Box是否重叠。作者是在Jetson nano开发板上编译Geos,因为deepstream使用的是c语言,因此我使用Geos_c库。
1.1 下载 geos-3.8.0.tar.bz2
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 ))"

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

被折叠的 条评论
为什么被折叠?



