জিআইএসক্লাউডের মতো রেন্ডারিং পারফরম্যান্স সহ ভেক্টর বহুভুজ তৈরি করছেন?


59

আমি একটি দৃ solution় সমাধান খুঁজছি যা আমাকে একটি ওয়েব ম্যাপ তৈরি করতে এবং ওভারলে ভেক্টর বহুভুজকে চিরকালের জন্য এ জাতীয় ডেটা লোড না করেই হওর ইভেন্টে প্রতিটি বহুভুজ প্রদর্শনকে আলাদা রঙিন করার সুযোগ দেবে allow

যতদূর আমি অবগত রয়েছি ক্যানভাস, এসভিজি, ফ্ল্যাশ এর মাধ্যমে এটি অর্জনের জন্য 3 নির্দিষ্ট বিকল্প রয়েছে।

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

আমি এই সমস্যার সমাধান খুঁজে পাওয়ার আশা প্রায় হারিয়ে ফেলেছি তবে আজ আমি জিআইএসক্লাউড http://www.giscloud.com (বর্তমানে ফ্রি সাইনআপ সহ বিটাতে) নামে একটি সংস্থা পেলাম ।

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

এই আশ্চর্যজনক ডেমোটি দেখে নিজেকে দেখুন: http://www.giscloud.com/map/284/africa

নিশ্চিত হয়ে নিন যে আপনি পৃষ্ঠায় যে কোনও বহুভুজের উপর ঘুরেছেন এবং জুম নিয়ন্ত্রণগুলি পরীক্ষা করে দেখুন যে এই বহুভুজগুলি সত্যই ভেক্টর ors

ফায়ারব্যাগের সাথে অনুরোধগুলি দেখে আমি যা লক্ষ্য করেছি তা হ'ল মানচিত্রটি নির্দিষ্ট জেসন ফাইলগুলির জন্য অনুরোধ করছে। দেখে মনে হচ্ছে জুম স্তর / ক্ষেত্রের উপর নির্ভর করে একাধিক জসন ফাইলের অনুরোধ করা হচ্ছে।


আমার এখানে এটিও উল্লেখ করা উচিত যে একবার গিসক্লাউড পৃষ্ঠায় থাকা ভ্যাক্টরের উপরে থাকা ডেটা লোড করার সাথে সাথে একটি নতুন অনুরোধ তৈরি না করে সঙ্গে সঙ্গে রঙ পরিবর্তন করে।

উদাহরণ:

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

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

  • প্রস্থ / উচ্চতা: তারা প্রতিটি জসন অনুরোধে প্রদত্ত তথ্যের প্রস্থ এবং উচ্চতা নির্ধারণ করে
  • পিক্সেল: এখানে তারা পিক্সেল মানগুলি সংজ্ঞায়িত করে যা আমি ধরে নিচ্ছি যে কোনওরকম সাধারণ পয়েন্ট স্তরের জন্য কিছু সাধারণ এক্স / ওয়াই পিক্সেল স্থানাঙ্কের সাথে সম্পর্কিত? আমি অনুমান করছি যে তাদের কোনওভাবে জুম স্তরের উপর নির্ভর করে অঞ্চলটিকে স্বয়ংক্রিয়ভাবে সরল করার একটি উপায় রয়েছে। আমি অনুমান করছি যে তারা পিক্সেল স্থানাঙ্কগুলি ব্যবহার করে আমি অনুমান করছি যে তারা ল্যাট / লম্বা তথ্যের তুলনায় লোড করা দরকার এমন ডেটার আকার নাটকীয়ভাবে হ্রাস করছে।
  • শৈলী: এখানে তারা দুটি আরজিবি সিএসএস মান নির্ধারণ করে। বহুভুজ ফাইল রঙের প্রতিনিধিত্বকারী "এফ" এবং বহুভুজ সীমানার বর্ণকে উপস্থাপন করে "এস"।
  • জিওম: আমি এখানে অনুমান করছি যে তারা কোনওভাবে লোড হচ্ছে টাইলের মধ্যে প্রতিটি বহুভুজকে নির্দিষ্ট করে সংজ্ঞায়িত করছে যেখানে মানচিত্রের ধারক উইন্ডোটির ভিত্তিতে এই জাতীয় ডেটা সংজ্ঞায়িত করা হচ্ছে। মজার বিষয় হ'ল প্রতিটি প্রবেশের একটি "এস" মান রয়েছে যা আমি ধরে নিচ্ছি যে এটি একটি optionচ্ছিক বৈশিষ্ট্য বা বৈশিষ্ট্যযুক্ত লিঙ্কের মান হিসাবে ব্যবহৃত হয় এবং প্রতিটি প্রবেশের শেষে এখানে এমন একটি অঞ্চল রয়েছে যা ভেক্টর আইডি সহ একটি নির্দিষ্ট নির্দিষ্ট সংজ্ঞা দেয় বলে মনে হয় seems আমি যে লেয়ার আইডিটি অনুমান করছি তা কোনও একরকম প্রতিটি জসন টাইল অনুরোধের জন্য ডেটা যুক্ত করার জন্য ব্যবহৃত হয়েছে।

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

