国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

利用curl進行逆地理編碼_c語言編寫動態(tài)鏈接庫對PostgreSQL進行擴

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 16:28:53
文檔

利用curl進行逆地理編碼_c語言編寫動態(tài)鏈接庫對PostgreSQL進行擴

利用curl進行逆地理編碼_c語言編寫動態(tài)鏈接庫對PostgreSQL進行擴:流程: 【1】c語言編寫逆地理編碼的函數(shù),利用curl庫和高德服務器進行地理坐標解析 【2】gcc生成動態(tài)鏈接庫 【3】postgreSQL中加載動態(tài)鏈接庫中的函數(shù) 【4】postgreSQL中將逆地理編碼函數(shù)的返回類型進行轉化 ==========================
推薦度:
導讀利用curl進行逆地理編碼_c語言編寫動態(tài)鏈接庫對PostgreSQL進行擴:流程: 【1】c語言編寫逆地理編碼的函數(shù),利用curl庫和高德服務器進行地理坐標解析 【2】gcc生成動態(tài)鏈接庫 【3】postgreSQL中加載動態(tài)鏈接庫中的函數(shù) 【4】postgreSQL中將逆地理編碼函數(shù)的返回類型進行轉化 ==========================

流程: 【1】c語言編寫逆地理編碼的函數(shù),利用curl庫和高德服務器進行地理坐標解析 【2】gcc生成動態(tài)鏈接庫 【3】postgreSQL中加載動態(tài)鏈接庫中的函數(shù) 【4】postgreSQL中將逆地理編碼函數(shù)的返回類型進行轉化 =========================================== 【

流程:
【1】c語言編寫逆地理編碼的函數(shù),利用curl庫和高德服務器進行地理坐標解析
【2】gcc生成動態(tài)鏈接庫
【3】postgreSQL中加載動態(tài)鏈接庫中的函數(shù)
【4】postgreSQL中將逆地理編碼函數(shù)的返回類型進行轉化
===========================================
【1】c語言編寫逆地理編碼的函數(shù),利用curl庫和高德服務器進行地理坐標解析

#include 
#include 
#include 
#include 

#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)//回調(diào)函數(shù)
{
strcat((char*)userdata, (char*)ptr);
return size*nmemb;
}

char* poi_list(char* longitude, char* latitude) {	//主函數(shù)

	 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);//調(diào)用回調(diào)函數(shù)
	 curl_easy_setopt(pEasyHandle, CURLOPT_TIMEOUT, 10); 
	 curl_easy_setopt(pEasyHandle, CURLOPT_FORBID_REUSE, 1); 
	 curl_easy_setopt(pEasyHandle, CURLOPT_WRITEDATA, szRet);//參數(shù)三對應回調(diào)函數(shù)的參數(shù)四

	 res = curl_easy_perform(pEasyHandle);
	 curl_easy_cleanup(pEasyHandle);

	 result = szRet ;	//獲取整個json數(shù)據(jù)
	
	 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;
}
【2】gcc生成動態(tài)鏈接庫
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`
【3】postgreSQL中加載動態(tài)鏈接庫中的函數(shù)
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');
【4】postgreSQL中將逆地理編碼函數(shù)的返回類型進行轉化【參數(shù)null::poiarray,其中poiarray表結構與json結構相對應,詳情點擊此處】
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);

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

利用curl進行逆地理編碼_c語言編寫動態(tài)鏈接庫對PostgreSQL進行擴

利用curl進行逆地理編碼_c語言編寫動態(tài)鏈接庫對PostgreSQL進行擴:流程: 【1】c語言編寫逆地理編碼的函數(shù),利用curl庫和高德服務器進行地理坐標解析 【2】gcc生成動態(tài)鏈接庫 【3】postgreSQL中加載動態(tài)鏈接庫中的函數(shù) 【4】postgreSQL中將逆地理編碼函數(shù)的返回類型進行轉化 ==========================
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 免费国产一级 | 精品国产一区二区三区香蕉 | 欧美亚洲另类视频 | 国产亚洲婷婷香蕉久久精品 | 韩日视频在线 | 日韩精品第一 | 精品视频一区二区 | 国产成人精品久久一区二区三区 | 亚洲三级电影在线 | 国内精品久久久久久久97牛牛 | 国产精品第1页在线观看 | 日韩欧美高清视频 | 免费在线国产视频 | 中文字幕一区久久久久 | 一区二区免费在线观看 | 国产欧美另类久久精品91 | 欧美精品一区二区精品久久 | 欧美一区二区不卡视频 | 亚欧乱色视频网站大全 | 一道精品一区二区三区 | 日韩专区第一页 | 免费国产小视频在线观看 | 伊人中文字幕 | 国内在线观看精品免费视频 | 精品欧美一区二区三区精品久久 | 亚洲夜夜骑 | 亚欧精品一区二区三区 | 欧美夜夜| 视频日韩p影院永久免费 | 自拍偷拍日韩 | 中文国产成人精品久久一 | 国产高清一级在线观看 | 亚洲国产精品一区二区三区 | 成人美女黄网站色大色费 | 日韩美女一区二区三区 | 久久精品成人国产午夜 | 另类激情亚洲 | 亚洲一二三区在线观看 | 青青草原国产一区二区 | 欧美成人免费高清视频 | 日本一区二区视频在线观看 |