Go (Golang) में जियोलोकेशन और मैप्स: लाइब्रेरी और कोड उदाहरण
Go (Golang) एक आधुनिक कंपाइल्ड भाषा है जो अपनी परफॉरमेंस, सादगी और बिल्ट-इन कंकरेंसी सपोर्ट के कारण backend डेवलपमेंट में तेजी से लोकप्रिय हो रही है। शैक्षिक, लॉजिस्टिक, ट्रैवल और अन्य वेब सर्विसेज बनाते समय अक्सर भौगोलिक डेटा के साथ काम करने की जरूरत होती है: दो बिंदुओं के बीच दूरी निकालना, कोऑर्डिनेट्स को ज़ोन में चेक करना, रूट बनाना और मैप दिखाना। इस आर्टिकल में हम Go की मुख्य जियोलोकेशन और मैप्स लाइब्रेरीज के बारे में जानेंगे, साथ ही प्रैक्टिकल कोड उदाहरण भी देखेंगे।
जियोलोकेशन के लिए मुख्य लाइब्रेरी
1. github.com/paulmach/orb — ज्यामितीय ऑब्जेक्ट्स के लिए ऑल-इन-वन लाइब्रेरी
orb लाइब्रेरी पॉइंट्स, लाइन्स, पॉलीगॉन और अन्य ज्यामितीय प्रिमिटिव के साथ काम करने के लिए टाइप्स और फंक्शन प्रदान करती है। यह GeoJSON, बूलियन ज्योमेट्री, प्रोजेक्शन और कोऑर्डिनेट ट्रांसफॉर्मेशन को सपोर्ट करती है। यह एक बेसिक लाइब्रेरी है जिस पर कई अन्य समाधान बनाए जाते हैं।
package main
import (
"fmt"
"github.com/paulmach/orb"
"github.com/paulmach/orb/geo"
)
func main() {
// दो पॉइंट्स डिफाइन करें (अक्षांश, देशांतर)
delhi := orb.Point{77.2090, 28.6139}
mumbai := orb.Point{72.8777, 19.0760}
// किलोमीटर में दूरी निकालें (हैवरसाइन फॉर्मूला)
distance := geo.Distance(delhi, mumbai)
fmt.Printf("दिल्ली से मुंबई की दूरी: %.2f किमी\n", distance)
}
2. github.com/twpayne/go-geom — ज्यामितीय ऑपरेशन के लिए पावरफुल लाइब्रेरी
यह लाइब्रेरी ज्योमेट्री तक लो-लेवल एक्सेस देती है और OGC (Open Geospatial Consortium) के कई मानकों को सपोर्ट करती है। यह जटिल गणनाओं के लिए आदर्श है: पॉलीगॉन इंटरसेक्शन, बफरिंग, प्रोजेक्शन ट्रांसफॉर्मेशन।
import (
"github.com/twpayne/go-geom"
"github.com/twpayne/go-geom/encoding/geojson"
)
// उदाहरण: पॉइंट बनाना और GeoJSON में सीरियलाइज़ करना
point := geom.NewPoint(geom.XY).SetCoords(geom.Coord{77.2090, 28.6139})
data, _ := geojson.Marshal(point)
fmt.Println(string(data))
// आउटपुट: {"type":"Point","coordinates":[77.2090,28.6139]}
3. github.com/kellydunn/golang-geo — दूरी और जियोकोडिंग के लिए सरल लाइब्रेरी
golang-geo लाइब्रेरी पॉइंट्स के साथ काम करने, दूरी (मील और किलोमीटर में) निकालने और Google Maps API या OpenStreetMap (Nominatim) के जरिए जियोकोडिंग के लिए एक सरल API प्रदान करती है।
import "github.com/kellydunn/golang-geo"
func main() {
p1 := geo.NewPoint(28.6139, 77.2090)
p2 := geo.NewPoint(19.0760, 72.8777)
dist := p1.GreatCircleDistance(p2) // किलोमीटर में
fmt.Printf("दूरी: %.2f किमी\n", dist)
}
मैप्स और विज़ुअलाइज़ेशन के लिए लाइब्रेरी
4. github.com/umahmood/leaflet-go — Go के लिए Leaflet.js इंटीग्रेशन
Leaflet इंटरैक्टिव मैप्स के लिए सबसे लोकप्रिय JavaScript लाइब्रेरी में से एक है। leaflet-go आपको Go एप्लिकेशन से सीधे मैप्स का HTML कोड जनरेट करने की सुविधा देता है। यह शैक्षिक साइटों और सरल वेब सर्विसेज के लिए उपयोगी है।
import "github.com/umahmood/leaflet-go"
func main() {
// दिल्ली में सेंटर के साथ मैप बनाएँ
m := leaflet.NewMap(
leaflet.Center(28.6139, 77.2090),
leaflet.Zoom(10),
leaflet.TileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"),
)
// मार्कर जोड़ें
m.AddMarker(leaflet.Marker(
leaflet.LatLng(28.6139, 77.2090),
leaflet.Popup("दिल्ली, इंडिया गेट"),
))
// मैप का HTML कोड आउटपुट करें
html, _ := m.Render()
fmt.Println(html)
}
5. github.com/ringsaturn/leaflet — Leaflet के लिए वैकल्पिक रैपर
यह लाइब्रेरी Leaflet की क्षमताओं का अधिक व्यापक सपोर्ट प्रदान करती है: लेयर्स, पॉलीगॉन, सर्कल