এখানে এই অনুরোধগুলির মধ্যে একটির নিষ্কাশিত ব্রেকডাউন রয়েছে:

{"width":256,"height":256,"tile":
{"pixels":
[0,6461,-1,0,5,148,0,509,-1,10715,-1,1,-1,251,-1,1,-1,1,-1,251,-2,3,-1,255,-1,249,-2,5,-2,247,-1,509,-3,251,-1,2,-2,253,-2,252,-2,254,-1,255,-1,254,-1,255,-1,1276,-2,13,-1,233,-1,2,-1,253,-1,1,-1,255,-1,247,-1,1306,-1,1533,-1,1269,-1,1276,-1,2303,-1]},

"styles":
[{"f":"rgb(99,230,101)","s":"rgb(5,148,0)","lw":"0"}],

"geom":
[
{"s":0,"p":[4,143,5,144,3,146,1,146,2,143,4,143],"c":"layer1156_5098"},
{"s":0,"p":[-2,143,0,140,2,141,2,144,1,146,-2,144,-2,143],"c":"layer1156_5067"},
{"s":0,"p":[7,143,5,144,4,143,2,143,2,141,5,138,6,139,5,141,7,143],"c":"layer1156_5051"},
{"s":0,"p":[10,141,11,137,12,137,14,137,12,142,9,143,9,142,10,141],"c":"layer1156_5041"},
{"s":0,"p":[1,136,0,140,-2,143,-2,136,1,136],"c":"layer1156_5038"},
{"s":0,"p":[8,143,5,141,5,137,8,136,10,137,10,141,8,143],"c":"layer1156_5033"},
{"s":0,"p":[5,137,2,141,0,140,1,136,1,136,2,135,3,136,5,137],"c":"layer1156_5028"},
{"s":0,"p":[10,134,12,136,11,138,8,135,10,134],"c":"layer1156_5020"},
{"s":0,"p":[-2,133,0,136,-2,136,-2,133],"c":"layer1156_5005"},
{...}
...
]
}

পোস্টগিস ব্যবহার করে আমরা কীভাবে একই (বা অনুরূপ) ধরণের গতি প্রতিলিপি করতে পারি (যা আমি তাদের ব্যবহার করি বলে মনে হয়)?


আহ! জেএসএন ফাইলটির দিকে তাকাবেন না, অন্যান্য আপাতদৃষ্টিতে গুরুত্বহীন চিত্রগুলি দেখুন যা পাস হয়ে গেছে :) নীচে আমার উত্তর দেখুন।
রাগী ইয়াছার বুড়হুম

"3 টি নির্দিষ্ট বিকল্প রয়েছে" ... তাহলে সিলভারলাইট, কাটা লিভারটি কী?
কર્ક কুইকেনডাল

সিলভারলাইটের কাজ করার জন্য এটির প্লাগইন প্রয়োজন এবং আমি মনে করি না এটি গিসক্লাউড সমাধানের তুলনায় আসলে দ্রুততর তবে আমি কোনও সরাসরি তুলনা করি নি।
নেটকন্সট্রাক্টর.কম

2
এই প্রশ্নটি এমন অনেকগুলি আকর্ষণীয় বিষয় নিয়ে আসে যা সাধারণ প্রশ্নোত্তর বিন্যাসে ফিট করে না। ওয়েব ম্যাপ ওয়ার্ল্ডে ভেক্টর ব্যবহার করে
matt wilkie

@ রাগিএসারবারহুর এই একই কৌশল ব্যবহার করে কীভাবে
ট্র্যাভেল

