利用curl进行逆地理编码_c语言编写动态链接库对PostgreSQL进行扩
流程: 【1】c语言编写逆地理编码的函数,利用curl库和高德服务器进行地理坐标解析 【2】gcc生成动态链接库 【3】postgreSQL中加载动态链接库中的函数 【4】postgreSQL中将逆地理编码函数的返回类型进行转化 =========================================== 【
流程:
【1】c语言编写逆地理编码的函数,利用curl库和高德服务器进行地理坐标解析
【2】gcc生成动态链接库
【3】postgreSQL中加载动态链接库中的函数
【4】postgreSQL中将逆地理编码函数的返回类型进行转化
===========================================
【1】c语言编写逆地理编码的函数,利用curl库和高德服务器进行地理坐标解析
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> #include "postgres.h" #include "fmgr.h" PG_MODULE_MAGIC; int StringFind(const char *pSrc,const char *pDst)//字符串位置查找,返回源字符串的位置 { int i, j; for (i=0; pSrc[i]!='\0'; i++) { if(pSrc[i]!=pDst[0]) continue; j = 0; while(pDst[j]!='\0' && pSrc[i+j]!='\0') { j++; if(pDst[j]!=pSrc[i+j]) break; } if(pDst[j]=='\0') return i; } return -1; } size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata)//回调函数 { strcat((char*)userdata, (char*)ptr); return size*nmemb; } char* poi_list(char* longitude, char* latitude) { //主函数 int mPos=0; char* result; char* strLongitude=longitude; char* strLatitude=latitude; char tempLongitude[25]="longitude="; char tempLatitude[25]="&latitude="; char* pstrLongitude; char* pstrLatitude; pstrLongitude=strcat((char*)tempLongitude,strLongitude); pstrLatitude=strcat((char*)tempLatitude,strLatitude); char* locationInfor=strcat(pstrLongitude,pstrLatitude); char finalResult[5120]={'\0'}; int i=0; char* pDst="poi_list"; char szRet[5120] = {'\0'};//结果存储 char szpage[256] = "http://ditu.amap.com/service/regeo?"; char *myurl =strcat(szpage,locationInfor); CURLcode res; res = curl_global_init(CURL_GLOBAL_ALL);//初始化 if (res != CURLE_OK) { result = psprintf( "Failed to global init default [%d]\n", res ); return result; } CURL* pEasyHandle = curl_easy_init(); // 初始化 curl_easy_setopt(pEasyHandle, CURLOPT_URL, myurl);//传入url curl_easy_setopt(pEasyHandle, CURLOPT_WRITEFUNCTION, &write_callback);//调用回调函数 curl_easy_setopt(pEasyHandle, CURLOPT_TIMEOUT, 10); curl_easy_setopt(pEasyHandle, CURLOPT_FORBID_REUSE, 1); curl_easy_setopt(pEasyHandle, CURLOPT_WRITEDATA, szRet);//参数三对应回调函数的参数四 res = curl_easy_perform(pEasyHandle); curl_easy_cleanup(pEasyHandle); result = szRet ; //获取整个json数据 mPos=StringFind(result,pDst); int mNewPos=mPos+10;//过滤掉poi_list字段 while(szRet[mNewPos]!='\0') { finalResult[i]=szRet[mNewPos]; mNewPos++; i++; } i=i-2; finalResult[i]='\0'; char *result0=finalResult; return result0; }
hyc@hyc-csu:~/文档/Curl_program$ gcc -fpic -I `pg_config --includedir-server` -c poiOutput.c -lcurl hyc@hyc-csu:~/文档/Curl_program$ gcc -fpic -shared -o poiOutput.so poiOutput.o -lcurl hyc@hyc-csu:~/文档/Curl_program$ sudo cp poiOutput.so `pg_config --libdir`
gpsDB=# load 'poiOutput.so'; LOAD gpsDB=# create function poi_list(cstring,cstring) returns cstring as 'poiOutput.so','poi_list' language C immutable strict; CREATE FUNCTION gpsDB=# select poi_list('118.744607','32.030886');
gpsDB=# select (select poi_list('112.931850','28.169100'))::json; ERROR: cannot cast type cstring to json ?//cstring类型转化为text类型,再转化为json类型 gpsDB=# select * from json_populate_recordset(null::poiarray,(cast((select poi_list('118.744607','32.030886')) as text))::json); gpsDB=# select * from json_populate_recordset(null::poiarray,(poi_list('118.744607','32.030886')::text)::json);


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

