পাইকিজিআইএস-এর সাথে সমান আকারের বহুভুজ তৈরি করছেন?


42

আমি পরের ধাপে অ্যাটলাসক্রিটরের জন্য তাদের ব্যবহার করার জন্য একটি লাইনের সাথে বহুভুজ তৈরি করতে চাই।

আর্কম্যাপের একটি স্ট্রিপ ম্যাপ সূচক বৈশিষ্ট্য নামে একটি সরঞ্জাম রয়েছে ।

এই সরঞ্জামটির সাহায্যে আমি আমার বহুভুজগুলির উচ্চতা এবং প্রস্থ চয়ন করতে পারি (8km x 4km বলুন) এবং স্বয়ংক্রিয়ভাবে লাইনের সাথে এগুলি উত্পাদন / ঘোরান।

প্রতিটি বহুভুজের উত্পন্ন বৈশিষ্ট্যগুলির মধ্যে একটি হ'ল ঘূর্ণন কোণ যা পরে আমার উত্তর তীরগুলি আটলাস জেনারেটরে পরে ঘোরানো দরকার।

এখানে চিত্র বর্ণনা লিখুন

কিউজিআইএস / পাইকিজিআইএস দিয়ে এই কাজটি কীভাবে সমাধান করবেন সে সম্পর্কে কারও কি ধারণা আছে? গ্রাস- বা সাগা-অ্যালগরিদম বা কাস্টম প্লাগইনের অভ্যন্তরে ব্যবহার করা যেতে পারে এমন একটি অনুশীলন-সরঞ্জাম বাক্স-মডেল খুব ভাল হবে;) সম্পাদনা 1: আমি কেবল একটি মুদ্রণ এক্সটেন্টসই নয়, বহুভুজ নিজেই প্রয়োজন কারণ আমি একটি মানচিত্র মুদ্রণ করতে চাই সমস্ত বহুভুজ / এক্সটেন্টগুলি কোনও ধরণের ওভারভিউ মানচিত্র হিসাবে as

সম্পাদনা 2: আমি এখনও একটি পাইকিজিআইএস- সলিউশন খুঁজছি হিসাবে কিউজিআইএস- সলিউশন খুঁজছি যা কিউজিআইএস থেকে আলাদা করে কোনও সফ্টওয়্যার ইনস্টল করার প্রয়োজন ছাড়াই ব্যবহার করা যেতে পারে ( পোস্টজিআইএস / ওরাকলের মতো আরডিবিএমএস নয়)


4
এটি প্লাগইনটির জন্য একটি মজাদার ধারণার মতো দেখাচ্ছে।
বর্ণমালা

1
বন্য চিন্তাধারা হিসাবে, আমি মনে করি পিউকার-ডগলাস সাধারণীকরণের ভিত্তিতে কিছু কাজ করতে পারে
plablo09

1
সম্ভবত v.split.length, তারপরে বিভাগগুলির শুরু এবং শেষ পয়েন্টের মধ্যে একটি সরল রেখা আঁকুন এবং তারপরে v.buffer "পলাইনগুলির শেষদিকে ক্যাপ তৈরি করবেন না"
টমাস বি