উত্তর:


56

আমি এই কৌশলটি অতীতে ব্যবহৃত দেখেছি। এটি আমার কাছে জয়ন মেমন (ট্রুলিয়া থেকে) দ্বারা ব্যাখ্যা করা হয়েছিল যিনি মিশাল মিগুরস্কি যখন টাইলস্ট্যাচ তৈরি করছেন তখন কিছু ইনপুট দেওয়ার ক্ষেত্রে সহায়তা করেছিলেন। যখন ব্যাখ্যা জৈন এটি উপর গিয়েছিলাম তার Trulia ডেমো এই প্রযুক্তিটি ব্যবহার করে আমাদের পুরোনো এক কিছু সময় ফিরে সান ফ্রান্সিসকো GeoMeetup সভা । প্রকৃতপক্ষে, আপনি যদি পরের সপ্তাহে এসএফ এ থাকেন (এটি কোনও প্লাগে আমার পঙ্গু প্রচেষ্টা, তিনি এটিকে স্পর্শ করবেন , তাই নির্দ্বিধায় প্রদর্শিত হবে :)

ঠিক আছে, এখন ব্যাখ্যা।

প্রথমত, উপরের জসন ফাইলগুলির দিকে তাকানোর সময় আপনি ভুল জায়গায় কিছুটা তাকিয়ে আছেন।

আমাকে ব্যাখ্যা করুন (আমি যতটা পারি সংক্ষিপ্ত), কেন।

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

আপনি যদি এটি ফায়ারব্যাগে পরিদর্শন করেন তবে আপনি দেখতে পাবেন যে আপনি পুরো গুচ্ছ চিত্রও পেয়ে যা খালি মনে হয়, এর মতো

ফাঁকা কেন? এইটা না. পিক্সেলগুলিতে ডেটা থাকে - কেবল traditionalতিহ্যবাহী দৃশ্যমান চিত্রের ডেটা নয়। তারা নিজেরাই পিক্সেলগুলিতে এনকোডড ডেটা পাস করার জন্য খুব চালাক কৌশল ব্যবহার করছে।

বিগত দশকে যা চলছে, তা হ'ল লোকেরা স্টোরেজ দক্ষতার ব্যয়ে ফরমেটের পঠনযোগ্যতা এবং বহনযোগ্যতার ডেটা বন্ধ করে দিচ্ছে।

এক্সএমএল নমুনা ডেটার এই উদাহরণটি ধরুন:

<data>

  <feature>
    <point>
      <x> -32.1231 </x>
      <y> 10.31243 </y>
    </point>
    <type> 
      sold
    </type>
   </feature>

  <feature>
    <point>
      <x> -33.1231 </x>
      <y> 11.31243 </y>
    </point>
    <type> 
      available
    </type>
   </feature>

</data>

ঠিক আছে, এটি স্থানান্তর করতে কয়টি কামড়? তবে শর্ত থাকে যে আমরা utf8 (এই বিষয়বস্তুটির সাথে লেনদেন করার সময় 1 অক্ষর প্রতি বাইট)। ঠিক আছে, আমাদের প্রায় 176 টি অক্ষর রয়েছে (ট্যাব বা স্পেস গণনা ছাড়াই) যা এই 176 বাইট তৈরি করে (এটি বিভিন্ন কারণে আশাবাদী যে আমি সরলতার জন্য বাদ দেব)। মনে রাখবেন, এটি 2 পয়েন্টের জন্য!

তবুও, কিছু স্মার্ট গাধা যা সে কী বলছে তা বুঝতে পারে না, কোথাও দাবি করবে যে "জসন আপনাকে উচ্চতর সংকোচন দেয়"।

ভাল, আসুন আমরা জসন এর মতো একই এক্সএমএল বাজে কথা বলি:

{ "data": [
            "feature" : { "x" : -32.1231, "y" : 10.31243 , "type": "sold" },
            "feature" : { "x" : -33.1231, "y" :11.31243, "type": "avail" },
          ]
}

এখানে কত বাইট? 115 ডলার বলুন। এমনকি আমি কিছুটা প্রতারণা করে এটিকে আরও ছোট করে তুলেছি।

