অফলাইনে স্লিপ ম্যাপ টাইলগুলির জন্য ডেটাবেস


25

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

সমস্যা:

  • প্রায় এক হাজার পিএনজি ফাইলে প্রচুর টাইলস (10 এমবি - 50 এমবি) থাকতে পারে
  • প্রাথমিক ডাউনলোডটি সত্যিই ধীর হতে পারে (এবং ব্যবহারকারীর কাছে অগ্রগতি দেখানো কঠিন)
  • অ্যাপ্লিকেশন প্রকাশিত হয় বা তারা অফলাইন ক্যাশে সম্পূর্ণরূপে ব্যর্থ না হলে তা না করে ([WHWG.org] [1] এর সাথে সম্মত)
  • অফলাইন ব্যবহারকারী মাঝে মাঝে পুনরায় সংযোগ স্থাপন করবেন এবং টাইলগুলির রিফ্রেশ পেতে হবে, এগুলি ক্ষুদ্র ডেল্টাস তবে অ্যাপ্লিকেশন ম্যানিফেস্ট পদ্ধতিটি সমস্ত জেএস, সিএসএস এবং পিএনজি ফাইলগুলি পুনরায় লোড করবে ম্যানিফেস্ট আপডেটগুলিতে

বিকল্প ধারণা: পিচ্ছিল মানচিত্রের টাইলগুলির সঞ্চয় থেকে ওয়েব অ্যাপ্লিকেশনটিকে আলাদা রাখুন। টাইলস একটি ওয়েব অ্যাপ্লিকেশন বন্ধুত্বপূর্ণ ডাটাবেসে সঞ্চয় করুন

হালনাগাদ:

[পাউচডিবি সম্প্রতি বাইনারি ব্লবগুলির জন্য সমর্থন যোগ করেছে। আমি ভাল প্রাথমিক ফলাফল পাচ্ছি। দেখুন: /programming/16721312/ using-pouchdb-as-an-offline-raster-map-cache ]

প্রশ্ন: একটি জাভাস্ক্রিপ্ট বন্ধুত্বপূর্ণ ডিবির জন্য নিম্নলিখিত পছন্দগুলি সম্পর্কে সম্মিলিত জ্ঞান (এবং অভিজ্ঞতা) কী বলে:

  1. SqlLite
    • মনে হচ্ছে আপনার এটির জাভাস্ক্রিপ্টের সাথে কথা বলতে দেওয়ার জন্য একটি নেটিভ অ্যাপ্লিকেশন র‌্যাপার তৈরি করা দরকার
    • উদাহরণস্বরূপ আপনাকে উইন্ডোজের একটি স্থানীয় প্রোগ্রামে ডিএলএল এবং অ্যান্ড্রয়েড / আইওএসের জন্য ফোনগ্যাপ যুক্ত করুন
  2. WebSQL
    • অনুমোদিত হয়নি
    • তবে এটি একটি এসকিউএল লাইট ছিল যা আমি হোস্ট ওয়েব সার্ভার থেকে সহজেই উত্পন্ন এবং বিতরণ করতে পারি
  3. IndexDB

    • ব্লবগুলি সংরক্ষণ করা কাজ দেখে মনে হচ্ছে: https://hacks.mozilla.org/2012/02/store-images-and-files-in-indexeddb/
    • আমি যদি উদ্বিগ্ন হই যে প্রাথমিকভাবে এটিই ডিবি স্থাপনের একমাত্র উপায় way
    • এটি কি মূলত কোনও এসকিউএললাইট ফাইল? আমি কি এটি বাল্ক ডিবি আপলোডের জন্য শিপ করতে পারি?
    • সমাধান হিসাবে আমি এটির দিকে ঝুঁকছি। আমি কি জানি না তাদের গোছা?

    প্রয়োজনীয়তা:

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

হালনাগাদ:

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