1
(আমি এই প্রশ্নে একটি খয়রাত শুরু করতে চাই কিন্তু আমি এখনও যথেষ্ট সুনাম হবে না
Berlinmapper

2
"লেবেল-অনুসরণ লাইন" বাস্তবায়নগুলিতে কিছু পুনরায় ব্যবহারযোগ্য কোড থাকতে পারে। আপনার আয়তক্ষেত্রগুলি কিছু মনসোপসিত ফন্টের গ্লাইফের পায়ের ছাপগুলির মতো।
ব্যবহারকারী 30184

উত্তর:


29

মজার প্রশ্ন! এটি এমন কিছু যা আমি নিজের চেষ্টা করতে চেয়েছিলাম, তাই এটিকে চালিয়ে যান।

আপনি বহুগুণের একটি সেট তৈরি করে এমন একটি ফাংশন সহ পোস্টগ্রিজ / পোস্টজিআইএস এ এটি করতে পারেন।

আমার ক্ষেত্রে, আমার কাছে একটি বৈশিষ্ট্যযুক্ত একটি টেবিল রয়েছে (একটি মাল্টলাইনস্ট্রিং) যা রেললাইনটির প্রতিনিধিত্ব করে। এটি মিটারে একটি সিআরএস ব্যবহার করতে হবে, আমি ওএসজিবি (27700) ব্যবহার করছি। আমি 4km x 2km 'পৃষ্ঠা' করেছি।

এখানে, আপনি ফলাফলটি দেখতে পাচ্ছেন ... সবুজ স্টাফটি হ'ল রাস্তা নেটওয়ার্ক, রেলওয়ের চারপাশে 1 কিলোমিটার বাফারে ক্লিপড, যা বহুভুজগুলির উচ্চতার সাথে সুন্দরভাবে মিলে যায়।

postgis স্ট্রিপ মানচিত্র উত্পন্ন

এখানে ফাংশনটি ...

CREATE OR REPLACE FUNCTION getAllPages(wid float, hite float, srid integer, overlap float) RETURNS SETOF geometry AS
$BODY$
DECLARE
    page geometry; -- holds each page as it is generated
    myline geometry; -- holds the line geometry
    startpoint geometry;
    endpoint geometry;
    azimuth float; -- angle of rotation
    curs float := 0.0 ; -- how far along line left edge is
    step float;
    stepnudge float;
    currpoly geometry; -- used to make pages
    currline geometry;
    currangle float;
    numpages float;
BEGIN
    -- drop ST_LineMerge call if using LineString 
    -- replace this with your table.
    SELECT ST_LineMerge(geom) INTO myline from traced_osgb; 
    numpages := ST_Length(myline)/wid;

    step := 1.0/numpages;
    stepnudge := (1.0-overlap) * step; 
    FOR r in 1..cast (numpages as integer)
    LOOP
        -- work out current line segment

        startpoint :=  ST_SetSRID(ST_Line_Interpolate_Point(myline,curs),srid);
        endpoint :=  ST_SetSRID(ST_Line_Interpolate_Point(myline,curs+step),srid);
        currline := ST_SetSRID(ST_MakeLine(startpoint,endpoint),srid);

        -- make a polygon of appropriate size at origin of CRS
        currpoly := ST_SetSRID(ST_Extent(ST_MakeLine(ST_MakePoint(0.0,0.0),ST_MakePoint(wid,hite))),srid);

        -- then nudge downwards so the midline matches the current line segment
        currpoly := ST_Translate(currpoly,0.0,-hite/2.0);

        -- Rotate to match angle
        -- I have absolutely no idea how this bit works. 
        currangle := -ST_Azimuth(startpoint,endpoint) - (PI()/2.0) + PI();
        currpoly := ST_Rotate(currpoly, currangle);

        -- then move to start of current segment
        currpoly := ST_Translate(currpoly,ST_X(startpoint),ST_Y(startpoint));

        page := currpoly;

        RETURN NEXT page as geom; -- yield next result
        curs := curs + stepnudge;
    END LOOP;
    RETURN;
END
$BODY$
LANGUAGE 'plpgsql' ;

এই ফাংশন ব্যবহার করে

এখানে একটি উদাহরণ; 4km x 2km পৃষ্ঠাগুলি, epsg: 27700 এবং 10% ওভারল্যাপ

select st_asEwkt(getallpages) from getAllPages(4000.0, 2000.0, 27700, 0.1);

এটি চালানোর পরে আপনি পিজএডমিনিআইআইআই থেকে একটি সিএসভি ফাইলে রফতানি করতে পারবেন। আপনি এটি কিউজিআইএস এ আমদানি করতে পারেন, তবে আপনার স্তরের জন্য ম্যানুয়ালি সিআরএস সেট করার দরকার হতে পারে - কিউজিআইএস আপনার জন্য স্তর সিআরএস সেট করতে EWKT এ এসআরআইডি ব্যবহার করে না: /

বিয়ারিং বৈশিষ্ট্য যুক্ত করা হচ্ছে

পোস্টগ্রিসে এটি সম্ভবত সহজ কাজ, এটি কিউজিআইএস এক্সপ্রেশনে করা যেতে পারে তবে আপনাকে কিছু কোড লিখতে হবে। এটার মতো কিছু...

create table pages as (
    select getallpages from getAllPages(4000.0, 2000.0, 27700, 0.1)
);

alter table pages add column bearing float;

update pages set bearing=ST_Azimuth(ST_PointN(getallpages,1),ST_PointN(getallpages,2));

আদেশ সহকারে

এটি কিছুটা হ্যাক-একসাথে, এবং কেবলমাত্র একটি ডেটাसेटে পরীক্ষার সুযোগ ছিল।

100% নিশ্চিত নয় যে দুটি ভার্টিকোস আপনাকে সেই ভারবহন বৈশিষ্ট্য আপডেটে চয়ন করতে হবে query.. তার জন্য পরীক্ষার প্রয়োজন হতে পারে।

আমার নিশ্চয়ই স্বীকার করতে হবে যে বর্তমান লাইনের অংশটি মেলানোর জন্য বহুভুজকে ঘোরানোর জন্য কেন আমাকে এই জাতীয় সংশ্লেষিত সূত্রটি করা দরকার। আমি ভেবেছিলাম আমি ST_Azimuth () থেকে ST_Rotate () এ আউটপুটটি ব্যবহার করতে পারি, তবে মনে হয় না।


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

2
যদি এটি হয়, QgsGeometry ক্লাসটি একবার দেখুন । এটিতে পোস্টজিআইএসের জ্যামিতি ক্রিয়াকলাপগুলির একটি উপসেট রয়েছে এবং আপনি পাইকিউজিআইএস রুটে যেতে চাইলে একটি ভাল সূচনা পয়েন্ট হবে। অ্যালগরিদমটি পাইকিজিআইএস-তে পোর্টেবল হওয়া উচিত ..
স্টিভেন কে

3
আমি মনে করি পোস্টগিজের জন্য রেফারেন্স লাইনগুলি তৈরি করতে ST_Simplify ব্যবহার করে এবং বিভাগগুলিতে লাইনটি ভাঙ্গা এবং তারপরে ST_Buffer এবং ST_Envelope ব্যবহারটি আরও ছোট এবং আরও কার্যকর হবে।
ম্যাথিয়াস কুহন

@ মাথিয়াস কুহন: আমি যদি লাইনটি খণ্ডগুলিতে ভাঙ্গি তবে আমি সমান আকারের লাইন পেতে পারি তবে অগত্যা সমান আকারের বহুভুজও পাওয়া যায় না। উদাহরণস্বরূপ, যদি লাইনটি বেশ 'বক্রতা' হয় তবে বহুভুজ সম্ভবত ছোট হবে, তাই না?
বার্লিনম্যাপার

2
আমি আপনার সমাধান এবং আপনার স্ক্রিপ্টের পাইকিজিআইএস-সংস্করণ পরীক্ষা করেছি A কিছু ছোটখাটো সমস্যা কীভাবে সমাধান করা যায় সে সম্পর্কে কোনও ধারণা: bit.ly/1KL7JHn ?
বার্লিনম্যাপার

12

বিভিন্ন সমাধান আছে। এবং এটি সাধারণ পললাইন এবং একাধিক নির্বাচিত সত্তা নিয়ে কাজ করতে পারে

ব্লক ডায়াগ্রাম:

  1. পরামিতি

    1. প্রজন্মের জন্য ওরিয়েন্টেশন নির্বাচন করুন এবং পড়ুন সূচক (বাম থেকে ডান, উত্তর-দক্ষিণে ...)
    2. বস্তুর আকার নির্ধারণ করুন

    shape = (4000,8000) # (<width>,<length>)
    1. সুপারপজিশন কোফ সংজ্ঞায়িত করুন (ডিফল্টরূপে 10%?)
  2. এটা
    1. পললাইন অর্ডার করুন (শুরু এবং শেষের পয়েন্ট তুলনা করুন) আপনার ওরিয়েন্টেশন পছন্দের উপর নির্ভর করে অর্ডার করা> ফিচারক্লাস অর্ডারনোডস অর্ডার করে একটি শীর্ষকোষ তৈরি করুন
  3. অর্ডারনোডে লুপ

    1. অ্যাঙ্কর হিসাবে আপনাকে প্রথম পয়েন্ট তৈরি করুন

    2. প্রতিটি ভার্টেক্সের জন্য এটি ডিক্ট এক্স, ওয়াই, আইডি যুক্ত করুন এবং একটি ভেক্টর গণনা করুন

    3. সুপারপজিশন (10% / 2) হ্রাস করে বহুভুজ তৈরি করুন (দৈর্ঘ্য এবং ভেক্টর ওরিয়েন্টেশন ওভার)> একই অ্যাঙ্কার পয়েন্ট সহ 5% বাম বহুভুজ 5% ডান বহুভুজ
    4. যখন কোনও পূর্ববর্তী বিন্দু বিন্দু বহুভুজের বাইরে রয়েছে বা ভেক্টর লেনটি দৈর্ঘ্যের আকারের জন্য রয়েছে তখন বন্ধ করুন
    5. পূর্বের ভাল সমাধান সহ বহুভুজ তৈরি করুন এবং শেষ ভাল অবস্থানের সাথে অ্যাঙ্কর পয়েন্ট সেট করুন
    6. নতুন বহু লুপটি সম্পাদন করুন এবং পরের বহুভুজ অবজেক্টটি তৈরি করতে ডিক্স এক্স, ওয়াই, আইডি পুনরায় সেট করুন।

আপনি যদি এই প্রস্তাবটি সত্যই পরিষ্কার বা মন্তব্য না করে থাকেন তবে এটি পরিবর্তন করতে পারেন।


এটি পরিশীলিত শোনায় তবে আমাকে স্বীকার করতে হবে যে মডেলার বা পাইকিজিআইএস-এর জন্য এটি কীভাবে ব্যবহার করতে হয় তা আমি এখনও জানি না। যাইহোক: একটি সুপারপজিশন সহগ কী ?.
বার্লিনম্যাপার

@ বার্লিনম্পার এই ক্ষেত্রে সুপারপোশন 8000 x 10% সহ বহুভুজের একটি অংশ। আপনি অন্য কোনওটি বেছে নিতে পারেন বা বহুগুণের মধ্যে ফিক্সের দূরত্বের সাপোর্ট পজিশন তৈরি করতে পারেন। আপনি দেখতে পাচ্ছেন যে সমস্ত অ্যাটলাসে কোণে পরবর্তী টাইল
পৃষ্ঠাগুলি

আপনার সমাধানটি কি পাইকিজিআইএস বা প্রসেসিং টুলবক্সের সাহায্যে ব্যবহার করা উচিত? এটি দুর্দান্ত শোনায় তবে কীভাবে এগিয়ে যেতে হবে তা আমি এখনও জানি না
বার্লিনম্যাপার

1
@ বার্লিনম্যাপার আমার মনে হয় প্রসেস স্ক্রিপ্ট তৈরি করতে এবং প্রসেসিং সরঞ্জামবক্স বা কিউজিআইএস প্লাগইনে ইনপুট এবং আউটপুট প্যারামিটার সেট করতে আপনাকে পাইকিজিজিআইএস ব্যবহার করতে হবে। আরকিজিস্টুলবক্স হিসাবে একই। আসলে এটি করার এবং এটি পরীক্ষা করার আমার কোনও সময় নেই।
জিওস্টোনমার্টেন

12

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

#!python
# coding: utf-8

# https://gis.stackexchange.com/questions/173127/generating-equal-sized-polygons-along-line-with-pyqgis
from qgis.core import QgsMapLayerRegistry, QgsGeometry, QgsField, QgsFeature, QgsPoint
from PyQt4.QtCore import QVariant


def getAllPages(layer, width, height, srid, overlap):
    for feature in layer.selectedFeatures():
        geom = feature.geometry()
        if geom.type() <> QGis.Line:
            print "Geometry type should be a LineString"
            return 2
        pages = QgsVectorLayer("Polygon?crs=epsg:"+str(srid), 
                      layer.name()+'_id_'+str(feature.id())+'_pages', 
                      "memory")
        fid = QgsField("fid", QVariant.Int, "int")
        angle = QgsField("angle", QVariant.Double, "double")
        attributes = [fid, angle]
        pages.startEditing()
        pagesProvider = pages.dataProvider()
        pagesProvider.addAttributes(attributes)
        curs = 0
        numpages = geom.length()/(width)
        step = 1.0/numpages
        stepnudge = (1.0-overlap) * step
        pageFeatures = []
        r = 1
        currangle = 0
        while curs <= 1:
            # print 'r =' + str(r)
            # print 'curs = ' + str(curs)
            startpoint =  geom.interpolate(curs*geom.length())
            endpoint = geom.interpolate((curs+step)*geom.length())
            x_start = startpoint.asPoint().x()
            y_start = startpoint.asPoint().y()
            x_end = endpoint.asPoint().x()
            y_end = endpoint.asPoint().y()
            # print 'x_start :' + str(x_start)
            # print 'y_start :' + str(y_start)
            currline = QgsGeometry().fromWkt('LINESTRING({} {}, {} {})'.format(x_start, y_start, x_end, y_end))
            currpoly = QgsGeometry().fromWkt(
                'POLYGON((0 0, 0 {height},{width} {height}, {width} 0, 0 0))'.format(height=height, width=width))
            currpoly.translate(0,-height/2)
            azimuth = startpoint.asPoint().azimuth(endpoint.asPoint())
            currangle = (startpoint.asPoint().azimuth(endpoint.asPoint())+270)%360
            # print 'azimuth :' + str(azimuth)
            # print 'currangle : ' +  str(currangle)

            currpoly.rotate(currangle, QgsPoint(0,0))
            currpoly.translate(x_start, y_start)
            currpoly.asPolygon()
            page = currpoly
            curs = curs + stepnudge
            feat = QgsFeature()
            feat.setAttributes([r, currangle])
            feat.setGeometry(page)
            pageFeatures.append(feat)
            r = r + 1

        pagesProvider.addFeatures(pageFeatures)
        pages.commitChanges()
        QgsMapLayerRegistry.instance().addMapLayer(pages)
    return 0

layer = iface.activeLayer()
getAllPages(layer, 500, 200, 2154, 0.4)

1
গ্রেট। আমি সমাধান পরীক্ষা। এই সমস্যাগুলির সমাধানের কীভাবে কোনও সমাধানের সমাধানের এখনও আছে: bit.ly/1KL7JHn ?
বার্লিনম্পার

সম্ভবত এখানে কিছু "অনুপ্রেরণা" রয়েছে: github.com/maphew/arcmapbook/blob/master/Visual_Basic/…
টমাস বি

ধন্যবাদ.gret সংস্থানটি বোঝার জন্য কীভাবে আর্কম্যাপ সরঞ্জামটি কাজ করে un দুর্ভাগ্যবশত আমি 'ভিবি'র সাথে ব্যবহার করি না তবে সম্ভবত অন্য কেউ উত্তর / মন্তব্য পোস্ট করতে এটি ব্যবহার করতে পারে;)
বার্লিনম্যাপার

