বিন্দু স্তর এবং লাইন স্তর মধ্যে নিকটতম প্রতিবেশী? [বন্ধ]


37

আমি এই প্রশ্নটি বেশিরভাগ বার স্ট্যাকওভারফ্লো এবং # কিগিস এবং # পোস্টগিসের মধ্যে irc নিয়ে জিজ্ঞাসা করেছি এবং আমি এটিকে কোড দেওয়ার বা পোস্টগিসে এটির কোনও বাস্তব উত্তর না দিয়ে আমার নিজের প্রয়োগ করার চেষ্টা করেছি।

প্রোগ্রামিং ব্যবহার করে (সর্বাধিক অজগর), আমি একটি বিন্দু স্তর থেকে একটি লাইন আঁকতে চাই, এটি একটি লাইন বা বহুভুজ স্তরটির নিকটতম লাইনে তার প্রক্ষেপণে।

এখন পর্যন্ত আমার বেশিরভাগ ডেটা ইএসআরআই এর আকার এবং পোস্টগ্রিস ফর্ম্যাটে রয়েছে; তবে আমি বরং পোস্টগ্রিজ সমাধান থেকে দূরে থাকি কারণ আমি মূলত একজন shp + qgis ব্যবহারকারী।

পাইথন বা অনুরূপ লাইব্রেরি সহ জিডিএল / ওজিআর বাস্তবায়ন করার একটি আদর্শ সমাধান হ'ল

  • জিডিএল / ওজিআর লাইব্রেরি ব্যবহার করে আমার কোথায় শুরু করা উচিত? একটি সমাধান পরিকল্পনা দেওয়া সম্ভব হবে?
  • আমি নিকটস্থ প্রতিবেশী বিশ্লেষণ করতে নেটওয়ার্কএক্স ব্যবহার করতে পারি?
  • এটি কি আসলেই সম্ভব?

যদি এটি আরও সহজ হয় তবে পয়েন্টগুলি অনুমান বিন্দুর পরিবর্তে বিভাগের শেষ বিন্দুতে সংযোগ করতে পারে


লাইনটি কি লাইন সেগমেন্টে অরথগোনাল হওয়ার মধ্যে সীমাবদ্ধ থাকতে পারে?
ওল্ফড্রেড

@ ওল্ফ ওড্রেড - সামগ্রিকভাবে, এটি কোনও ব্যাপার নয়।
dassouki

উত্তর:


33

এই প্রশ্নটি সঠিক হওয়ার চেয়ে আমি কিছুটা জটিল হয়ে উঠলাম। স্বল্পতম দূরত্বের নিজেই অনেকগুলি বাস্তবায়ন রয়েছে যেমন শেপলি সরবরাহিত দূরত্ব (জিইওএস থেকে)। সমাধানগুলির কয়েকটি সংক্ষেপে পয়েন্টটি নিজেই সরবরাহ করে তবে কেবল দূরত্ব।

আমার প্রথম প্রয়াসটি পয়েন্ট এবং বহুভুজের মধ্যবর্তী দূরত্ব দ্বারা পয়েন্টটি বাফার করেছিল এবং ছেদগুলি খুঁজছিল, কিন্তু গোলাকৃতির ত্রুটিগুলি এটিকে একটি সঠিক উত্তর দিতে বাধা দেয়।

এই সমীকরণগুলির উপর ভিত্তি করে শেপলি ব্যবহার করে এখানে একটি সম্পূর্ণ সমাধান রয়েছে :

#!/usr/bin/env python
from shapely.geometry import Point, Polygon
from math import sqrt
from sys import maxint

# define our polygon of interest, and the point we'd like to test
# for the nearest location
polygon = Polygon(((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)))
point = Point(0.5, 1.5)

# pairs iterator:
# http://stackoverflow.com/questions/1257413/1257446#1257446
def pairs(lst):
    i = iter(lst)
    first = prev = i.next()
    for item in i:
        yield prev, item
        prev = item
    yield item, first

# these methods rewritten from the C version of Paul Bourke's
# geometry computations:
# http://local.wasp.uwa.edu.au/~pbourke/geometry/pointline/
def magnitude(p1, p2):
    vect_x = p2.x - p1.x
    vect_y = p2.y - p1.y
    return sqrt(vect_x**2 + vect_y**2)