জিপ ফাইল (সম্ভবত এটি ভাল ধারণা নয় - কারণ এটি সার্ভারের বোঝা যুক্ত করে) ক্লায়েন্ট মেশিনে সম্প্রসারণের জন্য ব্যবহারকারীর ইন্টারঅ্যাকশন প্রয়োজন, তবে এটি পিচ্ছিল টাইলসকে স্থানীয় ইউআরএল ব্যবহার করতে দেয়

এইচটিএমএল 5 ফাইল এপিআই: আমি এটিকে দুর্দান্তভাবে দেখিনি। তবে এটি টিএমএস ফর্ম্যাটে একটি স্থানীয় ফাইল ট্রি তৈরির বেশিরভাগ অপারেশন রয়েছে: http://www.html5rocks.com/en/tutorials/file/filesystem/ যা পরীক্ষা করা আকর্ষণীয় হবে তা হল কর্মক্ষমতা (উদাহরণস্বরূপ, আমি ওয়েব ওয়ার্কগুলি ব্যবহার করতে পারি) ব্যান্ডউইথকে ডিস্কে এবং নেট জুড়ে সর্বাধিক করতে)। ইনডেক্সডিবি ওয়েব কর্মী বান্ধব হতে ব্যাপকভাবে প্রয়োগ করা হয়নি (সিঙ্ক ইন্টারফেস: /programming/10698728/indexeddb-in-web-worker-on-firefox

লিফলেট দিয়ে ইনডেক্সডিবি ব্যবহার সম্পর্কে কিছু অতিরিক্ত তথ্য পেয়েছি:

https://github.com/calvinmetcalf/leaflet.pouch (অফলাইনের জন্য indexdb সহ কাউচডবি সিঙ্ক করে) এছাড়াও সূচিপত্র, ওয়েবএসএকএল এবং স্থানীয় স্টোরের জন্য পড়ার / লেখার গতির জন্য এখানে কিছু পরীক্ষা রয়েছে: http://jsperf.com/indexeddb -vs-LocalStorage / 15

এবং জাভাস্ক্রিপ্ট থেকে ফাইল এপিআইটি পড়তে / লিখতে এখানে কীভাবে ব্যবহার করবেন: (এবং স্টোরেজ সীমাবদ্ধতা বাড়ানোর জন্যও জিজ্ঞাসা করুন ) :


ধন্যবাদ, টম ম্যাকরাইট (ওরফে টিএমসিডাব্লু), কিছু ভাল প্রতিক্রিয়ার জন্য। আমি বাইনারি ব্লবগুলি ইনজেক্ট করার জন্য কাস্টম স্তর তৈরি করতে গেলে আপনার উদাহরণটি সত্যই সহায়তা করবে।

আমি গতকাল ইনডেক্সডডিবি দিয়ে কিছু পরীক্ষা করেছি এবং কিছু পলিফিল এবং গ্রন্থাগার ব্যবহার করে আমার মনে হয় এটি আমার সমস্যাগুলি সমাধান করবে। এখন এটিতে কিছুটা ঘামের ইক্যুইটি স্থাপন করার সময় এসেছে এবং আমি এটির প্রতিবেদন করব।


বিটিডাব্লু: আপনি যদি ক্লায়েন্ট সাইড ডাটাবেসে আমার অধ্যয়নের ফলাফল দেখতে চান তবে দেখুন:

/programming/14113278/storing-image-data-for-offline-web-application-client-side-storage-database



নকলের কোনও বিশেষ কারণ? stackoverflow.com/questions/14058489/...
radek

আন্ডার ডার্ক আন্ডারশার্ক না? ;]
রাদেক

অনিতা আপনার সম্পাদনার জন্য আপনাকে ধন্যবাদ। আমি একজন নবাগত এবং আমি এই নোটটি বন্ধ করার জন্য সঠিক শিষ্টাচার জানতাম না, তবে সমাধানের জন্য আমি কী বেছে নিয়েছি তা পাঠকদের জন্য ক্লু রেখে দিয়েছি।
ডঃ ওয়াইএসজি