বলুন যে আমার অঞ্চলটি 256x256 পিক্সেলকে কভার করেছে এবং আমি এমন একটি জুম স্তরে আছি যে প্রতিটি বৈশিষ্ট্য একটি পিক্সেল হিসাবে রেন্ডার করে এবং আমার অনেকগুলি বৈশিষ্ট্য রয়েছে যে এটি পূর্ণ। 65,536 বৈশিষ্ট্যগুলি দেখানোর জন্য আমার কতটা ডেটা দরকার?

54 টি অক্ষর (বা ইউটিউফ বাইটস - এবং আমি এমনকি কিছু অন্যান্য বিষয় উপেক্ষা করছি) প্রতি "বৈশিষ্ট্য" এন্ট্রি গুণিত x 65,536 = 3,538,944 বা প্রায় 3.3MB

আমি মনে করি আপনি ছবিটি পেয়েছেন।

তবে এইভাবে আমরা কোনও পরিষেবামুখী আর্কিটেকচারে ডেটা পরিবহন করি। পঠনযোগ্য ব্লাড ক্রপ

আমি যদি নিজেকে আবিষ্কার করে এমন বাইনারি স্কিমের সবকিছু পরিবহন করতে চাইতাম তবে কী হবে? পরিবর্তে বলুন যে, আমি সেই তথ্যটি একক ব্যান্ড চিত্রে (যেমন কালো এবং সাদা) এনকোড করেছি। এবং আমি স্থির করেছিলাম যে 0 এর অর্থ বিক্রি হয়েছে এবং 1 এর অর্থ উপলব্ধ এবং 2 এর অর্থ আমি জানি না। হেক, 1 বাইটে আমার কাছে 256 টি বিকল্প রয়েছে যা আমি ব্যবহার করতে পারি - এবং আমি এই উদাহরণের জন্য কেবল দুটি বা তিনটিই ব্যবহার করছি।

এর স্টোরেজ ব্যয় কত? 256x256x 1 (কেবল একটি ব্যান্ড)। 65,536 বাইট বা 0.06 এমবি। এবং এটি অন্যান্য সংক্ষেপণ কৌশলগুলিও বিবেচনা করে না যে আমি চিত্র সংকোচনের কয়েক দশক গবেষণা থেকে বিনামূল্যে পেয়েছি।

এই মুহুর্তে, আপনার নিজেকে জিজ্ঞাসা করা উচিত কেন লোকেরা জসনকে সিরিয়ালাইজ করার পরিবর্তে বাইনারি ফর্ম্যাটে এনকোডড ডেটাগুলি কেবল পাঠায় না কেন? প্রথমে দেখা যাচ্ছে, জাভাস্ক্রিপ্ট বাইনারি ডেটা পরিবহনের জন্য বড় সময় সাফল্য অর্জন করে , তাই মানুষ thatতিহাসিকভাবে এটি করেন নি।

একটি ভয়ঙ্কর কাজ প্রায় কিছু লোক দ্বারা ব্যবহৃত হয়েছে যখন নতুন বৈশিষ্ট্য HTML5 এর বাইরে, বিশেষ করে ক্যানভাস এসে । তাহলে এই চারপাশের দুর্দান্ত কাজটি কী? দেখা যাচ্ছে, আপনি কোনও চিত্র হিসাবে উপস্থিত তার এনকোডযুক্ত তারের মাধ্যমে ডেটা প্রেরণ করতে পারেন, তারপরে আপনি সেই চিত্রটি একটি এইচটিএমএল 5 ক্যানভাসে স্থানান্তর করতে পারেন, যা আপনাকে পিক্সেল সরাসরি পরিচালনা করতে দেয় ! এখন আপনার কাছে সেই ডেটা ধরার, ক্লায়েন্টের পাশ দিয়ে ডিকোড করার এবং ক্লায়েন্টের জসন বস্তুগুলি তৈরি করার একটি উপায় রয়েছে।

এক মুহূর্ত থামুন এবং এই সম্পর্কে চিন্তা করুন।

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

এইচটিএমএল ক্যানভাসটি আঁকতে এমনকি ব্যবহার করার প্রয়োজন নেই, এটি কেবল বাইনারি ডিকোডিং প্রক্রিয়া হিসাবে ব্যবহৃত হয়!

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

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