def intersect_point_to_line(point, line_start, line_end):
    line_magnitude =  magnitude(line_end, line_start)
    u = ((point.x - line_start.x) * (line_end.x - line_start.x) +
         (point.y - line_start.y) * (line_end.y - line_start.y)) \
         / (line_magnitude ** 2)

    # closest point does not fall within the line segment, 
    # take the shorter distance to an endpoint
    if u < 0.00001 or u > 1:
        ix = magnitude(point, line_start)
        iy = magnitude(point, line_end)
        if ix > iy:
            return line_end
        else:
            return line_start
    else:
        ix = line_start.x + u * (line_end.x - line_start.x)
        iy = line_start.y + u * (line_end.y - line_start.y)
        return Point([ix, iy])

nearest_point = None
min_dist = maxint

for seg_start, seg_end in pairs(list(polygon.exterior.coords)[:-1]):
    line_start = Point(seg_start)
    line_end = Point(seg_end)

    intersection_point = intersect_point_to_line(point, line_start, line_end)
    cur_dist =  magnitude(point, intersection_point)

    if cur_dist < min_dist:
        min_dist = cur_dist
        nearest_point = intersection_point

print "Closest point found at: %s, with a distance of %.2f units." % \
   (nearest_point, min_dist)

উত্তরোত্তর জন্য, দেখে মনে হচ্ছে এই আর্কভিউ এক্সটেনশনটি এই সমস্যাটি বেশ সুন্দরভাবে পরিচালনা করে, খুব খারাপ এটি একটি মৃত ভাষায় লেখা মৃত প্ল্যাটফর্মে ...


1
আমি অবাক হই যে সুস্পষ্ট গণনা এড়াতে বহুভুজ পয়েন্টের সূচকের কোনও উপায় আছে কিনা ...
এমলেট

@ এমল্ট নিশ্চিত না আপনি ঠিক কী ভাবছেন, তবে এমন কিছু পদ্ধতি রয়েছে যা জ্যামিতির উপর নির্ভর করে সহায়তা করতে পারে। পারফরম্যান্স কোনও সমস্যা হলে প্রাসঙ্গিক নিকটতম বিভাগগুলি নির্ধারণ করতে কিছু বেসিক রে-কাস্টিং করতে পারে। সেই শিরাতে, এটিকে সি বা পাইরেক্সে স্থানান্তরিত করার ফলে বিষয়গুলির উন্নতি হবে।
স্কু

এর অর্থ pairsহ'ল আলগোরিদিমিকভাবে ও (এন) বা কিছু। @ ব্যান্ড সমাধানটি সম্ভবত কেএনএন ব্যবহারের জন্য পরিবর্তন করা যেতে পারে তবে আমি
এতক্ষণ পোস্টজিআইএস

