ওপেনলায়ার্স বিকল্প আরও ক্লায়েন্ট-পার্শ্ব বৈশিষ্ট্যগুলি সমর্থন করে [বন্ধ]


14

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

আমি 10 টি পর্যন্ত বিভিন্ন প্রতীক সহ ক্লিক এবং মাউস-ওভার হ্যান্ডলারের সাথে এবং কম সক্ষম প্ল্যাটফর্মগুলিতে 1000 টি বৈশিষ্ট্য দেখানোর প্রত্যাশা করছি।

আমি আরও ভাল ক্লায়েন্ট-পার্শ্বের পারফরম্যান্সের জন্য আশা করছিলাম, বিশেষত এই জিআইএস ক্লাউড উদাহরণটি দেখার পরে - আমি জানি এটি ভিন্নভাবে কাজ করে (HTML5 ক্যানভাস বনাম এসভিজি) তবে পারফরম্যান্সের পার্থক্যটি সত্যিই আকর্ষণীয়।

আমার মূল প্রশ্নগুলি (আপনি যদি দয়াবান হন) হ'ল:

  1. আপনি লিখেছেন / ব্যবহার করেছেন এমন অন্যান্য ওপেনলায়ার অ্যাপ্লিকেশনগুলিতে কি এলোমেলো পয়েন্ট উত্পন্ন অ্যাপ্লিকেশন প্রতিনিধি?
  2. এমন কোনও প্রমাণিত এবং নিখরচায় বিকল্প ওয়েব ম্যাপিং এপিআই আছে যা ডাব্লুএমএস পরিষেবাদি (যা আমার ব্যবহার করা দরকার) সমর্থন করে এবং ফ্ল্যাশ / সিলভারলাইট / অন্য কোনও প্লাগইন ব্যবহার না করে ক্লায়েন্ট-সাইড বৈশিষ্ট্যগুলির সাথে দ্রুততর?
  3. আমার তদন্ত করা উচিত সে সম্পর্কে অন্য কোনও পরামর্শ?

সার্ভার-সাইড রেন্ডারিংয়ের উপর প্রাথমিকভাবে নির্ভর করা একটি বিকল্প তবে আমি এবং ক্লায়েন্ট উভয়ই এড়াতে চাই ব্যবহারকারীদের স্কেলিং-আপ এবং ইউআইয়ের প্রতিক্রিয়া নিয়ে উদ্বেগের কারণে avoid


আমার 5 বছরের পুরনো ডুয়াল কোর, 3 জিবি র‌্যাম ডেস্কটপে ফায়ারফক্স 8 এ অ্যাপটি ব্যবহার করে (1 জিবি লিনাক্স ডিস্ট্রো আইএসও ডাউনলোড করার সময়), 1,000 পয়েন্টগুলি তাত্ক্ষণিকভাবে আঁকবে, কোনও লড়াই নয় ... 10,000 প্রায় 1.5 সেকেন্ড লাগে।
ব্যবহারকারী2856

@ লুকপিনার কি কেবল দ্রুত অঙ্কন করছে * এবং প্যানিং / মসৃণভাবে জুমিং করছে? ডেটা পুনরুদ্ধার করা এবং বৈশিষ্ট্যগুলি আঁকানো আমার পক্ষেও ভাল, তবে এটি মানচিত্রের ইন্টারঅ্যাকশনই এটিই সমস্যা।
tomfumb

আমি কেবলমাত্র আমার আইপ্যাড 2 এ আপনার অ্যাপ্লিকেশনটি চেষ্টা করেছি এবং এটি 1000 পয়েন্ট খুব ভালভাবে পরিচালনা করেছে। 10 কে পয়েন্ট সহ এটি প্রাথমিকভাবে রেন্ডার করতে কয়েক সেকেন্ড সময় নেয় তবে এটি বেশ ভালভাবে কপি করে। আপনি যদি চান সর্বদা ওএল ভেক্টর স্তর শ্রেণি সাবক্লাস করতে পারেন এবং একটি কাস্টম প্রয়োগ করতে পারেন। আমি আপনাকে একটি উদাহরণ নির্দেশ করতে পারি।
ইউনিকোলেটি

হ্যাঁ, প্যানিং / জুম করতে কোনও সমস্যা নেই। 1 কে পয়েন্টগুলি আমার 1.6ghz এ্যাটম নেটবুকটিতে যদিও কিছুটা ধীরে ধীরে কমবে :)
ব্যবহারকারীর 858

উত্তর:


23

প্রথম প্রশ্নের উত্তর হ্যাঁ । আপনি বেশ সাধারণ কনফিগারেশন সহ ওএল ব্যবহার করছেন। পারফরম্যান্স উন্নত করতে আপনি এমন কৌশলগুলি ব্যবহার করতে পারেন, আমি পরে তা পেয়ে যাব।

প্রশ্ন 2 এর উত্তর হতে পারে (বিশেষত দৃness়তার সাথে সম্পর্কিত)। আপনি বিকল্পগুলির একটি তালিকার জন্য এই সাইটটি অনুসন্ধান করতে পারেন (এখনই মনে রাখে এমন একটি লিফলেট )।