4

দুটি উত্তর (পোস্ট করার সময়) বুদ্ধিমান এবং ভালভাবে ব্যাখ্যা করা হয়েছে। তবে এর জন্য একটি খুব সহজ তবে কার্যকর সমাধানও রয়েছে (ধরে নিলে নদীর উপর ভিত্তি করে এলোমেলো উত্তর দিকের পরিবর্তে উত্তরের সাথে সারিবদ্ধ আপনার সমস্ত মানচিত্রই আপনি গ্রহণ করবেন) ধরে নেওয়া যায়)। আপনি যদি ঘোরানো চান তবে এটি সম্ভব তবে আরও কিছুটা জটিল (নীচে দেখুন)।

প্রথমে আমার পোস্টটি এখানে দেখুন । এটি আপনাকে অ্যাটলাসের জন্য মানচিত্রের কপ্রেজগুলি তৈরি করার উপায় দেয়। আপনি যে পদ্ধতিটি চান সেটি হ'ল কীভাবে করা যায় তা হল 'ওয়ার্কফ্লো 2'। আপনার লিনিয়ার বৈশিষ্ট্যটি শীর্ষে বা দৈর্ঘ্যের দ্বারা বিভক্ত করুন এবং কোনও পরিমাণে বৈশিষ্ট্যগুলি বাফার করুন। আপনি যে পরিমাণ পরিমাণ বাফার করেন সেটি আংশিকভাবে ওভারল্যাপটি নির্দেশ করবে (তবে নীচে দেখুন) তবে আরও গুরুত্বপূর্ণ বিষয় এটি একটি অঞ্চল সহ একটি বৈশিষ্ট্য তৈরি করে। আপনি লাইনগুলি বিভক্ত করতে যে কোনও সংখ্যক প্লাগইন ব্যবহার করতে পারেন তবে জিআরএসএস v.split.length এবং v.split.vert ভাল বিকল্প (প্রসেসিং টুলবক্সে উপলব্ধ)।

