C++ में भू-स्थान और मानचित्र: पुस्तकालयों और उपकरणों का अवलोकन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ में भू-स्थान और मानचित्र: पुस्तकालयों, उपकरणों और कोड उदाहरणों का अवलोकन



C++ भाषा में भू-स्थान और मानचित्रकला से संबंधित अनुप्रयोगों के विकास के लिए विशेष पुस्तकालयों के उपयोग की आवश्यकता होती है। Python या JavaScript के विपरीत, जहाँ भू-डेटा के साथ काम करने का पारिस्थितिकी तंत्र अधिक "आउट ऑफ द बॉक्स" है, C++ में शक्तिशाली लेकिन संकीर्ण रूप से केंद्रित उपकरणों को जोड़ना आवश्यक है। इस लेख में, हम C++ पर निर्देशांकों, मानचित्रों और भू-डेटा के साथ काम करने के लिए प्रमुख पुस्तकालयों और दृष्टिकोणों का विश्लेषण करेंगे।



1. मूल स्तर: निर्देशांकों और HTTP अनुरोधों के साथ कार्य



भारी तोपखाने पर जाने से पहले, मूल बातों में महारत हासिल करना उचित है। स्थान डेटा प्राप्त करने के लिए (उदाहरण के लिए, GPS रिसीवर या API के माध्यम से), मानक इनपुट-आउटपुट और नेटवर्क अनुरोधों का उपयोग किया जाता है।



libcurl पुस्तकालय HTTP अनुरोधों के लिए मुख्य उपकरण है। इसकी सहायता से भू-स्थान API (जैसे ip-api.com या openstreetmap.org) तक पहुँचा जा सकता है।



IP पते द्वारा निर्देशांक प्राप्त करने का उदाहरण:



#include <curl/curl.h>#include <string>#include <iostream>

size_t writeCallback(void* contents, size_t size, size_t nmemb, std::string* output) { size_t totalSize = size * nmemb; output->append((char*)contents, totalSize); return totalSize;}

int main() { CURL* curl = curl_easy_init(); if (curl) { std::string response; curl_easy_setopt(curl, CURLOPT_URL, "http://ip-api.com/json/"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); CURLcode res = curl_easy_perform(curl); if (res == CURLE_OK) { std::cout << "सर्वर से प्रतिक्रिया: " << response << std::endl; // आगे JSON पार्स करें (उदाहरण के लिए, nlohmann/json के साथ) } curl_easy_cleanup(curl); } return 0;}


भू-सेवाओं से JSON प्रतिक्रियाओं को पार्स करने के लिए nlohmann/json पुस्तकालय का उपयोग करने की अनुशंसा की जाती है - यह सरल और कुशल है।



2. प्रक्षेपण और निर्देशांक रूपांतरण: Proj पुस्तकालय



भू-स्थान के साथ काम करते समय, अक्सर निर्देशांकों को एक प्रणाली से दूसरी प्रणाली में अनुवाद करने की आवश्यकता होती है (उदाहरण के लिए, WGS84 से मर्केटर प्रक्षेपण में)। इसके लिए प्रसिद्ध Proj (PROJ) पुस्तकालय मौजूद है - C और C++ में मानचित्रकला प्रक्षेपणों के लिए वास्तविक मानक।



डिग्री से मीटर (UTM) में निर्देशांक रूपांतरण का उदाहरण:



#include <proj.h>#include <iostream>

int main() { PJ_CONTEXT* ctx = proj_context_create(); PJ* transformation = proj_create_crs_to_crs(ctx, "EPSG:4326", // WGS84 (अक्षांश/देशांतर) "EPSG:32637", // UTM जोन 37N nullptr);

if (transformation == nullptr) { std::cerr << "रूपांतरण बनाने में त्रुटि" << std::endl; return 1; }

PJ_COORD coord; coord.lp.lam = 37.6173; // देशांतर (मास्को) coord.lp.phi = 55.7558; // अक्षांश

PJ_COORD result = proj_trans(transformation, PJ_FWD, coord); std::cout << "X (पूर्व): " << result.xy.x << " मी" << std::endl; std::cout << "Y (उत्तर): " << result.xy.y << " मी" << std::endl;

proj_destroy(transformation); proj_context_destroy(ctx); return 0;}


3. रास्टर और वेक्टर मानचित्रों के साथ कार्य: GDAL



GDAL (Geospatial Data Abstraction Library) भू-डेटा के साथ काम करने के लिए एक स्विस आर्मी चाकू है। यह दर्जनों प्रारूपों का समर्थन करता है: GeoTIFF, Shapefile, GeoJSON, KML और अन्य। GDAL रास्टर (उपग्रह चित्र) और वेक्टर (देशों की सीमाएँ, सड़कें) दोनों डेटा को पढ़ने, लिखने और विश्लेषण करने की अनुमति देता है।



Shapefile से निर्देशांक पढ़ने का उदाहरण:



#include <gdal/gdal_priv.h>#include <gdal/ogrsf_frmts.h>#include <iostream>

int main() {

अनुशंसाएँ