প্রশ্নের 3 এর উত্তর: পরিমাপ দিয়ে শুরু করুন:

আমি অ্যাপ্লিকেশনটির একটি স্থানীয় অনুলিপি সম্পাদনা করেছি যাতে রেন্ডারার স্পষ্টভাবে ভেক্টর স্তরের বিকল্প তালিকাতে নির্দিষ্ট করা থাকে। পরীক্ষাগুলির সময় আমি ক্যানভাস রেন্ডারারকে বাদ দিতে পারি এবং তারপরে পরীক্ষাকে ভিন্ন একটি দিয়ে পুনরায় লোড করতাম:

var pts = new OpenLayers.Layer.Vector("Points", {renderers: ["Canvas", "SVG", "VML"]});

আমি পুনরায় আঁকা ফাংশনে একটি টাইমার যুক্ত করেছি যাতে এটি অঙ্কন করতে কত সময় ব্যয় করেছে তা মুদ্রণ করে :

function redraw() {
var start = (new Date).getTime();
[...]
var diff = (new Date).getTime() - start;
console.log("redraw completed in "+diff+"ms");

এর পরে আমি ওএসএক্স এসএল অঙ্কন 1000 এবং 5000 বৈশিষ্ট্যগুলিতে ক্রোম 17 এবং ফায়ারফক্স 8.0.1 উভয়টিতে বেশ কয়েকটি রান চেষ্টা করেছি। আমার অবাক করার জন্য এসভিজি রেন্ডারার ক্যানভাস রেন্ডারারের তুলনায় গড়ে 20% দ্রুত! (দ্রষ্টব্য: উইন্ডোজ জেএসের সময় ওএসএক্সের মতো যথাযথ নয় তাই ফলাফলগুলি কম সামঞ্জস্যপূর্ণ হতে পারে)।

এই এবং আপনার বলার

এটি মানচিত্রের মিথস্ক্রিয়া যা সমস্যা

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

আপনার বিকল্পগুলি হ'ল সুবিধা / খরচের জন্য:

প্রথম বিকল্পটি নীচের মতো ভেক্টর স্তরটিতে কৌশল বিকল্পটি কনফিগার করে দৃশ্যমান পয়েন্টগুলি সার্ভার-সাইড ফিল্টার করা উচিত :

 strategies: [new OpenLayers.Strategy.Refresh({force:true}), new OpenLayers.Strategy.BBOX({ratio:2, resFactor: 3})],

আপনি যখন ক্লায়েন্ট পক্ষের আঁকেন এমন বৈশিষ্ট্যগুলির সংখ্যা জুম করবেন তখন এই পরিবর্তে সকলের পরিবর্তে সেই পরিমাণে সীমাবদ্ধ থাকবে।

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

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


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

1
আমি আমার প্রজেক্টে ব্যবহৃত ভেক্টর / ক্যানভাস রেন্ডারির ​​একটি লিঙ্ক যুক্ত করেছি।
unicoletti

বাহ স্ট্রিপ ডাউন উদাহরণ একটি বিশাল পার্থক্য তোলে, এটি সত্যিই চিত্তাকর্ষক। আমি 10,000 বৈশিষ্ট্যের সাথে 10,000 থেকে বিমানের সাথে লড়াই করতে গিয়েছিলাম
টমফম্ব

আমি ওএল ক্যানভাস রেন্ডারার এবং পয়েন্টগুলির জন্য একটি কঠিন ফিল ব্যবহার করতে প্রথম উদাহরণটি (swingley.appspot.com) সংশোধন করেছি এবং জুম এবং প্যান পারফরম্যান্সটি আসলে আপনার ট্যাগক্যানভাস এবং ট্যাগভেেক্টরের সাথে খুব মিল। আপনি আপনার পরিবর্তনগুলিতে মুছে ফেলা হিট-পরীক্ষা কার্যকারিতাটি আবারও প্রয়োগ করেছিলাম যাতে আমি তুলনামূলক পারফরম্যান্স পরীক্ষা করতে পারি - ট্যাগ * পন্থাটি কোন বৈশিষ্ট্যটি (5000 এর বাইরে) আঘাত পেয়েছিল তা সনাক্ত করতে প্রায় 20% দ্রুত ছিল। কাস্টম ক্লাসগুলি লেখার / আপডেট করার ক্ষেত্রে গুরুত্বপূর্ণ প্রচেষ্টা এবং একইরকম পারফরম্যান্স দেওয়া (আমার পরীক্ষাগুলিতে), আমি মনে করি আমি ভ্যানিলা ওএল কী করতে পারে তা দেখতে পাচ্ছি
টমফম্ব

কারণ হিট-পরীক্ষা সমস্ত বৈশিষ্ট্যগুলিকে অন্য ক্যানভাসে পুনরায় আঁকায়, সুতরাং প্রতিটি রিফ্রেশের সাথে সেগুলি দুবার আঁকানো হয়।
unicoletti

0

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

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