তুমি কি আরও তথ্য এনকোড করার প্রয়োজন হলে, মনে রাখবেন যে আপনি সবসময় পিক্সেল প্রতি RGBA ইমেজ তৈরি করতে পারেন (যা আপনি পিক্সেল প্রতি 4 বাইট বা 4,294,967,296 সংখ্যাটি উপস্থাপন করতে পারেন দেয় পিক্সেল প্রতি )। আমি এটি ব্যবহার করার বিভিন্ন উপায় সম্পর্কে ভাবতে পারি :)

আপডেট : নীচে QGIS প্রশ্নের উত্তর দেওয়া ering

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

এই কৌশলটি দিয়ে টাইলস এবং ভেক্টরগুলিকে প্রতিটি জুম স্তরে পুনরায় পাঠানো দরকার । কেন? কারণ ভেক্টরগুলিকে জুম স্তরগুলি সমন্বিত করতে সাধারণীকরণ করা হয়েছে।

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

* আপডেট 2 **:

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


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

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

12
+1 এটি খুব পঠনযোগ্য প্রতিক্রিয়াটি সংকুচিত না করার জন্য আপনাকে ধন্যবাদ :)
কर्क কুইকেনডাল

1
আপনি নিশ্চিত সিলভারলাইট বা ফ্ল্যাশ দিয়ে এটি করতে পারেন। তা সত্ত্বেও, মনে রাখবেন যে গুরুত্বপূর্ণ অংশ সার্ভারে ঘটছে তাই ফ্ল্যাশ বা সিলভারলাইট এর হবে না যে একটি সহায়তা অনেক।
রাগী ইয়াছার বুড়হুম

2
চার বছর পরে এখানে অনেকগুলি জিনিস বিবর্তিত হয়েছে এবং এই পাঠ্যবাক্সটির এটি ব্যাখ্যা করার জন্য কেবলমাত্র 500 ডলার অক্ষর রয়েছে। সংক্ষিপ্তসারটি হ'ল ওয়েবজিএল পরিপক্ক এবং সিরিয়ালাইজেশনের কৌশলগুলির বাইরেও লোকেরা টপোজনের মতো ফর্ম্যাটে স্থির-নির্ভুলতা ডেল্টা-এনকোডিং (যেমন আমরা 60 এর দশকে ব্যবহৃত হয়েছিল) প্রয়োগ করে যাচ্ছি। এটি একটি ভাল জিনিস। আমি ওজিসির একটি মানদণ্ডে এই জিনিসগুলির কিছু দেখতে চাই ... তবুও, ওজিসির চারপাশের রাজনীতি ইদানীং খুব জটিল হয়েছে। এখানে দু'বছর আগে আমার অনুভূতিগুলি রয়েছে: blog.burhum.com/post/50036141569/the-ogc-is-stuck-in-1999
রাগী ইয়াসার বুড়হুম

23

সাম্প্রতিক মেলিং তালিকার পোস্টে বিকাশকারী ডাইনো রাভনিক থেকে সরাসরি :

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

  1. টাইল থেকে অপসারণ করা সমস্ত ভেক্টর যা দৃশ্যমান ছোট যা তাদের ক্ষেত্রফল যখন পিক্সেলে গণনা করা হয় তখন 1px এর চেয়ে কম হয়। সুতরাং আমরা এই জাতীয় ভেক্টর ফেলে দিই এবং এর পরিবর্তে এটি একটি পিক্সেল রাখি তাই আমাদের জসন টাইলটিতে "পিক্সেল" সম্পত্তি রয়েছে

  2. প্রকৃতপক্ষে প্রদর্শিত হবে এমন ভেক্টরগুলি সাধারণীকরণ করা হচ্ছে এবং তারপরে পিক্সেলগুলিতে তাদের স্থানাঙ্কগুলি সহ একটি টাইলের লিখিত

ক্লায়েন্ট অংশে আমরা ক্যানভাসে সেই স্ট্যাটিক পিক্সেল এবং দৃশ্যমান ভেক্টরগুলি সরবরাহ করি। ভেক্টরগুলির শীর্ষে আমরা হাওরিং অর্থাৎ ইন্টারঅ্যাক্টিভিটি অর্জনের জন্য মাউস ইভেন্ট হ্যান্ডলিং প্রয়োগ করেছি। এবং এটাই.

আমাদের ব্যাকএন্ড মানচিত্র ইঞ্জিনটি সমস্ত ভারী-উত্তোলন করে because এটি দ্রুত সতেজ করা যায় এমন একটি মানচিত্র থাকা আমাদের পক্ষে অত্যন্ত গুরুত্বপূর্ণ।