উত্তর:


7

ফোনগ্যাপ এবং এমবি টাইলস

ওয়েবএসকিউএল এবং ইনডেক্সডিবি যথেষ্ট হবে না। 'উইন্ডোজ ল্যাপটপগুলি' মোবাইল ডিভাইসের মতো একই কোড হবে না।


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

আমি কেবল মনে করেছি এখানে একটি অতিরিক্ত বাধা রয়েছে: আমরা যদি ফোনগ্যাপের মাধ্যমে এটি প্রয়োগ করি তবে স্পনসর এটিকে একটি স্থানীয় অ্যাপ্লিকেশন বলবে এবং তারপরে এটি এক বছর বা তার বেশি সময় শংসাপত্রের মধ্য দিয়ে যেতে হবে। আমরা সত্যিই এড়াতে চাই।
ডাঃ ওয়াইএসজি

1
আপনি যা করতে চাইছেন তা কোনও দেশীয় উপাদান ছাড়া সম্ভব নয়। সম্ভবত পুনর্বার আলোচনা করার সময় এসেছে।
tmcw

আমার কৌতূহলের জন্য, ইনডেক্সডিবি বা ফাইলএপিআইতে সমস্যা কী?
ডাঃ ওয়াইএসজি

1
কাছাকাছি-শূন্য এবং দাগযুক্ত ব্রাউজার সমর্থন প্লাস কম আকারের সীমা। নিজের জন্য চেষ্টা করুন।
tmcw

3

পিএনজি স্লিপ ম্যাপের জন্য ফলাফল অফলাইন ব্লব ক্যাশে

পরীক্ষামূলক

  • ১1১ টি পিএনজি ফাইল (মোট ৩.২ এমবি)
  • প্ল্যাটফর্মগুলি পরীক্ষিত: ক্রোম ভি 24, ফায়ারফক্স 18, আইই 10
  • অ্যান্ড্রয়েডের জন্য ক্রোম এবং এফএফের সাথেও কাজ করা উচিত

ওয়েব সার্ভার থেকে আনুন

  • ওয়েব সার্ভার থেকে ব্লব ডাউনলোডের জন্য এক্সএইচআর 2 (প্রায় সব ব্রাউজারে সমর্থিত) ব্যবহার করা
  • আমি ফিল পার্সনস দ্বারা এক্সএইচআর 2-লিবের সাথে গিয়েছিলাম, যা জ্যাকুয়েরির মতো অনেকটা .জ্যাক্স ()

সংগ্রহস্থল

  • আইই এবং ফায়ারফক্সের জন্য সূচীবিডি
  • ক্রোম: পলিফিল (ফাইলসিস্টেম এপিআই ব্যবহার করে সঞ্চিত ব্লব, সূচক ডিবিতে রেফারেন্স রাখা হয়েছে) পলিফিল
  • "ব্রাউজারগুলি কীভাবে ইনডেক্সডডিবি ডেটা সঞ্চয় করে" শীর্ষক একটি নিবন্ধ পড়তে হবে
  • দ্রষ্টব্য: ফায়ারফক্স NOSQL ইনডেক্সডডিবি-এর জন্য এসকিউএলাইট ব্যবহার করে। এটি ধীর পারফরম্যান্সের কারণ হতে পারে। (ব্লব পৃথকভাবে সঞ্চিত)
  • দ্রষ্টব্য: মাইক্রোসফ্ট আইই এক্সটেনসিবল স্টোরেজ ইঞ্জিন ব্যবহার করে:
  • দ্রষ্টব্য: ক্রোম লেভেলডিবি http://code.google.com/p/leveldb/ ব্যবহার করে