磁力链接是一种用于下载资源的链接方式,相比传统的下载方式更为便捷和高效。使用磁力链接可以通过点对点的方式下载资源,而不需要依赖中介服务器。本文将介绍磁力链接的使用方法及注意事项。一、什么是磁力链接磁力链接是一种基于P2P(Peer-to-Peer)协议的下载方式。通过磁力链接,用户可以直接连接到资源的发布者,从而完成资源的共享和下载。与传统的下载方式相比,磁

最近有很多用户都在问小编,115://开头的链接怎么下载?想要下载115://开头的链接需要借助115浏览器,大家下载好115浏览器后,再来看看下面小编整理好的下载教程吧。 115://开头的链接下载方法介绍 1、登录115.com,下载115浏览器并安装。 2、在115浏览器地址栏输入:chrome://extensions/,进入扩展中心,搜索Tampermonkey,安装对应插件。 3、在115浏览器地址栏输入: 油猴脚本:https://greasyfork.org/en/

在创建虚拟机时,系统会要求您选择磁盘类型,您可以选择固定磁盘或动态磁盘。如果您选择了固定磁盘,后来意识到需要动态磁盘,或者相反,该怎么办?好!你可以把一种转换成另一种。在这篇文章中,我们将看到如何将VirtualBox固定磁盘转换为动态磁盘,反之亦然。动态磁盘是一种虚拟硬盘,它最初具有较小的大小,随着您在虚拟机中存储数据,其大小会相应增长。动态磁盘在节省存储空间方面非常高效,因为它们只占用所需的主机存储空间。然而,随着磁盘容量的扩展,可能会稍微影响计算机的性能。固定磁盘和动态磁盘是虚拟机中常用的

微信视频号作为微信生态系统的一部分,已经逐渐成为内容创作者和商家的重要推广工具。在这个平台上获取视频号链接对于分享和传播内容至关重要。下文将详细介绍如何获取微信视频号链接,以及如何在视频号中添加商品链接,提升内容的传播效果。一、如何获取微信视频号链接?在微信视频号中发布视频后,系统会自动创建一个视频链接。作者可以在发布后复制该链接,方便进行分享和传播。登录微信视频号后,您可以浏览自己的视频号主页。在主页上,每个视频都附有相应的链接,方便您直接复制或分享。3.搜索视频号:在微信搜索框中输入视频号名

众所周知,iPhone是最人性化的电子产品之一,其中一个原因是它可以轻松地根据您的喜好进行个性化设置。在个性化设置中,您可以更改语言,这与您在设置iPhone时选择的语言不同。如果您对多种语言熟悉,或者您的iPhone语言设置错误,您可以按照我们下面解释的方法进行更改。如何更改iPhone的语言[3种方法]iOS允许用户在iPhone上自由切换首选语言,以适应不同的需求。您可以更改与Siri的交互语言,方便与语音助手进行沟通。同时,在使用本地键盘时,您可以轻松地在多种语言之间切换,提高输入效率。

在Linux下更新curl版本,您可以按照以下步骤进行操作:检查当前curl版本:首先,您需要确定当前系统中安装的curl版本。打开终端,并执行以下命令:curl--version该命令将显示当前curl的版本信息。确认可用的curl版本:在更新curl之前,您需要确定可用的最新版本。您可以访问curl的官方网站(curl.haxx.se)或相关的软件源,查找最新版本的curl。下载curl源代码:使用curl或浏览器,下载您选择的curl版本的源代码文件(通常为.tar.gz或.tar.bz2

随着短视频平台的盛行,越来越多的创作者开始利用视频号来创作和推广内容。视频号不仅可以展示个人才能,还可以通过带货链接来实现商业变现。但是,要在视频号中添加链接,必须符合一定的条件。一、视频号挂链接需要什么条件?视频号认证是在视频号中添加链接的前提条件。目前,主要的短视频平台如抖音、快手等都提供认证服务,主要包括个人认证和机构认证两种类型。个人认证需要提交真实身份信息,而机构认证则需要提供相关企业或组织的认证材料。完成认证后,用户可以在视频号中添加链接,提升账号的可信度和权威性。视频号挂链接的一个

有很多朋友还不知道抖店怎么上链接,所以下面小编就讲解了抖店上链接的方法教程,有需要的小伙伴赶紧来看一下吧,相信对大家一定会有所帮助哦。第一步:首先打开抖店电脑端,进入左边栏“橱窗商品管理”,如图所示。第二步:接着点击右上角的“添加商品”,如图所示。第三步:然后将我们的商品链接复制粘贴进去,如图所示。第四步:随后点击“确认添加”,如图所示。第五步:最后输入介绍、图片等信息,再点击“确认”就能在抖音上链接了,如图所示。上面就是小编为大家带来的抖店怎么上链接的全部内容,希望对大家能够有所帮助哦。