সুতরাং এটি ক্লায়েন্ট পক্ষের সহজ অংশ মনে হচ্ছে। এটি চিত্তাকর্ষক যে ডেটা কোনও ক্যাশে ছাড়াই রেন্ডার করা হয়।

তিনি একটি হোস্টিং পরিষেবা উল্লেখ করেছেন যা আপনার পক্ষে আগ্রহী হতে পারে। আপনি এটি তৈরির পরিষেবা ব্যবহারের ব্যয় সহ পুনরায় তৈরি করার চেষ্টা করার ব্যয়টি ওজন করতে পারেন।


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

@ নেটকনস্ট্রাক্টর সম্ভবত জ্যামিতিটি ইতিমধ্যে জাইজি জ্যামিতিতে সঞ্চিত আছে তাই রূপান্তর করার দরকার নেই?
geographika

আপেক্ষিক xyz স্থানাঙ্কগুলি তুলনামূলক ল্যাট / ল্যান্ডের কম ব্যান্ডউইথের প্রয়োজনের তুলনায় সম্ভবত সংক্ষিপ্ত।
ম্যাথু স্নেপ

ঠিক আছে তবে তারা ফ্লাইটে সেই ডেটা রূপান্তর করছে
নেটকন্সট্রাক্টর ডটকম

17

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

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

প্রথমে আমরা এসডাব্লুএফ হিসাবে মানচিত্র টাইলগুলি সরবরাহ করা শুরু করেছি এবং ইদানীং আমরা সবেমাত্র JSON এ আউটপুট সক্ষম করেছি যাতে আমরা গ্রাফিকগুলি রেন্ডার করতে HTML5 ক্যানভাস ব্যবহার করতে পারি। এই ধরণের ভেক্টর প্রযুক্তির সাথে রাস্টার প্রযুক্তির (ম্যাপনিক) তুলনা করার জন্য আপনি একটি বেঞ্চমার্কের নীচে খুঁজে পেতে পারেন। ন্যায্য তুলনার জন্য কেবল সিজিআই মোডে ফলাফলগুলি সন্ধান করুন।

http://www.giscloud.com/blog/realtime-map-tile-rendering-benchmark-rasters-vs-vectors/

আমরা এই প্রযুক্তিটি মানচিত্রের টাইল হোস্টিং পরিষেবা হিসাবে সরবরাহ করার পরিকল্পনা করছি। ধারণাটি হ'ল মেঘে আপনার জিও ডেটাটি হোস্ট করা এবং এইচটিএমএল 5 এর মাধ্যমে টাইলগুলি প্রাক্কলিত করার কোনও প্রয়োজন ছাড়াই উচ্চ গতিতে কোনও মানচিত্র ক্লায়েন্টে সরবরাহ করা। আপনি যদি এই বিটাতে যোগ দিতে আগ্রহী হন তবে নির্দ্বিধায় আমাদের সাথে এখানে যোগাযোগ করুন: http://www.giscloud.com/contact/


1
ভেক্টর ডেটার জন্য টাইলগুলি ব্যবহার করার ধারণাটি খুব আকর্ষণীয় (এটি "স্পেসিয়াল ইনডেক্সিং" এর জন্য অন্য শব্দটির মতো দেখায়)। আপনি বিভিন্ন টাইলস অতিক্রম করে এমন বৈশিষ্ট্যগুলি কীভাবে মোকাবেলা করবেন? তারা কাটা হয়?
জুলিয়ান

3
হ্যাঁ, ভেক্টরগুলি টাইলের বিপরীতে ক্লিপড রয়েছে
ডাইনো রাভনিক

14

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

এসরি আর্কজিআইএস সার্ভার এবং ফিচার লেয়ারগুলি ব্যবহার করে অনুরূপ পন্থা বাস্তবায়ন করেছে, যা ফ্লাইতে জ্যামিতিগুলিকে সাধারণীকরণ করতে পারে এবং এটিকে JSON হিসাবে তারের মাধ্যমে প্রেরণ করতে পারে।

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


