Heim Datenbank MySQL-Tutorial 利用curl进行逆地理编码_c语言编写动态链接库对PostgreSQL进行扩

利用curl进行逆地理编码_c语言编写动态链接库对PostgreSQL进行扩

Jun 07, 2016 pm 02:50 PM
curl p 利用 动态 地理 编写 编码 语言 Benehmen 链接

流程: 【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>

#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;
}</curl></string.h></stdlib.h></stdio.h>
Nach dem Login kopieren
【2】gcc生成动态链接库
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`
Nach dem Login kopieren
【3】postgreSQL中加载动态链接库中的函数
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');
Nach dem Login kopieren
【4】postgreSQL中将逆地理编码函数的返回类型进行转化【参数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);
Nach dem Login kopieren


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Magnetlinks So verwenden Sie Magnetlinks Feb 18, 2024 am 10:02 AM

Magnet-Link ist eine Link-Methode zum Herunterladen von Ressourcen, die bequemer und effizienter ist als herkömmliche Download-Methoden. Mit Magnet-Links können Sie Ressourcen im Peer-to-Peer-Verfahren herunterladen, ohne auf einen Zwischenserver angewiesen zu sein. In diesem Artikel erfahren Sie, wie Sie Magnetlinks verwenden und worauf Sie achten sollten. 1. Was ist ein Magnet-Link? Ein Magnet-Link ist eine Download-Methode, die auf dem P2P-Protokoll (Peer-to-Peer) basiert. Über Magnet-Links können Benutzer eine direkte Verbindung zum Herausgeber der Ressource herstellen, um die gemeinsame Nutzung und das Herunterladen von Ressourcen abzuschließen. Im Vergleich zu herkömmlichen Download-Methoden magnetisch

Wie lade ich Links herunter, die mit 115:// beginnen? Methodeneinführung herunterladen Wie lade ich Links herunter, die mit 115:// beginnen? Methodeneinführung herunterladen Mar 14, 2024 am 11:58 AM

In letzter Zeit haben viele Benutzer den Editor gefragt, wie man Links herunterlädt, die mit 115:// beginnen? Wenn Sie Links herunterladen möchten, die mit 115:// beginnen, müssen Sie den 115-Browser verwenden. Nachdem Sie den 115-Browser heruntergeladen haben, schauen wir uns das unten vom Herausgeber zusammengestellte Download-Tutorial an. Einführung zum Herunterladen von Links, die mit 115:// beginnen. 1. Melden Sie sich bei 115.com an, laden Sie den 115-Browser herunter und installieren Sie ihn. 2. Geben Sie Folgendes ein: chrome://extensions/ in die Adressleiste des 115-Browsers, rufen Sie das Extension Center auf, suchen Sie nach Tampermonkey und installieren Sie das entsprechende Plug-in. 3. Geben Sie in die Adressleiste des Browsers 115 ein: Grease Monkey Script: https://greasyfork.org/en/

Konvertieren Sie die Festplatte von VirtualBox in eine dynamische Festplatte und umgekehrt Konvertieren Sie die Festplatte von VirtualBox in eine dynamische Festplatte und umgekehrt Mar 25, 2024 am 09:36 AM

Beim Erstellen einer virtuellen Maschine werden Sie aufgefordert, einen Festplattentyp auszuwählen. Sie können zwischen einer festen Festplatte und einer dynamischen Festplatte wählen. Was ist, wenn Sie sich für Festplatten entscheiden und später feststellen, dass Sie dynamische Festplatten benötigen, oder umgekehrt? Sie können die eine in die andere konvertieren. In diesem Beitrag erfahren Sie, wie Sie eine VirtualBox-Festplatte in eine dynamische Festplatte umwandeln und umgekehrt. Eine dynamische Festplatte ist eine virtuelle Festplatte, die zunächst klein ist und mit der Speicherung von Daten in der virtuellen Maschine immer größer wird. Dynamische Festplatten sparen sehr effizient Speicherplatz, da sie nur so viel Host-Speicherplatz beanspruchen, wie benötigt wird. Wenn jedoch die Festplattenkapazität zunimmt, kann die Leistung Ihres Computers geringfügig beeinträchtigt werden. In virtuellen Maschinen werden häufig Festplatten und dynamische Festplatten verwendet

Wie erhalte ich den Link zum WeChat-Videokonto? Wie füge ich Produktlinks zu WeChat-Videokonten hinzu? Wie erhalte ich den Link zum WeChat-Videokonto? Wie füge ich Produktlinks zu WeChat-Videokonten hinzu? Mar 22, 2024 pm 09:36 PM

Als Teil des WeChat-Ökosystems haben sich WeChat-Videokonten nach und nach zu einem wichtigen Werbeinstrument für Content-Ersteller und Händler entwickelt. Der Erhalt von Links zu Videokonten auf dieser Plattform ist für das Teilen und Verbreiten von Inhalten von entscheidender Bedeutung. Im Folgenden wird detailliert beschrieben, wie Sie den Link zum WeChat-Videokonto erhalten und wie Sie Produktlinks zum Videokonto hinzufügen, um den Verbreitungseffekt des Inhalts zu verbessern. 1. Wie erhalte ich den Link zum WeChat-Videokonto? Nachdem Sie ein Video auf Ihrem WeChat-Videokonto gepostet haben, erstellt das System automatisch einen Videolink. Autoren können den Link nach der Veröffentlichung kopieren, um die Weitergabe und Verbreitung zu erleichtern. Nachdem Sie sich bei Ihrem WeChat-Videokonto angemeldet haben, können Sie die Startseite Ihres Videokontos durchsuchen. Auf der Startseite ist jedem Video ein entsprechender Link beigefügt, sodass Sie es direkt kopieren oder teilen können. 3. Videokonto suchen: Geben Sie den Namen des Videokontos in das WeChat-Suchfeld ein

3 Möglichkeiten, die Sprache auf dem iPhone zu ändern 3 Möglichkeiten, die Sprache auf dem iPhone zu ändern Feb 02, 2024 pm 04:12 PM

Es ist kein Geheimnis, dass das iPhone eines der benutzerfreundlichsten elektronischen Geräte ist, und einer der Gründe dafür ist, dass es ganz einfach nach Ihren Wünschen personalisiert werden kann. In der Personalisierung können Sie die Sprache auf eine andere Sprache ändern als die, die Sie beim Einrichten Ihres iPhones ausgewählt haben. Wenn Sie mit mehreren Sprachen vertraut sind oder die Spracheinstellung Ihres iPhones falsch ist, können Sie sie wie unten erläutert ändern. So ändern Sie die Sprache des iPhone [3 Methoden] iOS ermöglicht Benutzern, die bevorzugte Sprache auf dem iPhone frei zu wechseln, um sie an unterschiedliche Bedürfnisse anzupassen. Sie können die Sprache der Interaktion mit Siri ändern, um die Kommunikation mit dem Sprachassistenten zu erleichtern. Gleichzeitig können Sie bei Verwendung der lokalen Tastatur problemlos zwischen mehreren Sprachen wechseln, um die Eingabeeffizienz zu verbessern.

Tutorial zum Aktualisieren der Curl-Version unter Linux! Tutorial zum Aktualisieren der Curl-Version unter Linux! Mar 07, 2024 am 08:30 AM

Um die Curl-Version unter Linux zu aktualisieren, können Sie die folgenden Schritte ausführen: Überprüfen Sie die aktuelle Curl-Version: Zunächst müssen Sie die im aktuellen System installierte Curl-Version ermitteln. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus: curl --version Dieser Befehl zeigt die aktuellen Informationen zur Curl-Version an. Verfügbare Curl-Version bestätigen: Bevor Sie Curl aktualisieren, müssen Sie die neueste verfügbare Version bestätigen. Sie können die offizielle Website von Curl (curl.haxx.se) oder verwandte Softwarequellen besuchen, um die neueste Version von Curl zu finden. Laden Sie den Curl-Quellcode herunter: Laden Sie mit Curl oder einem Browser die Quellcodedatei für die Curl-Version Ihrer Wahl herunter (normalerweise .tar.gz oder .tar.bz2).

Was sind die Voraussetzungen für einen Videolink? Wie verknüpfe ich das Videokonto mit Waren? Was sind die Voraussetzungen für einen Videolink? Wie verknüpfe ich das Videokonto mit Waren? Mar 07, 2024 pm 01:13 PM

Mit der Popularität von Kurzvideoplattformen beginnen immer mehr YouTuber, Videokonten zum Erstellen und Bewerben von Inhalten zu nutzen. Videokonten können nicht nur persönliche Talente zur Schau stellen, sondern durch Produktverknüpfungen auch eine kommerzielle Monetarisierung ermöglichen. Um jedoch einen Link zu einem Videokonto hinzuzufügen, müssen bestimmte Bedingungen erfüllt sein. 1. Was sind die Voraussetzungen für einen Videolink? Die Authentifizierung des Videokontos ist eine Voraussetzung für das Hinzufügen von Links zu Ihrem Videokonto. Derzeit bieten große Kurzvideoplattformen wie Douyin und Kuaishou Zertifizierungsdienste an, die hauptsächlich zwei Arten umfassen: persönliche Zertifizierung und institutionelle Zertifizierung. Die persönliche Zertifizierung erfordert die Übermittlung echter Identitätsinformationen, während die institutionelle Zertifizierung die Bereitstellung von Zertifizierungsmaterialien relevanter Unternehmen oder Organisationen erfordert. Nach Abschluss der Authentifizierung können Benutzer Links zu ihren Videokonten hinzufügen, um die Glaubwürdigkeit und Autorität ihrer Konten zu erhöhen. Einer der Videolinks

So verlinken Sie auf Doudian – Tutorial zum Verlinken auf Doudian So verlinken Sie auf Doudian – Tutorial zum Verlinken auf Doudian Mar 06, 2024 am 08:40 AM

Viele Freunde wissen immer noch nicht, wie man auf Doudian verlinkt, daher erklärt der Redakteur unten das Tutorial zum Verlinken auf Doudian. Wenn Sie es brauchen, schauen Sie es sich meiner Meinung nach an. Schritt 1: Öffnen Sie zunächst das Doudian-Computerterminal und geben Sie in der linken Spalte „Window Product Management“ ein, wie im Bild gezeigt. Schritt 2: Klicken Sie dann oben rechts auf „Produkt hinzufügen“, wie im Bild gezeigt. Schritt 3: Kopieren Sie dann unseren Produktlink und fügen Sie ihn wie im Bild gezeigt ein. Schritt 4: Klicken Sie dann auf „Hinzufügen bestätigen“, wie im Bild gezeigt. Schritt 5: Geben Sie abschließend die Einleitung, Bilder und andere Informationen ein und klicken Sie dann auf „Bestätigen“, um eine Verknüpfung zu Douyin herzustellen, wie im Bild gezeigt. Das Obige ist der gesamte Inhalt zum Hinzufügen von Links zu Doudian, der Ihnen vom Herausgeber zur Verfügung gestellt wurde. Ich hoffe, dass er für alle hilfreich sein kann.

See all articles