ServBay में pgRouting के साथ जियोस्पेशियल रूटिंग विश्लेषण
pgRouting
PostgreSQL और PostGIS डेटाबेस के लिए एक शक्तिशाली एक्सटेंशन मॉड्यूल है, जो जियोस्पेशियल डेटा पर रूटिंग व नेटवर्क विश्लेषण की समृद्ध सुविधाएँ प्रदान करता है। pgRouting
का उपयोग करके डेवेलपर्स रोड नेटवर्क डेटा पर जटिल क्वेरी चला सकते हैं, जैसे दो बिंदुओं के बीच सबसे छोटा रास्ता (Shortest Path) ढूंढना, ट्रैवेलिंग सेल्समैन प्रॉब्लम (TSP) हल करना, या सर्विस एरिया विश्लेषण करना। ये फीचर्स मैप एप्लिकेशन, लॉजिस्टिक्स प्लानिंग, ट्रैफिक एनालिसिस आदि के लिए बहुत उपयोगी हैं।
यह लेख विस्तार से बताएगा कि ServBay लोकल वेब डेवेलपमेंट एन्वायर्नमेंट में अपने PostgreSQL डेटाबेस के लिए pgRouting
एक्सटेंशन को आसानी से कैसे सक्रिय करें, बेसिक कॉन्फ़िगरेशन करें और रूटिंग एनालिसिस करें।
संक्षिप्त परिचय
ServBay macOS पर डेवेलपर्स के लिए एक सुविधाजनक, ऑल-इन-वन लोकल डेवेलपमेंट एन्वायर्नमेंट है, जिसमें अनेक वेब सर्वर, डेटाबेस और प्रोग्रामिंग लैंग्वेज पूर्व-स्थापित आते हैं। ServBay द्वारा दिए गए PostgreSQL पैकेज में पहले से ही pgRouting
और PostGIS
एक्सटेंशन शामिल होते हैं। इसका अर्थ है, आपको इन्हें मैन्युअली डाउनलोड या कंपाइल करने की ज़रूरत नहीं; बस अपने डेटाबेस पर एक्सटेंशन सक्रिय करें और उपयोग शुरू करें।
आवश्यक पूर्व शर्तें
pgRouting
का इस्तेमाल शुरू करने से पहले सुनिश्चित कर लें कि ये शर्तें पूरी हैं:
- ServBay इंस्टॉल एवं चालू है: यदि आपने अभी तक ServBay इंस्टॉल नहीं किया है, तो ServBay की ऑफिशियल वेबसाइट से इसका लेटेस्ट वर्शन डाउनलोड करके इंस्टॉल करें।
- PostgreSQL पैकेज इंस्टॉल और स्टार्ट है: ServBay एप्लिकेशन के इंटरफेस में यह कन्फर्म करें कि PostgreSQL पैकेज इंस्टॉल और "Running" स्थिति में है।
- SQL एवं PostgreSQL की बेसिक जानकारी है: यह गाइड मानकर चलती है कि आपको PostgreSQL और SQL क्वेरी का आधारभूत ज्ञान है।
- PostGIS की बेसिक समझ:
pgRouting
जियोस्पेशियल डेटा टाइप्स और फंक्शन्स प्रोसेस करने के लिएPostGIS
पर डिपेंड करता है। सुनिश्चित करें कि आपके डेटाबेस मेंPostGIS
एक्सटेंशन चालू है। ServBay के PostgreSQL पैकेज में अक्सर PostGIS शामिल होता है।
pgRouting एक्सटेंशन की इंस्टॉलेशन और सक्रियता
ServBay में pgRouting
एक्सटेंशन फाइले पहले से ही उपलब्ध हैं, बस अपने संबंधित डेटाबेस में इस एक्सटेंशन को एनेबल करना होता है।
PostgreSQL डेटाबेस से कनेक्ट करें:
PostgreSQL डेटाबेस से कनेक्ट होने के लिए आप विभिन्न तरीके अपना सकते हैं, जैसे कमांड लाइन टूल
psql
, ग्राफिकल टूल्स (जैसे pgAdmin, DBeaver) या प्रोग्रामिंग लैंग्वेज क्लाइंट लाइब्रेरी।ServBay में उपलब्ध
psql
कमांड लाइन टूल से कनेक्ट होना एक सीधा तरीका है। आप ServBay एप्लिकेशन के "Terminal" बटन का उपयोग करके एक पहले से सेट पर्यावरण वाले टर्मिनल विंडो खोल सकते हैं, या मैन्युअल रूप से ServBay के bin डायरेक्टरी को अपने सिस्टम PATH में जोड़ सकते हैं।टर्मिनल में, इस कमांड से अपने लक्ष्य डेटाबेस (जैसे कि
servbay_geo_db
, डिफ़ॉल्टservbay
यूजर के साथ) से कनेक्ट करें:bashpsql -U servbay -d servbay_geo_db
1यदि आपका डेटाबेस नाम, यूज़र या पासवर्ड अलग है, तो कमांड में उस अनुसार परिवर्तन करें।
PostGIS एक्सटेंशन की जाँच एवं सक्रियता (यदि अभी तक ενεργित नहीं):
pgRouting
के लिए पहलेPostGIS
जरूरी है।psql
में यह कमांड दें:sqlCREATE EXTENSION IF NOT EXISTS postgis;
1यह कमांड PostGIS एक्सटेंशन क्रिएट करेगी या अगर पहले से सक्रिय है तो छोड़ देगी।
pgRouting एक्सटेंशन बनाएं:
इसी डेटाबेस कनेक्शन में नीचे दी गई SQL कमांड चलाएं:
sqlCREATE EXTENSION pgrouting;
1सफल होने पर, आपको
CREATE EXTENSION
जैसा आउटपुट दिखाई देगा।इंस्टॉलेशन की पुष्टि करें:
स्थापित एक्सटेंशन्स देखने के लिए कमांड चलाएँ:
sql\dx
1आउटपुट लिस्ट में
postgis
औरpgrouting
दोनों होने चाहिए।
pgRouting के लिए कॉन्फ़िगरेशन: रोड नेटवर्क डेटा और टोपोलॉजी क्रिएट करें
pgRouting
एल्गोरिदम को ऐसे टेबल की आवश्यकता होती है जो रोड नेटवर्क की संरचना दर्शाता हो। आमतौर पर यह एक ऐसा टेबल होता है जिसमें हर लाइन सेगमेंट (रोड सेगमेंट) के लिए शुरू/अंत बिंदुओं और वेटेज (जैसे दूरी, समय) को सहेजा जाता है। तेज रूटिंग के लिए, इन लाइनों से एक "टोपोलॉजी" तैयार करनी जरूरी है, जिसमें कनेक्टिविटी (nodes/vertices) को परिभाषित किया जाता है।
रोड नेटवर्क डेटा टेबल बनाएं
यहाँ एक बेसिक उदाहरण है कि किस तरह ways
नाम के टेबल में रोड नेटवर्क डेटा संग्रहित किया जा सकता है:
sql
-- रोड नेटवर्क डेटा सहेजने के लिए एक टेबल बनाएं
CREATE TABLE ways (
id SERIAL PRIMARY KEY, -- रोड सेगमेंट का यूनीक आइडी
source INTEGER, -- स्टार्ट नोड (Node) का ID
target INTEGER, -- एंड नोड (Node) का ID
cost DOUBLE PRECISION, -- इस सेगमेंट को फॉरवर्ड दिशा में पार करने की लागत (जैसे: दूरी, समय)
reverse_cost DOUBLE PRECISION, -- रिवर्स दिशा की लागत
geom GEOMETRY(LineString, 4326) -- रोड सेगमेंट की जिओमेट्री, LineString टाइप व SRID 4326 (WGS 84 हेतु)
);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
व्याख्या:
SERIAL PRIMARY KEY
: हर सेगमेंट का यूनिक ID ऑटो जेनरेट होगा।source
,target
: क्रमशः स्टार्ट और एंड नोड के ID (जो कि टोपोलॉजी क्रिएट करते समय जुड़े/निर्धारित होते हैं)।cost
,reverse_cost
: सेगमेंट पर यात्रा की लागत। वन-वे सड़क के लिएreverse_cost
कोNULL
या बड़ी वैल्यू रखें।geom
:PostGIS
की GEOMETRY टाइप में रोड की लाइन और उसके जियो कोर्डिनेट्स रखें।
उदाहरण डेटा डालना
ways
टेबल में कुछ डेमो सेगमेंट डाल सकते हैं:
sql
-- उदाहरण रोड सेगमेंट डेटा डालें
INSERT INTO ways (source, target, cost, reverse_cost, geom) VALUES
(1, 2, 1.0, 1.0, ST_SetSRID(ST_MakeLine(ST_MakePoint(116.4074, 39.9042), ST_MakePoint(116.4084, 39.9052)), 4326)),
(2, 3, 1.0, 1.0, ST_SetSRID(ST_MakeLine(ST_MakePoint(116.4084, 39.9052), ST_MakePoint(116.4094, 39.9062)), 4326)),
(3, 4, 1.0, 1.0, ST_SetSRID(ST_MakeLine(ST_MakePoint(116.4094, 39.9062), ST_MakePoint(116.4104, 39.9072)), 4326));
1
2
3
4
5
2
3
4
5
व्याख्या:
ST_MakePoint(x, y)
: दिए गए लैटिट्यूड-लॉन्गिट्यूड के साथ प्वाइंट बनाना।ST_MakeLine(point1, point2)
: दो प्वाइंट्स के आधार पर लाइन ऑब्जेक्ट बनाना।ST_SetSRID(geometry, srid)
: जियोमैट्री के लिए SRID सेट करना।- ऊपर दिए डेटा में तीन कनेक्टेड रोड सेगमेंट हैं, हर एक का लागत 1.0 है। लोकेशन उदाहरण बीजिंग (Beijing) से है।
टोपोलॉजी बनाएं
डेटा तैयार होने के बाद pgr_createTopology
फंक्शन का उपयोग करें। यह सेगमेंट्स की जियोमैट्री जांचता है, जॉइंट्स (nodes) पहचानता है, और टेबल में source
एवं target
भरता है, साथ ही एक न्यू नोड टेबल (आमतौर पर [your_table_name]_vertices_pgr
) बनती है।
sql
-- रोड डेटा के लिए टोपोलॉजी बनाएं
-- पैरामीटर:
-- 'ways': टेबल का नाम
-- 0.00001: टॉलरेंस (कितनी दूरी तक दो पॉइंट्स एक ही नोड हैं)
-- 'geom': जियो डेटा वाला कॉलम
-- 'id': सेगमेंट ID वाला कॉलम
SELECT pgr_createTopology('ways', 0.00001, 'geom', 'id');
1
2
3
4
5
6
7
2
3
4
5
6
7
व्याख्या:
pgr_createTopology
: pgRouting का मूल फंक्शन, नेटवर्क के node-edge मॉडल बनाता है।- टॉलरेंस (tolerance) बहुत महत्वपूर्ण है, यही तय करता है कि नोड्स कितनी दूरी के भीतर एक ही माने जाएंगें। आपके डेटा की सटीकता के आधार पर, उपयुक्त टॉलरेंस चुनें।
इस फंक्शन के बाद, ways
टेबल के source
व target
भर जाएंगे और ways_vertices_pgr
नामक टेबल बन जाएगी जिसमें सभी नोड्स और उनके कोर्डिनेट्स होते हैं।
pgRouting से रूटिंग विश्लेषण
टोपोलॉजी बनने के बाद, आप pgRouting
के विभिन्न एल्गोरिदम फंक्शन्स से रूटिंग एनालिसिस कर सकते हैं। यहां कुछ सामान्य उदाहरण दिए गए हैं।
शॉर्टेस्ट पाथ विश्लेषण (Dijkstra)
दो नोड्स के बीच सबसे कम लागत का रास्ता ढूंढना बेहद आम आवश्यकता है। pgRouting
में Dijkstra एल्गोरिदम मौजूद है।
sql
-- नोड 1 से नोड 4 तक का सबसे छोटा रास्ता पाएं
-- पैरामीटर:
-- 'SELECT id, source, target, cost FROM ways': नेटवर्क के लिए डेटा क्वेरी
-- 1: शुरुआत नोड
-- 4: लक्ष्य नोड
-- directed := true: यदि वन-वे और टू-वे दोनों की लागतें देखनी हों
SELECT seq, id1 AS node, id2 AS edge, cost, geom
FROM pgr_dijkstra(
'SELECT id, source, target, cost FROM ways',
1, -- स्टार्ट नोड ID
4, -- एंड नोड ID
directed := true -- यदि रिवर्स लागत देखनी है, false करें या छोड़ दें
)
JOIN ways ON edge = ways.id; -- जियोग्राफिकल डेटा प्राप्त करने हेतु
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
व्याख्या:
pgr_dijkstra
: यह Dijkstra शॉर्टेस्ट पाथ एल्गोरिदम चलाता है।- पहला पैरामीटर SQL क्वेरी है, जिसमें आवश्यक रूप से id, source, target, cost होने चाहिए।
- स्टार्ट और एंड नोड्स के IDs सेकेंड और थर्ड पैरामीटर हैं।
- आखिरी में JOIN से रूटिंग स्टेप्स की लाइन जियोमेट्री मिलती है, जो विज़ुअलाइजेशन में काम आती है।
ट्रैवेलिंग सेल्समैन प्रॉब्लम (TSP)
TSP एल्गोरिदम निर्दिष्ट नोड्स का सबसे छोटा रूट ढूंढता है जिससे सभी पॉइंट्स विजिट हो जाएं।
sql
-- नोड्स 1, 2, 3, 4 को विजिट करते TSP सॉल्व करें, शुरुआत नोड 1 से
-- पैरामीटर:
-- 'SELECT id, x::float8 AS x, y::float8 AS y FROM ways_vertices_pgr': उस क्वेरी से जिन नोड्स को विजिट करना हो वे दर्शाएँ
-- start_id := 1: स्टार्ट नोड ID बताएं
SELECT seq, node, edge, cost
FROM pgr_tsp(
'SELECT id, ST_X(the_geom)::float8 AS x, ST_Y(the_geom)::float8 AS y FROM ways_vertices_pgr WHERE id IN (1, 2, 3, 4)', -- नोड्स की सूची जिनको विजिट करना है
start_id := 1 -- शुरुआती नोड
);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
व्याख्या:
pgr_tsp
: ट्रैवेलिंग सेल्समैन समस्या हल करता है।- SQL क्वेरी में id, x, y (नोड्स के coordinates) होने चाहिए।
- start_id से शुरुआती पॉइंट चुनकर सबसे छोटा रूट देता है।
सर्विस एरिया विश्लेषण (Driving Distance/Time)
यह निर्धारित करता है कि एक या अधिक स्टार्ट पॉइंट्स से, अधिकतम लागत (जैसे दूरी या समय) सीमा के भीतर कौन-कौन से सेगमेंट पहुंच में हैं।
sql
-- नोड 1 से, लागत 2 के भीतर की सभी पहुंच योग्य सड़कें ढूंढें
-- पैरामीटर:
-- 'SELECT id, source, target, cost FROM ways': नेटवर्क के लिए शीर्ष क्वेरी
-- 1: स्टार्ट नोड ID
-- 2: अधिकतम लागत
-- directed := true: वन-वे का ध्यान रखना है या नहीं
SELECT seq, id1 AS node, id2 AS edge, cost, geom
FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM ways',
1, -- स्टार्ट नोड
2, -- अधिकतम लागत
directed := true
)
JOIN ways ON edge = ways.id; -- जियो डेटा पाने के लिए
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
व्याख्या:
pgr_drivingDistance
: सर्विस एरिया एनालिसिस करता है।- पहला पैरामीटर नेटवर्क क्वेरी वाला ही है।
- सेकंड पैरामीटर में स्टार्ट नोड, थर्ड में लागत सीमा।
- JOIN के जरिए जियोग्राफी डेटा परिणाम में जोड़ सकते हैं।
रूटिंग परिणामों का विज़ुअलाइजेशन
pgRouting
के एनालिसिस रिजल्ट को विजुअलाइज करना उन्हें समझने और दिखाने के लिए बेहद महत्वपूर्ण है। इसके लिए आप डेस्कटॉप जीआईएस टूल या वेब एप्लिकेशन लाइब्रेरी का उपयोग कर सकते हैं।
डेस्कटॉप GIS टूल (जैसे QGIS) का उपयोग
QGIS एक फ्री, ओपन सोर्स डेस्कटॉप GIS एप्लिकेशन है, जो PostgreSQL/PostGIS डेटाबेस से डायरेक्ट कनेक्ट कर सकता है और स्पेशियल डेटा लोड व डिस्प्ले कर सकता है, जिनमें pgRouting
के परिणाम भी शामिल हैं।
- QGIS खोलें।
- लेयर (Layer) > डेटा सोर्स मैनेजर (Data Source Manager) चुनें।
- बाएं विकल्प में PostGIS चुनें।
- New बटन क्लिक कर नया डेटाबेस कनेक्शन बनाएं।
- अपनी ServBay PostgreSQL कनेक्शन जानकारी भरें (जैसे Host:
localhost
, Port:5432
, Database:servbay_geo_db
, User:servbay
, Password: अपना पासवर्ड)। "Test Connection" से कनेक्शन जांचें। - सफल कनेक्शन के बाद, डेटाबेस में उपलब्ध टेबल (जैसे
ways
,ways_vertices_pgr
) दिखेंगे। - इच्छित टेबल या क्वेरी व्यू चुनें और Add पर क्लिक कर QGIS में विज़ुअलाइज करें।
वेब एप्लिकेशन में विज़ुअलाइजेशन (Leaflet या OpenLayers)
वेब एप्लिकेशन के लिए आपको एक बैकएंड सर्विस चाहिए (जैसे PHP, Node.js, Python, जो ServBay में चल सकती है), जो pgRouting
क्वेरी चलाए और उसका रिज़ल्ट (आमतौर पर GeoJSON) फ्रंटएंड तक पहुंचाए। फ्रंटएंड में, लाइब्रेरी जैसे Leaflet या OpenLayers से इस डेटा को मैप पर दिखाया जाता है।
यहाँ एक बेसिक HTML स्ट्रक्चर है, जो Leaflet में एक स्टैटिक पॉलीलाइन ऐड करता है। डायनेमिक रूटिंग रिज़ल्ट्स दिखाने के लिए आपको:
- बैकएंड में
pgRouting
क्वेरी चलानी होगी, - परिणाम को GeoJSON में बदलकर,
- API के जरिये फ्रंटएंड तक लाना होगा,
- Leaflet के
L.geoJSON
या मिलते-जुलते तरीके से मैप पर प्लॉट करना होगा।
html
<!DOCTYPE html>
<html>
<head>
<title>ServBay pgRouting वेब विज़ुअलाइजेशन उदाहरण</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<style>
#map { height: 600px; width: 100%; } /* मैप कंटेनर का आकार */
</style>
</head>
<body>
<h1>ServBay pgRouting परिणाम विज़ुअलाइजेशन</h1>
<div id="map"></div>
<script>
// मैप इनिशियलाइज करें, केंद्र और ज़ूम लेवल सेट करें
var map = L.map('map').setView([39.906, 116.409], 14); // डेमो डेटा का केंद्र
// ओपनस्ट्रीटमैप बेस मैप जोड़ें
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
// उदाहरण के लिए: pgRouting क्वेरी से प्राप्त GeoJSON डेटा ऐड करें
// वास्तविक उपयोग में geojsonData को AJAX से बैकएंड से लाएँ
var geojsonData = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"id": 1,
"cost": 1.0
},
"geometry": {
"type": "LineString",
"coordinates": [
[116.4074, 39.9042],
[116.4084, 39.9052]
]
}
},
{
"type": "Feature",
"properties": {
"id": 2,
"cost": 1.0
},
"geometry": {
"type": "LineString",
"coordinates": [
[116.4084, 39.9052],
[116.4094, 39.9062]
]
}
},
{
"type": "Feature",
"properties": {
"id": 3,
"cost": 1.0
},
"geometry": {
"type": "LineString",
"coordinates": [
[116.4094, 39.9062],
[116.4104, 39.9072]
]
}
}
]
};
// L.geoJSON से GeoJSON डेटा को मैप पर दिखाएं
L.geoJSON(geojsonData, {
style: function (feature) {
return {color: "#ff0000", weight: 4}; // रूट को लाल रंग में दिखाएँ
}
}).addTo(map);
// सभी फीचर्स को व्यू में फिट करें
if (L.geoJSON(geojsonData).getBounds().isValid()) {
map.fitBounds(L.geoJSON(geojsonData).getBounds());
}
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
ऊपर दिया गया HTML फाइल यदि आप ServBay की वेबसाइट रूट डायरेक्टरी (जैसे /Applications/ServBay/www/pgrouting-demo/index.html
) में सेव करें और ServBay के जरिए खोलें (http://pgrouting-demo.servbay.demo
), तो आपको उदाहरण रोडवेज वाला मैप दिखेगा। ध्यान दें—यह एक स्थायी डेमो है, असली रिज़ल्ट के लिए आपको बैकएंड–फ्रंटएंड इंटीग्रेशन करना होगा।
ध्यान देने वाली बातें
- डेटा क्वालिटी: pgRouting के रिज़ल्ट बहुत हद तक इनपुट नेटवर्क डेटा की क्वालिटी पर निर्भर होते हैं। जरूरी है कि डेटा सही, पूरा और टोपोलॉजिकली परफेक्ट हो।
- परफॉर्मेंस: बड़ा रोड नेटवर्क होने पर, रूटिंग केलकुलेशन काफी समय ले सकते हैं। इंडेक्सिंग, नेटवर्क सिंप्लिफिकेशन या तेज एल्गोरिदम का उपयोग करें।
- मेमोरी: बड़े नेटवर्क की टोपोलॉजी ज्यादा RAM उपयोग कर सकती है, अतः डेटाबेस सर्वर की संसाधन क्षमता ध्यान रखें।
सामान्य प्रश्न (FAQ)
प्रश्न: CREATE EXTENSION pgrouting;
पर "extension does not exist" एरर मिले तो क्या करें?
उत्तर: पहले देखें कि ServBay में आपका PostgreSQL पैकेज इंस्टॉल और चालू है या नहीं। यह भी देखें कि डेटाबेस वर्शन pgRouting
को सपोर्ट करता है और ServBay द्वारा दिया गया PostgreSQL वर्शन में एक्सटेंशन मौजूद है (ज्यादातर स्थितियों में मौजूद रहता है)। फिर भी दिक्कत हो तो, log फाइलें जांचें—शायद insufficient permissions या अन्य क्रिटिकल एरर है। सुनिश्चित करें कि आप पर्याप्त परमिशन वाले यूजर (servbay
) से कनेक्ट हैं।
प्रश्न: pgr_createTopology
में tolerance वैल्यू कैसे चुनें?
उत्तर: टॉलरेंस आपके जियोस्पेशियल डेटा की सटीकता पर निर्भर है। यह दो वर्टेक्स के बीच अधिकतम दूरी तय करता है जिस पर वे एक ही नोड माने जाएं। हाई प्रिसिजन GPS डेटा के लिए छोटी वैल्यू (जैसे 0.000001) लें। यदि डेटा लो प्रिसिजन या मल्टी-सोर्स है, टॉलरेंस ज़्यादा रखें। बहुत बड़ा टॉलरेंस असंबंधित रोड्स को जोड़ सकता है—इसलिए सावधानी जिनिए।
प्रश्न: वन-वे रोड या नो यू–टर्न रूल्स कैसे हैंडल करें?
उत्तर: ways
टेबल में cost
और reverse_cost
कॉलम से आप यह कंडीशन सेट कर सकते हैं। वन-वे सड़क के लिए reverse_cost
को NULL
या बहुत बड़ी वैल्यू दें (मतलब नहीं निकल सकता)। नो–यू–टर्न के लिए मोडेल जटिलता या रूट पोस्ट–प्रोसेसिंग की आवश्यकता होती है; pgRouting में कुछ एडवांस्ड फीचर्स इन्हें सपोर्ट करते हैं।
निष्कर्ष
ServBay के जरिए लोकल एन्वायर्नमेंट पर pgRouting
सपोर्टेड PostgreSQL डेटाबेस सेटअप करना बेहद आसान है—बस कुछ SQL कमांड से एक्सटेंशन एनेबल करें, रोड नेटवर्क डेटा तैयार कर टोपोलॉजी बनाएं, फिर शक्तिशाली जियोस्पेशियल रुटिंग एल्गोरिदम पर काम करें। डेस्कटॉप GIS या वेब मैपिंग टूल्स की मदद से, आप एनालिसिस रिज़ल्ट्स को आसानी से विज़ुअलाइज कर सकते हैं—आपके वेब ऐप या स्पेशियल प्रोजेक्ट्स को जबरदस्त डेटा सपोर्ट मिलता है। ServBay आपके सेटअप की जटिलता कम कर देता है, जिससे डेवेलपर सीधे एप्लिकेशन लॉजिक और फीचर इम्प्लीमेंटेशन पर ज्यादा ध्यान दे सकते हैं।