মানচিত্রের সুরকারে অ্যাটলাস জেনারেশন সক্ষম করে এবং আপনার বাফার স্তরটি নির্বাচন করে, আইটেম ট্যাবে ফিরে যান এবং আপনার মানচিত্রের বিষয়বস্তুটি নির্বাচন করুন। 'অ্যাটলাস দ্বারা নিয়ন্ত্রিত' চেক করুন এবং আপনার ব্যবহারের ক্ষেত্রে, আমি বৈশিষ্ট্যটির চারপাশে মার্জিন বেছে নেব। এটি মানচিত্রের মধ্যে আপনার ওভারল্যাপ নিয়ন্ত্রণ করবে (বিকল্পভাবে আপনি স্থির স্কেল পছন্দ করতে পারেন)।

আপনি সুরকারের শীর্ষ সরঞ্জামদণ্ডে পূর্বরূপ অ্যাটলাস বোতামটি ব্যবহার করে আপনার আটলাসকে পূর্বরূপ দেখতে পারেন এবং এটি কত পৃষ্ঠাগুলি উত্পাদন করবে তা দেখতে পারেন। দ্রষ্টব্য আপনি একক পিডিএফ বা পৃথক ফাইল হিসাবে সমস্ত পৃষ্ঠা রফতানি করতে চয়ন করতে পারেন।