আমি আর আমার পূর্ববর্তী মন্তব্যটি আর সম্পাদনা করতে পারি না :( পোস্টজিআইএস একটি বিকল্প হলে সম্ভবত নিক্লাস অ্যাভেনের এস এস ক্লসস্টপয়েন্ট এবং এস এস শর্টেস্টলাইন সহ দ্রবণটি সবচেয়ে দ্রুত।
এমিল্ট

ঠিক আছে, আপনি পাইথনে সরাসরি কেএনএন অ্যালগরিদম ব্যবহার করতে পারেন । আমি বিশ্বাস করি না যে এসT_Shortestline কেএনএন ব্যবহার করে, এটি পোস্টগ্রিস.আরফ্রাকশনসন
পোস্টস্টিস

8

একটি পোস্টজিআইএস উত্তর (মাল্টিলিনেস্ট্রিংয়ের জন্য, যদি লাইনস্ট্রিং থাকে তবে st_geometryn ফাংশনটি সরিয়ে দিন)

select t2.gid as point_gid, t1.gid as line_gid, 
st_makeline(t2.geom,st_line_interpolate_point(st_geometryn(t1.geom,1),st_line_locate_point(st_geometryn(t1.geom,1),t2.geom))) as geom
from your_line_layer t1, your_point_layer t2, 
(
select gid as point_gid, 
(select gid 
from your_line_layer
order by st_distance(your_line_layer.geom, your_point_layer.geom)
limit 1 ) as line_gid
from your_point_layer
) as t3
where t1.gid = t3.line_gid
and t2.gid = t3.point_gid

4

এটি কিছুটা পুরানো তবে আমি আজ এই সমস্যার সমাধান খুঁজছিলাম (পয়েন্ট -> লাইন)। এই সম্পর্কিত সমস্যার জন্য আমি যে সহজ সমাধানটি পেয়েছি তা হ'ল:

>>> from shapely.geometry import Point, LineString
>>> line = LineString([(0, 0), (1, 1), (2, 2)])
>>> point = Point(0.3, 0.7)
>>> point
POINT (0.3000000000000000 0.7000000000000000)
>>> line.interpolate(line.project(point))
POINT (0.5000000000000000 0.5000000000000000)

4

যদি আমি বুঝতে পারি যে আপনি যে কার্যকারিতাটির জন্য জিজ্ঞাসা করছেন তা পোস্টজিআইএস এ নির্মিত।

একটি লাইনে প্রক্ষেপণ পয়েন্ট পেতে আপনি ST_ ক্লসস্টপয়েন্ট ব্যবহার করতে পারেন (PostGIS 1.5 তে)

: এটা কিভাবে ব্যবহার করতে তুমি এখানে পড়তে পারেন সম্পর্কে কিছু নির্দেশ http://blog.jordogskog.no/2010/02/07/how-to-use-the-new-distance-related-functions-in-postgis-part1/

উদাহরণস্বরূপ বহুভুজের বহুভুজের নিকটতম বিন্দুটি সন্ধান করাও কার্যকর।

যদি আপনি উভয় জ্যামিতির দুটি নিকটতম পয়েন্টগুলির মধ্যে রেখাটি চান তবে আপনি ST_Shortestline ব্যবহার করতে পারেন। ST_ClosestPoint হ'ল ST_Shortestline এ প্রথম পয়েন্ট

দুটি জ্যামিতির মধ্যে ST_ সংক্ষিপ্ততম দৈর্ঘ্য জ্যামিতির মধ্যবর্তী দূরত্বের সমান T_


3

আমার উত্তরকে কীভাবে নির্ভরযোগ্য সমাধান হিসাবে বিবেচনা করা উচিত নয় সে সম্পর্কিত নীচের মন্তব্যটি দেখুন ... আমি এই মূল পোস্টটি এখানে রেখে যাব যাতে অন্যরা সমস্যাটি পরীক্ষা করতে পারে।

যদি আমি প্রশ্নটি বুঝতে পারি তবে এই সাধারণ পদ্ধতিতে কাজ করা উচিত।

ইউক্লিডিয়ান স্থানের মধ্যে একটি বিন্দু (x, y বা x, y, z দ্বারা সংজ্ঞায়িত) এবং একটি পলিন (x, y বা x, y, z এর সংযুক্ত সেট দ্বারা সংজ্ঞায়িত) এর মধ্যে সংক্ষিপ্ততম পথটি সন্ধান করতে:

1) প্রদত্ত ব্যবহারকারীর সংজ্ঞায়িত বিন্দু থেকে (আমি একে pt0 বলব), পললাইন (pt1) এর নিকটতম শিখরটি সন্ধান করুন। ওজিআরিনফো একটি পললাইনটির শীর্ষকোষগুলি পোল করতে পারে এবং তারপরে স্ট্যান্ডার্ড পদ্ধতিগুলির মাধ্যমে দূরত্ব গণনা করা যায়। উদাহরণস্বরূপ, দূরত্বের ক্যালকের উপর পুনরাবৃত্তি করুন যেমন: দূরত্ব_ইন_আরডিয়ানস = 2 * গণিত * math.cos (ptx_radians) * math.pow ((math.sin ((pt0_radians-ptx_radians) / 2)), 2)))

2) সম্পর্কিত সর্বনিম্ন দূরত্বের মান (ডি 1) এবং (পিটি 1) সংরক্ষণ করুন

3) পিটি 1 থেকে দূরে কাটা দুটি বিভাগটি দেখুন (ওগ্রিনফো লাইনারেস্টিংগুলিতে, এগুলি পূর্বের এবং পরবর্তী শীর্ষগুলি হবে)। এই শীর্ষগুলি (এন 2 এবং এন 3) রেকর্ড করুন।

4) প্রতিটি বিভাগের জন্য y = mx + b সূত্র তৈরি করুন

5) এই দুটি সূত্রের প্রতিটিটির জন্য লম্বের সাথে আপনার পয়েন্ট (পিটি 0) সম্পর্কিত করুন

6) দূরত্ব এবং ছেদগুলি গণনা করুন (ডি 2 এবং ডি 3; পিটি 2, পিটি 3)

