ডাব্লুএমএস / ডাব্লুএফএসের অনুরোধ করার জন্য এবং চিত্র / পিডিএফ হিসাবে সংরক্ষণের জন্য কি পাইথন লিব রয়েছে?


18

আমি ভাবছি পাইথন ওপেন সোর্স জিআইএস লিব আছে কিনা যাতে অন্য জিআইএস সার্ভারের (যেমন জিওসারবার) ডাব্লুএমএস / ডাব্লুএফএসকে সমর্থন করার জন্য এপিআই রয়েছে এবং তারপরে প্রতিক্রিয়া ডেটা (ডাব্লুএমএস বেসম্যাপ এবং ডাব্লুএফএস স্তর) ছবি হিসাবে সংরক্ষণ করুন।

কোন সুপারিশ?

কোন ইনপুট জন্য ধন্যবাদ!

আপডেট :

আমি যা করতে চেষ্টা করছি সেটি হ'ল ম্যাপ প্রিন্টিং পরিষেবা, ওপেনলায়ার্সকে ফ্রন্ট-এন্ড হিসাবে এবং জাঙ্গোকে সার্ভার হিসাবে ব্যবহার করে; ক্লায়েন্ট ব্যবহারকারীর ব্যাপ্তি এবং স্তরগুলি সেট করে এবং তারপরে মুদ্রণ অনুরোধটি (যা প্যারামিটারগুলি বোঝায়, মানে মানচিত্রের পরিমাণ, স্তরগুলির নামগুলি) সার্ভারে প্রেরণ করুন, তারপরে সার্ভার এই অনুরোধটি গ্রহণ করবে এবং অনুরোধ পরামিতি ব্যবহার করে আবার ডাব্লুএমএস / ডাব্লুএফএএস কল করবে, সংরক্ষণ করুন পিডিএফ হিসাবে প্রতিক্রিয়া, ক্লায়েন্ট এই পিডিএফ লিঙ্ক এক্সপোর্ট।

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

বর্তমান উত্তরে, urllib ভাল মনে হয় তবে আমি কীভাবে এই প্রতিক্রিয়াগুলি (ডাব্লুএমএস, ডাব্লুএফএস) একত্রিত করতে পারি তা নিশ্চিত নই; ওডাব্লুএসলিবকে আরও একটি ভাল বিকল্প বলে মনে হচ্ছে, তবে এটি ইঙ্গিত করে যে এটি একটি ক্লায়েন্ট প্রোগ্রামিং সরঞ্জাম, আমি কিছুটা বিভ্রান্ত হয়ে পড়েছি যে এটি আমার ব্যবহারের পক্ষে উপযুক্ত কিনা ...

অন্য কোন ইনপুট ???

প্রশংসা করি!


আমি মনে করি না সেখানে আছে, তবে এটি একটি ভাল ধারণা!
অপ্টিমাইজ করুন

সবেমাত্র লক্ষ্য করা গেছে যে আপডেট হওয়া প্রশ্নটি পিডিএফ-এ ডাব্লুএমএসের সমন্বয় সম্পর্কিত আমার প্রশ্নের সাথে সম্পর্কিত to
মার্কজে

উত্তর:


18

নেই OWSLib যা ঠিক কি আপনি প্রয়োজন প্রদান করা উচিত।

ওডব্লিউএসলিব ওপেন জিওপ্যাসিয়াল কনসোর্টিয়াম (ওজিসি) ওয়েব পরিষেবা (অতএব OWS) ইন্টারফেস মান, এবং তাদের সম্পর্কিত সামগ্রী মডেল সহ ক্লায়েন্ট প্রোগ্রামিংয়ের জন্য পাইথন প্যাকেজ।

OWSLib অসংখ্য ওজিসি ওয়েব পরিষেবা ইন্টারফেসের জন্য পরিষেবা মেটাডেটা এবং মোড়ক অ্যাক্সেসের জন্য একটি সাধারণ API সরবরাহ করে।

ডকুমেন্টেশন এবং উদাহরণ এখানে । এই প্রসঙ্গে ক্লায়েন্টের অর্থ এটি কোনও ডাব্লুএমএস / ডাব্লুএফএস সার্ভারের ক্লায়েন্ট অ্যাপ্লিকেশন - প্রয়োজনে এটি কোনও সার্ভারে চালানো যেতে পারে।

আপনি নিজের উত্তরে আরও বিশদ যুক্ত করার পরে দেখে মনে হচ্ছে মানচিত্রের মুদ্রণ অ্যাপ্লিকেশনটি আপনার প্রয়োজনের সাথে ঠিক ফিট করে। এটি একটি জাভা অ্যাপ্লিকেশন যা ওপেনলায়ার্স এবং সেলাই টাইলস, ডাব্লুএমএস, ডাব্লুএফএস ইত্যাদির সাথে একত্রিত হতে পারে এবং একটি পিডিএফ তৈরি করে।

এটি একটি কমান্ড লাইন অ্যাপ্লিকেশন হিসাবে এটি পাইথন মোড়কের সাহায্যে ম্যানিপুলেট করা যায়। আরও তথ্যের জন্য নিম্নলিখিত লিঙ্কগুলি দেখুন:

http://geographika.co.uk/mapfish-print-module-for-iis