প্রদর্শন

  • আমি মানচিত্রের টাইলগুলি দেখানোর জন্য লিফলেটটি http://leafletjs.com/ ব্যবহার করছি
  • আমি ডিবি থেকে টাইল স্তর আনার জন্য ইসমাইল স্মার্নো দ্বারা কার্যকরী টাইল স্তর প্লাগইন ব্যবহার করেছি
  • আমি ডিবি ভিত্তিক টাইলস স্তরটিকে একটি সম্পূর্ণ স্থানীয় (লোকালহোস্ট: //) স্টোরেজের সাথে তুলনা করেছি
  • পারফরম্যান্সে কোনও লক্ষণীয় পার্থক্য নেই! ইনডেক্সডডিবি এবং লোকাল ফাইল ব্যবহারের মধ্যে!

ফলাফল

  • ক্রোম: আনুন (6.551 সে), স্টোর (8.247 গুলি)
  • ফায়ারফক্স: আনুন (0.422 সে), স্টোর (34.519 সে)
  • আইই 10: আনুন (0.668s), স্টোর: (0.896 এস)

2

সুতরাং আপনি প্রায় স্পষ্টভাবে লিফ.পাউচটি ব্যবহার করতে চান না, আমি ভেল্টারের ডেটা মাথায় রেখে টাইলস না রেখে আপনার টাইলস সংরক্ষণ করার জন্য স্ট্রেট আপ পউচডিবি ব্যবহার করা ভাল as কারণ আপনিও কাউচডিবি থেকে অনুলিপি করতে পারেন দ্রুত প্রারম্ভিক লোড, উপরের @tmcw দ্বারা উত্তরটি যদি কাজ করে তবে আপনার যদি কোনও মোবাইল ওয়েব পৃষ্ঠার বিপরীতে কোনও ফোন অ্যাপ থাকে।


0

টাইল_ডাটা ব্লব ফিল্ডের সাথে পিএনজি বা জেপিজি বা ওয়েবপি বা জিজেপড পিবিএফ সহ টাইলস টেবিলের সাথে স্ট্যান্ডার্ড এসকিউএলইটি 3 কনটেইনার এমবিটিআইএলএস ফর্ম্যাটটি ব্যবহার করুন এটি এমবিটিআইএলএস.জেএস https://github.com/tilemapjp/mbtiles.js/tree/master https: // এর সাথে সংহত করে www.npmjs.com/package/Leaflet.TileLayer.MBTiles

আপনি ম্যাপবক্সের মাধ্যমে এমএমইটিএল দিয়ে টিএমএস বা এক্সওয়াইজেড টাইলসকে এমবিটাইলগুলিতে রূপান্তর করতে পারেন। যদি আপনাকে প্রথমে টাইলসের ফোল্ডার তৈরি করতে হয় তবে GDAL2TILES_Parallel.py বা gdal2ાઇલp.py ব্যবহার করুন অরজিনালের সমান্তরাল মাল্টিপ্রসেসিং পাইথন বাস্তবায়ন। তাদের উভয়েরই জিডিএল দরকার।


আমি সম্পূর্ণ অফলাইনে দেখার জন্য লিফলেটে এমবাটাইলদের সরাসরি পড়ার (রাস্টার, ভেক্টর এবং অঞ্চল / উচ্চতা) বাস্তবায়ন করেছি।
জিওস্প্যাটিয়াল ইনফরমেশনটেক

আমার বাস্তবায়নে ওজিসি জিওপ্যাকেজ সমর্থন যুক্ত হয়েছে। রাস্টার, ভেক্টর, উচ্চতা এবং ভেক্টর টাইলস। GeoPackage-জাতীয় ব্যবহার
GeospatialInformationTech

0

লিফলেটজে এমবিটিআইএলএস এখানে চিত্র বর্ণনা লিখুন

এটি স্থানীয় এবং দূরবর্তী এমবেটাইলগুলি পড়বে। আইওনিক বা প্রতিক্রিয়া নেটিভ সহ মোবাইল অ্যাপ্লিকেশন হিসাবে প্যাকেজ। বা ইলেক্ট্রন পরমাণুর সাথে ডেস্কটপ। এমবিটিআইএলএস হ'ল উপায়

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