7) স্বল্পতম জন্য তিনটি দূরত্বের (ডি 1, ডি 2, ডি 3) তুলনা করুন। সম্পর্কিত নোডে আপনার পিটি0 (পিটি 1, পিটি 2, বা পিটি 3) সবচেয়ে সংক্ষিপ্ত লিঙ্ক।

এটি চেতনা উত্তরের একটি স্রোত - আশা করি, আমার সমস্যা এবং সমাধানের মানসিক চিত্রটি খাপ খায়।


এটি সাধারণভাবে কাজ করবে না। উদাহরণস্বরূপ = (1,1), লাইন = ((0,2), (0,3), (3,0), (2,0%)। যদি আপনি এটি স্কেচ করেন তবে আপনি দেখতে পাচ্ছেন যে লাইনের "নিকটতম" শীর্ষস্থানগুলি বিন্দুটির নিকটবর্তী অংশটি সংলগ্ন নয় ... আমি মনে করি এটি পরিচালনা করার একমাত্র উপায় হ'ল প্রতিটি বিভাগকে চেক করা (সম্ভবত এড়াতে সীমানা বাক্স ব্যবহার করে) এটি কিছুটা অনুকূল করে নিন)। আছে HTH।
টম

3

উপরে প্রদত্ত ইঙ্গিতগুলি এবং সমাধানগুলি থেকে তৈরি QGIS> 2.0 এর জন্য একটি অজগর স্ক্রিপ্ট এখানে রয়েছে। এটি পয়েন্ট এবং লাইনগুলির যুক্তিসঙ্গত পরিমাণের জন্য সূক্ষ্ম কাজ করে। তবে আমি প্রচুর পরিমাণে বস্তু দিয়ে চেষ্টা করে দেখিনি।

অবশ্যই এটি নিষ্ক্রিয় বা অন্য যে কোনও কম "পাইথোনিক সমাধান" অনুলিপি করে এটিকে "নিকটতম.পয়েন্ট.পি" হিসাবে সংরক্ষণ করতে হয়েছিল।

কিউজিআইএস সরঞ্জাম বাক্সে স্ক্রিপ্ট, সরঞ্জামগুলি, কোনও স্ক্রিপ্ট যুক্ত করুন, এটি চয়ন করুন।

##Vector=group
##CLosest_Point_V2=name
##Couche_de_Points=vector
##Couche_de_Lignes=vector

"""
This script intent to provide a count as for the SQL Funciton CLosestPoint
Ce script vise a recréer dans QGIS la Focntion SQL : CLosest Point
It rely on the solutions provided in "Nearest neighbor between a point layer and a line layer"
  http://gis.stackexchange.com/questions/396/nearest-pojected-point-from-a-point-                               layer-on-a-line-or-polygon-outer-ring-layer
V2 du  8 aout 2016
jean-christophe.baudin@onema.fr
"""
from qgis.core import *
from qgis.gui import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import os
import sys
import unicodedata 
from osgeo import ogr
from math import sqrt
from sys import maxint

from processing import *

def magnitude(p1, p2):
    if p1==p2: return 1
    else:
        vect_x = p2.x() - p1.x()
        vect_y = p2.y() - p1.y()
        return sqrt(vect_x**2 + vect_y**2)

def intersect_point_to_line(point, line_start, line_end):
    line_magnitude =  magnitude(line_end, line_start)
    u = ((point.x()-line_start.x())*(line_end.x()-line_start.x())+(point.y()-line_start.y())*(line_end.y()-line_start.y()))/(line_magnitude**2)
    # closest point does not fall within the line segment, 
    # take the shorter distance to an endpoint
    if u < 0.0001 or u > 1:
        ix = magnitude(point, line_start)
        iy = magnitude(point, line_end)
        if ix > iy:
            return line_end
        else:
            return line_start
    else:
        ix = line_start.x() + u * (line_end.x() - line_start.x())
        iy = line_start.y() + u * (line_end.y() - line_start.y())
        return QgsPoint(ix, iy)

layerP = processing.getObject(Couche_de_Points)
providerP = layerP.dataProvider()
fieldsP = providerP.fields()
inFeatP = QgsFeature()

layerL = processing.getObject(Couche_de_Lignes)
providerL = layerL.dataProvider()
fieldsL = providerL.fields()
inFeatL = QgsFeature()

counterP = counterL= nElement=0

for featP in layerP.selectedFeatures():
    counterP+=1
if counterP==0:
    QMessageBox.information(None,"information:","Choose at least one point from point layer_"+ str(layerP.name())) 

indexLine=QgsSpatialIndex()
for featL in layerL.selectedFeatures():
    indexLine.insertFeature(featL)
    counterL+=1
if counterL==0:
    QMessageBox.information(None,"information:","Choose at least one line from point layer_"+ str(layerL.name()))
    #QMessageBox.information(None,"DEBUGindex:",str(indexBerge))     
ClosestP=QgsVectorLayer("Point", "Projected_ Points_From_"+ str(layerP.name()), "memory")
QgsMapLayerRegistry.instance().addMapLayer(ClosestP)
prClosestP = ClosestP.dataProvider()

for f in fieldsP:
    znameField= f.name()
    Type= str(f.typeName())
    if Type == 'Integer': prClosestP.addAttributes([ QgsField( znameField, QVariant.Int)])
    if Type == 'Real': prClosestP.addAttributes([ QgsField( znameField, QVariant.Double)])
    if Type == 'String': prClosestP.addAttributes([ QgsField( znameField, QVariant.String)])
    else : prClosestP.addAttributes([ QgsField( znameField, QVariant.String)])
prClosestP.addAttributes([QgsField("DistanceP", QVariant.Double),
                                        QgsField("XDep", QVariant.Double),
                                        QgsField("YDep", QVariant.Double),
                                        QgsField("XProj", QVariant.Double),
                                        QgsField("YProj", QVariant.Double),
                                        QgsField("Xmed", QVariant.Double),
                                        QgsField("Ymed", QVariant.Double)])
featsP = processing.features(layerP)
nFeat = len(featsP)
"""
for inFeatP in featsP:
    progress.setPercentage(int(100 * nElement / nFeatL))
    nElement += 1
    # pour avoir l'attribut d'un objet/feat .... 
    attributs = inFeatP.attributes()
"""

for inFeatP in layerP.selectedFeatures():
    progress.setPercentage(int(100 * nElement / counterL))
    nElement += 1
    attributs=inFeatP.attributes()
    geomP=inFeatP.geometry()
    nearest_point = None
    minVal=0.0
    counterSelec=1
    first= True
    nearestsfids=indexLine.nearestNeighbor(geomP.asPoint(),counterSelec)
    #http://blog.vitu.ch/10212013-1331/advanced-feature-requests-qgis
    #layer.getFeatures( QgsFeatureRequest().setFilterFid( fid ) )
    request = QgsFeatureRequest().setFilterFids( nearestsfids )
    #list = [ feat for feat in CoucheL.getFeatures( request ) ]
    # QMessageBox.information(None,"DEBUGnearestIndex:",str(list))
    NBNodes=0
    Dist=DistT=minValT=Distance=0.0
    for featL in  layerL.getFeatures(request):
        geomL=featL.geometry()
        firstM=True
        geomL2=geomL.asPolyline()
        NBNodes=len(geomL2)
        for i in range(1,NBNodes):
            lineStart,lineEnd=geomL2[i-1],geomL2[i]
            ProjPoint=intersect_point_to_line(geomP.asPoint(),QgsPoint(lineStart),QgsPoint(lineEnd))
            Distance=magnitude(geomP.asPoint(),ProjPoint)
            toto=''
            toto=toto+ 'lineStart :'+ str(lineStart)+ '  lineEnd : '+ str(lineEnd)+ '\n'+ '\n'
            toto=toto+ 'ProjPoint '+ str(ProjPoint)+ '\n'+ '\n'
            toto=toto+ 'Distance '+ str(Distance)
            #QMessageBox.information(None,"DEBUG", toto)
            if firstM:
                minValT,nearest_pointT,firstM = Distance,ProjPoint,False
            else:
                if Distance < minValT:
                    minValT=Distance
                    nearest_pointT=ProjPoint
            #at the end of the loop save the nearest point for a line object
            #min_dist=magnitude(ObjetPoint,PProjMin)
            #QMessageBox.information(None,"DEBUG", " Dist min: "+ str(minValT))
        if first:
            minVal,nearest_point,first = minValT,nearest_pointT,False
        else:
            if minValT < minVal:
                minVal=minValT
                nearest_point=nearest_pointT
                #at loop end give the nearest Projected points on Line nearest Line
    PProjMin=nearest_point
    Geom= QgsGeometry().fromPoint(PProjMin)
    min_dist=minVal
    PX=geomP.asPoint().x()
    PY=geomP.asPoint().y()
    Xmed=(PX+PProjMin.x())/2
    Ymed=(PY+PProjMin.y())/2
    newfeat = QgsFeature()
    newfeat.setGeometry(Geom)
    Values=[]
    #Values.extend(attributs)
    fields=layerP.pendingFields()
    Values=[attributs[i] for i in range(len(fields))]
    Values.append(min_dist)
    Values.append(PX)
    Values.append(PY)
    Values.append(PProjMin.x())
    Values.append(PProjMin.y())
    Values.append(Xmed)
    Values.append(Ymed)
    newfeat.setAttributes(Values)
    ClosestP.startEditing()  
    prClosestP.addFeatures([ newfeat ])
    #prClosestP.updateExtents()
ClosestP.commitChanges()
iface.mapCanvas().refresh()

!!! সতর্কতা !!! মনোযোগ দিন যে এই "লাইন কমান্ডের কারণে কিছু" অদ্ভুত "/ ভুল প্রজেক্ট পয়েন্ট উত্পন্ন হতে পারে:

nearestsfids=indexLine.nearestNeighbor(geomP.asPoint(),counterSelec)

এর counterSelecমানটি নির্ধারণ করে যে নিকটতম কত নিকটবর্তী ফিরে আসে। প্রকৃতপক্ষে প্রতিটি পয়েন্ট প্রতিটি লাইন অবজেক্টের সবচেয়ে কমতম দূরত্বে প্রক্ষেপণ করা উচিত; এবং প্রাপ্ত সর্বনিম্ন দূরত্বটি আমাদের সন্ধানের নিকটতম প্রতিবেশী হিসাবে সঠিক লাইন এবং প্রজেক্ট পয়েন্ট দেবে। লুপিং সময়টি হ্রাস করার জন্য, নিকটতম নিকটস্থ কমান্ডটি ব্যবহৃত হয়। নির্বাচন একটি counterSelecমান 1 থেকে কমাতে "প্রথম" বস্তু পূরণ (এটা বক্স সীমান্ত এর আরো ঠিক) আসতে হবে এবং এটি সঠিক নাও হতে পারে। স্বল্পতম দূরত্ব নির্ধারণের জন্য বিভিন্ন লাইন আকারের অবজেক্টগুলি 3 বা 5 বা তার থেকেও নিকটতম অবজেক্টগুলি চয়ন করতে বাধ্য হতে পারে। মান যত বেশি হবে তত বেশি সময় লাগে। শত পয়েন্ট এবং লাইনগুলির সাথে এটি 3 বা 5 নিকটতম প্রতিবেশীর সাথে খুব ধীর হতে শুরু করে, সহস্রের সাথে এটি এই জাতীয় মানগুলি দিয়ে বাগ করতে পারে।


3

আপনার আগ্রহ এবং ব্যবহারের ক্ষেত্রে নির্ভর করে "মানচিত্রের ম্যাচিং আলগোরিদিমগুলি" অনুসন্ধান করা কার্যকর হতে পারে। উদাহরণস্বরূপ, ওএসএম উইকিতে একটি রোডম্যাচার প্রকল্প রয়েছে: http://wiki.openstreetmap.org/wiki/Roadmatcher


এটি ভ্রমণের চাহিদা এবং পূর্বাভাসের জন্য। সাধারণত আমরা অঞ্চলগুলিকে ট্র্যাফিক বিশ্লেষণ অঞ্চলগুলিতে (বহুভুজ) বিভক্ত করি এবং আমরা বহুভিত্তির সেন্ট্রয়েডকে সেই অঞ্চলের সমস্ত ট্র্যাফিকের "ডামি" প্রবর্তক হিসাবে স্থাপন করি। তারপরে আমরা x বা y "ডামি রোড লিঙ্ক" লাইনগুলি সেই বিন্দু থেকে নিকটতম রাস্তাগুলির দিকে
আঁকি

আহ, সুতরাং আপনার লক্ষ্য এই "ডামি রোড লিঙ্ক" তৈরিটি স্বয়ংক্রিয় করা?
underdark

প্রকৃতপক্ষে :) বা ডামি লিঙ্ক (গুলি)
দাসৌকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.