জিওটিফ ফরমেটে জিওরিফারেন্সড ওপেনস্ট্রিটম্যাপ (ওএসএম) মানচিত্র রফতানির জন্য কি পরিষেবা আছে?


12

জিওটিফ ফরমেটে জিওরিফারেন্সড ওপেনস্ট্রিটম্যাপ (ওএসএম) মানচিত্র রফতানির জন্য কি কোনও পরিষেবা উপলব্ধ?

উত্তর:


10

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

  1. ওএসএম শেফফাইল ডাউনলোড করুন।
  2. টাইলমিল এ শেফফিল আমদানি করুন।
  3. আপনি এটি স্টাইল করার পরে, এটি জিওররিফারেন্সড পিএনজি হিসাবে রফতানি করুন

    • একবার আপনি নিক 2img ইনস্টল করার পরে নিম্নলিখিত কমান্ডটি কাজ করা উচিত ; এটি আপনার টাইলমিল রফতানি থেকে একটি পিএনজি এবং ম্যাচিং ওয়ার্ল্ড ফাইল তৈরি করবে: nik2img.py <TileMill export name>.xml <desired file name>.png -d <pixel width> <pixel height> --srs <desired projection, probably 900913> --bbox <bounding box parameters> -v -w pgw
  4. এটি জিওটিআইএফএফ রূপান্তর করতে gdal_translate ব্যবহার করুন ।

    • নিম্নলিখিত কমান্ডটি কাজ করা উচিত: gdal_translate -of GTiff -a_srs <desired projection, probably EPSG:3857, as above> <desired file name>.png <desired file name>.tiff

কেউ কি এই কাজ করেছে? আমি পিএনজি + ওয়ার্ল্ড ফাইল তৈরি করতে পেরেছি তবে ওয়ার্ল্ড ফাইলটি কীভাবে gdal_translate পেতে যায় তা নিয়ে কাজ করতে পারি না। এটি 0.6 সংস্করণ হিসাবে দেখা যাচ্ছে, নিক 2img সরাসরি জিওটিআইএফএফ উত্পাদন করার কথা, তবে এটি আমার পরীক্ষায় প্রদর্শিত হয় না।
জেড ও।

2

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


আপনি যদি পিএনজি চিত্র হিসাবে বর্তমান কিউজিআইএস ভিউটি সংরক্ষণ করেন তবে আপনি একটি বিশ্ব ফাইলও পাবেন, যার অর্থ জিওটিআইএফএফ কেবল দ্রুত gdal_translate রূপান্তর দূরে ....
স্পেসডম্যান

0

আমি ধরে নিলাম আপনার কাছে আপনার বুনিয়াদি স্টাইলশিট এবং প্রাসঙ্গিক পাহাড়ীকরণ ইতিমধ্যে সেট আপ হয়েছে - অন্যথায় আপনার স্টাইলশিটের জন্য গিথুব পৃষ্ঠাটি দেখুন (যেমন https://github.com/hotosm/HDM-CartoCSS )

#!/usr/bin/python

from datetime import datetime
from subprocess import call

import ConfigParser
import math
import dateutil.tz

roughLatRadius = 110574
roughLonRadius = 111111

description = 'Generated from OSM data - unknown date'
copyright = '(C) OpenStreetMap contributors, see http://www.openstreetmap.org/copyright'

def getDimensions(lon, lat, geosize, scale):
    latDims = geosize * roughLatRadius / scale
    lonDims = geosize * math.cos(math.radians(lat)) * roughLonRadius / scale
    return str(int(math.ceil(lonDims))) + " " + str(int(math.ceil(latDims)))

def renderOneImage(lon, lat, geosize, scale):

    dims = getDimensions(lon, lat, geosize, scale)

    extent = str(lon) + " " + str(lat) + " " + str(lon + geosize) + " " + str(lat + geosize)
    output_file = "osm_hot_" + extent.replace(" ", "_") + "_" + str(scale) + "m" + ".tif"
    temp_file = "temp.png"

    now = datetime.utcnow().replace(tzinfo=dateutil.tz.gettz('UTC')).isoformat()
    print "Generating", output_file

    call("nik2img.py --format=RGB24 --world-file=pgw --mapnik-version=1 --dimensions " + dims + " --srs=4326 --no-open --bbox " + extent + " osm_hot_style.xml " + temp_file, shell=True)

    call('gdal_translate -a_srs EPSG:4326 -q -mo "TIFFTAG_ARTIST=WhoEver" -mo "TIFFTAG_IMAGEDESCRIPTION=' + description + '" -mo "TIFFTAG_COPYRIGHT=' + copyright + '" -mo "TIFFTAG_DOCUMENTNAME=OSM Humanitarian Style map - ' + str(scale) + 'm per pixel" -mo "TIFFTAG_DATETIME=' + now + '" ' + temp_file + " " + output_file, shell=True)

def makerange(start, end, step):
    while start < end:
        yield start
        start += step

def renderImages(min_x, min_y, max_x, max_y, stepsize, scale):
    for lon in makerange(min_x, max_x, stepsize):
        for lat in makerange(min_y, max_y, stepsize):
            renderOneImage(lon, lat, stepsize, scale)

if __name__ == '__main__':
    config = ConfigParser.ConfigParser()
    config.read('osm.cfg')
    description = 'Generated from OSM data as of ' + config.get('Metadata', 'ExtractDate', 0)
    copyright = config.get('Metadata', 'CopyrightStatement', 0)
    for scale in ['100', '50', '20', '10', '5', '2', '1', '0.5']:
        for entry in config.items(scale):
            (entry_name, entry_value) = entry
            (min_x, min_y, max_x, max_y, stepsize) = entry_value.split(',')
            renderImages(float(min_x), float(min_y), float(max_x), float(max_y), float(stepsize), float(scale))

কনফিগারেশন ফাইল ( osm.cfg) দেখে মনে হচ্ছে:

[Metadata]
ExtractDate: 2015-03-05T21:21:02Z
CopyrightStatement: (C) OpenStreetMap contributors, see http://www.openstreetmap.org/copyright

[100]
# around 2 degree steps are good at 100 metres
phillipines: 118, 4, 127, 20, 2


[50]
# around 1-2 degree steps are good at 50 metres
phillipines: 118, 4, 127, 20, 1

[20]
# around 0.5 to 1 degree steps are good at 20 metres
samar: 124, 11, 126, 13, 0.5
northwest: 120, 12.4, 124.5, 14.5, 0.5
northofmanila: 120, 14.5, 122.4, 19.6, 0.5


[10]
# roughly 0.4 degree steps are sane at 10 metres

[5]
# around 0.2 degree steps are good at 5 metres

[2]
# around 0.1 degree steps are good at 2 metres
guiuan: 125.5, 10.9, 125.8, 11.1, 0.1
tacloban: 124.8, 11.1, 125.1, 11.4, 0.1
legazpi: 123.5, 13.1, 123.8, 14.5, 0.1
manila: 120.8, 14.2, 121.2, 14.7, 0.1
subicbay: 120.1, 14.7, 120.4, 15.0, 0.1

[1]
# around 0.05 degree steps are good at 1 metre

[0.5]
# around 0.02 degree steps are good at 0.5 metres
tacloban: 124.8, 11.1, 125.1, 11.4, 0.02
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.