https://github.com/amercader/MapFish-Print-IIS


1
ওডাব্লুএসলিবের পয়েন্টারটির জন্য ধন্যবাদ, আমি এটি কখনও শুনিনি।
user2856

7

আপনি ডাব্লুএমএস সরাসরি কল করতে এবং একটি ফাইলে প্রতিক্রিয়া লিখতে পাইথন urllib গ্রন্থাগারটি ব্যবহার করতে পারেন। এই উত্তরে urllib ব্যবহারের একটি শালীন উদাহরণ রয়েছে । ডাব্লুএমএসের জন্য কেবলমাত্র URL টি প্রতিস্থাপন করুন, যেমন : http: //some.wms.service? অনুরোধ = গেটম্যাপ এবং সংস্করণ = 1.1.1 এবং বিবিএক্স = 141.00, -29.00,141.80, -28.40 এবং এসআরএস = ইপিএসজি: 4326 এবং স্তরগুলি = ল্যান্ডসএ_মোসায়িক এবং WIDTH = 800 & উচ্চতা = 600 image / jpeg

আপনি ডাব্লুএমএস ( http://www.gdal.org/frmt_wms.html ) অ্যাক্সেস করতে জিডিএল লাইব্রেরি এবং ডাব্লুএফএস ( http://www.gdal.org/ogr/drv_wfs.html ) অ্যাক্সেসের জন্য ওজিআর লাইব্রেরি ব্যবহার করতে পারেন

আপনি যদি ডাব্লুএফএসের একটি ছবি তৈরি করতে চান, আপনি একটি জেপিজি তৈরি করতে gdal.RasterizeLayer ফাংশনটি ব্যবহার করতে পারেন। এখানে একটি উদাহরণ আছে


2

এখানে একটি সহজ উদাহরণ. সার্ভারের দিকে:

def get_wfs():
    '''
    Get data from wfs server. Example url is:
    http://192.168.0.1:8080/geoserver/wfs?request=GetFeature&version=1.0.0&service=WFS&typeName=ChistaWS:Chista_new_POIs&maxfeatures=20&srsname=EPSG:4326&outputFormat=json
    We can add CQL filter like this:
    CQL_FILTER=name LIKE 'A%25'
    or
    CQL_FILTER=type=1913

    '''
    cql = ''
    if request.vars.cql:
        cql = urllib.quote_plus(request.vars.cql)
    req = 'GetFeature' # request
    version = '1.0.0'
    service = 'WFS'
    typeName = 'Test:Test_Places'
    maxfeatures = 200000
    if request.vars.mf:
        maxfeatures = request.vars.mf
    srsname = 'EPSG:4326'
    outputFormat = 'json'   
    # format_options = 'callback:getLayerFeatures_MY'
    wfs_url = '%s?request=%s&version=%s&service=%s&typeName=%s&maxfeatures=%s&srsname=%s&outputFormat=%s' % \
                (wfs_server, req, version, service, typeName,\
                 maxfeatures, srsname, outputFormat)
    if cql:
        # print cql
        wfs_url += '&CQL_FILTER=%s'%cql
    # print wfs_url
    try:
        jsonp = urllib2.urlopen(wfs_url).read()  # Get the raw server data
    except urllib2.HTTPError:
        return 'WFS Server <a target="_new" href="%s">%s</a> is down!' % (wfs_server, wfs_server)
    # return jsonp
    # try:
        # apijson = jsonp[ jsonp.index("(") + 1 : jsonp.rindex(")") ]
    # except ValueError:
    apijson = jsonp
    try:
        data = sj.loads(apijson)
    except sj.JSONDecodeError:
        return 'Can not parse data. No JSON! here is the data: <pre>%s</pre>' % apijson
    # return data
    features =[{
            'name':i['properties']['name'],
            'type':i['properties']['type'],
            'coordinates':i['geometry']['coordinates'],
            } for i in data['features']]
    # features =[i for i in data['features']]
    # return dict(features=features)
    return {'result':features, 'length':len(features)}

এবং ক্লায়েন্ট পক্ষের jquery ব্যবহার করে:

$.ajax({
dataType : 'json',
url: wfsurl,
success  : function (response) {
if (response.length>0){
$('#'+subitem).empty();
for (var i = 0, len = response.length; i < len; i++) {
name = response.result[i].name;
lng = response.result[i].coordinates[0];
lat = response.result[i].coordinates[1];
// console.log(name, lng, lat)
html = '<li class="li-subitem"><a onclick="lazyview($(this));" lat="'+lat+'" lng="'+lng+'">'+name+'</a></li>';
$('#'+subitem).append(html);
}}
else{
$('#'+subitem).toggle(100);
}}});

0

আপনি জিওটুলগুলি ডাব্লুএমএস / ডাব্লুএফএস সার্ভার থেকে ডেটা আনতে এবং জাভা গ্রাফিক্স অবজেক্টে রেন্ডার করতে পারেন। তারপরে আইটেক্সটের মতো কিছু পিডিএফ রূপান্তর করতে পারে।

যদি আপনাকে সত্যিই পাইথন ব্যবহার করতে হয় তবে আমি আশা করি আপনি এগুলি পরিচালনা করতে একটি মোড়ক ব্যবহার করতে পারেন।


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