লাইনের সাথে ঘোরার জন্য মানচিত্রটি পেতে, মানচিত্র রচয়িতা আইটেম বৈশিষ্ট্যে একটি ঘূর্ণন ক্ষেত্র রয়েছে। আপনাকে একটি অভিব্যক্তি সেট করতে হবে (রোটেশন বাক্সের ডানদিকে ছোট বোতামটি ব্যবহার করুন)। আপনার বিকল্প হিসাবে পরিবর্তনশীল নির্বাচন করুন এবং তারপরে সম্পাদনা করুন। একটি অভিব্যক্তি নির্মাতা পপআপ করবে এবং সেখানে আপনি জ্যামিতি বা অ্যাটলাস বৈশিষ্ট্যগুলির ক্ষেত্রগুলি অ্যাক্সেস করতে পারবেন। তারপরে আপনি বৈশিষ্ট্যগুলির ঘূর্ণন অনুসারে মানচিত্রটি ঘোরানোর জন্য একটি এক্সপ্রেস তৈরি করতে পারেন (আপনি প্রতিটি লাইন বিভাগের শুরু এবং শেষের পয়েন্টগুলি এবং কিছুটা ট্রিগের বিয়ার ব্যবহার করে বিয়ারিং গণনা করতে পারেন)। আপনার উত্তর তীর ঘোরানোর জন্য একই প্রক্রিয়াটি পুনরাবৃত্তি করুন (একই অভিব্যক্তি বা প্রাক-গণনাযুক্ত ভেরিয়েবল ব্যবহার করে)।


এই সমাধানের জন্য ধন্যবাদ। তবে আমি মনে করি যে আমি মুদ্রণ করতে চাই এমন একক বহিরাগতের বহুভুজগুলি পাব না। আমার তাদের সমস্ত মুদ্রণ এক্সটেন্টস সহ একটি "ওভারভিউ মানচিত্র" উত্পাদন করা দরকার need
বার্লিনম্যাপার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.