1
@ নিউনিক - আপনার উত্তরের জন্য ধন্যবাদ তবে মনে হচ্ছে গিসক্লাউড ডট কম কিছু অতিরিক্ত পদ্ধতি ব্যবহার করছে যা তাদেরকে এমন উপাদানগুলির ক্যাশে না করে এমন আশ্চর্যজনক প্রক্রিয়াজাতকরণের ক্ষমতা দেয় যার অর্থ সবকিছুই রিয়েলটাইম is আমি প্রশ্নের একটি অনুগ্রহ যুক্ত করেছি এবং আশা করছি আপনি সম্ভবত গভীরতর সমাধান সরবরাহে অংশ নিতে আগ্রহী। আপনার প্রতিক্রিয়া জন্য এখন পর্যন্ত ধন্যবাদ!
নেটকন্সট্রাক্টর ডট কম

6

আমি ক্যানভাস ব্যবহার করে ওপেনলায়ার্সের সাথে একটি নাটক করেছি এবং যুক্তিসঙ্গত ফলাফল পেয়েছি।

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

আমি একটি সহজ বিতরণ ব্যবস্থা ব্যবহার করেছি। প্রতিটি জ্যামিতি একটি জাভাস্ক্রিপ্ট HTTP প্রতিক্রিয়া মধ্যে জাভাস্ক্রিপ্ট ফাংশন ছিল। টাইল ভিত্তিক ভেক্টর সরবরাহের মতো উন্নত নয়, তবে সহজ এবং ওপেন সোর্স!

আমি ক্যানভাসের সাথে গুগল ম্যাপস ভি 3 চেষ্টা করে দেখতে পেলাম না, তবে নিউইয়র্ক টাইমসের বেশ কয়েকজন ডেমো দেখেছি যা মুগ্ধ করেছে।


এই পদ্ধতির সাথে সমস্যাটি হ'ল 500,000 বহুভুজ নিয়ে কাজ করার সময় এটি সমাধানের মতো
তাত্পর্যপূর্ণভাবে ত্বরান্বিত

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

আপনার লিঙ্কটি অফলাইনে রয়েছে
নেটকন্সট্রাক্টর.কম

হ্যাঁ, সে সম্পর্কে দুঃখিত - আমার "শখ" বহুভুজগুলির সাথে ঝুঁকির 4 বছর পরে এখন শেষ হয়েছে! কয়েক বছর আগে আমার আদমশুমারি ডেমো লাইভ হওয়ার পরে প্রযুক্তি কতটা এগিয়ে এসেছিল তা জিআইএসক্লাউড আপনাকে দেখায় ... আমি উপরের মন্তব্যে এর উল্লেখগুলি সরিয়ে দিয়েছি।
বিয়োগ ৩৪

1
ওয়েল, কখনও বেশী ভালো দেরী! আমি জিনিসগুলি যতটা সম্ভব "বাক্সের বাইরে" হওয়ার জন্য আপডেট করেছি এবং ক্লায়েন্ট সাইড কোডটি গিটহাবে পোস্ট করেছি । নতুন কোডের জন্য সেটআপটি ব্লগ করা হয়েছে । এটি এখন পোস্টজিআইএস থেকে সরাসরি বহুভুজগুলি পড়ছে এবং পোস্টজিআইএসএসইএসটিফুল ওয়েব সার্ভিস ফ্রেমওয়ার্ক ( পিআরডাব্লুএসএফ ) এর মাধ্যমে একটি লিফলেট জাভাস্ক্রিপ্ট এপিআই ক্লায়েন্টের কাছে ফ্লাইয়ের পাতলা প্রয়োগ করে । প্রায় কোনও ব্যাকএন্ড কোডিংয়ের প্রয়োজন নেই!
বিয়োগকাল 34

6

এই সংস্থাটি কোন সমাধানটি ব্যবহার করে ঠিক তা আমি জানি না (আপনি সম্ভবত তাদের সরাসরি জিজ্ঞাসা করতে পারেন) তবে আমার একটি ধারণা আছে।

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


0

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

http://vis.stanford.edu/papers/immens

তাদের কার্টোডিবি প্ল্যাটফর্মের সাথে ভিজুয়ালিটি এবং টর্ক নামক গ্রন্থাগারটি কোনওভাবে কীভাবে উচ্চ পরিমাণের ডেটা আঁকতে পারে তা পরীক্ষা করে নিচ্ছে।

http://cartodb.github.io/torque/
https://github.com/CartoDB/torque/tree/new_torque

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