اعلانات انجمن


ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
نمایش داده های بزرگ در نقشه
نویسنده پیام
kamranghiasvand آفلاین
کاربر عادی
*

ارسال‌ها: 32
تاریخ عضویت: تير ۱۳۹۳
اعتبار: 2
ارسال: #1
نمایش داده های بزرگ در نقشه
سلام.من بر روی یه نرم افزار کار میکنم که قراره با داده های حجیم کار کنه. مثلا نزدیک به یک میلیون رکورد. از داده ها لایه بسازه و نمایش بده و اونا رو تبدیل به یه سرویس روی arc Server کنه. داده ها از حساسیت امنیتی برخورداره که قراره حق دسترسی براشون تعریف کنیم. من از ArcGis runtime for wpf استفاده میکنم. چون Arc Server به ما امکان تعیین حق دسترسی میده اولین راهی که من انتخاب کردم این بود که بعد از دریافت داده ها، اونا رو تبدیل به یه لایه گرافیکی روی نقشه کنم. بعد از اینکه کاربر لایه رو مشاهده کرد و تغییرات مورد نیازش رو اعمال کرد، داده ها رو توی یه دیتابیس میریزم و از روی اون یه فایل mxd تولید میکنم. بعد از اینکه این فایل ایجاد شد، برای پابلیش کردنش اقدام میکنم و اگر خطایی نداشته باشه یه سرویس روی Arc Server ایجاد میکنم. اما این روش به چند دلیل مشکل داشت. اول اینکه وقتی حجم داده ها بالا باشه عملا زمان زیادی میگیره. دوم اینکه این سرویس ایجاد شده باید قابلیت تغییر داشته باشه. یعنی بشه لایه های جدید بهش اضافه کرد یا ازش حذف کرد. فرض کنید ده ها کاربر همزمان میخان این تغییرات رو ایجاد کنن. نمیشه که یه سرویس رو به ازای هر لایه جدید که اضافه میشه دوباره پابلیش کنم!!!!! راه دوم که به ذهنم رسید اینکه بعد از دریافت داده ها از کاربر اونا رو تبدیل به shapefile کنم و به هر کاربری که حق دسترسی داره تحویل بدم تا خودش (سمت کلاینت) این فایل ها رو به نقشه اضافه کنه    در واقع سمت کلاینت یه workspace داینامیک ایجاد میکنم و از shapefile ها یه feature layer درون ورک اسپیس اضافه میکنم و بعد به نقشه اضافه اش میکنم. اما این راه هم با مشکل کندی سرعت مواجه است. اول اینکه راه سریعی برای تولید shapefile ندارم. دوم اینکه نمایش یک میلیون نقطه روی نقشه خیلی زمان میگیره. سوالم اینکه کسی راهی   برای نمایش این حجم از داده روی نقشه عملا داره. چطوری میتونم این کار رو بکنم. اگه ArcObjects گزینه بهتریه چطوری میتونم از اون استفاده کنم؟ از اونجایی که کاملا منفعل شدم از هر کمکی بسیار بسیار تشکر میکنم
 
۹-۷-۱۳۹۳ ۰۴:۴۵ عصر
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در یک پاسخ
دنکوب آفلاین
کاربر عادی
*

ارسال‌ها: 8
تاریخ عضویت: اسف ۱۳۹۳
اعتبار: 9
ارسال: #2
RE: نمایش داده های بزرگ در نقشه
من این پیشنهاد رو بهتون می کنم.
شما اگر یک میلیون نقطه رو هم وارد نقشه کنی عمراً کاربر بتونه اونها رو در مقیاس پایین از هم تفکیک کنه.
درسته.
نتیجه. نمایش نقاط رو محدود به زوم کن. یعنی یک کوئری که با توجه به مقیاس و Active View رنج خاصی از نقاط
رو به کاربر نشون بده. اینطوری دقیقاً مثل نقشه هایی که حتماً تا حالا در وب دیدی عمل می کنی.
البته این نظر منه که اونها این کار رو می کنن. و مطمئن باش اینطوری رنج نقاط صفحه نمایش به 10000 تا هم نمی رسه.
و حتی شاید خیلی هم کمتر. البته به شرط اینکه کوئری رو صحیح اعمال کنی.
موضوع رو براتون کمی روشن تر می کنم.
تعداد کل پیکسل های صفحه نمایش من 1000000 هستش. که اگر صفحه مورد نظر شما رو بخوام ببینم مطمئناً در گستره ی
تا 700000 پیکسل از صفحه نمایش من خواهد بود. و با فرض اینکه هر نقطه از نظر گرافیکی بین 16 و یا 25 و یا 36 پیکسل رو به خودش
اختصاص میده رنج نقاط شما میشه بین 43750 و 28000 و 19444 که با این فرضیات همچنان کاربر نمی تونه نقاط رو از هم تفکیک کنه.
به همین خاطر بایسی به اندازه ی یک پیکسل بین نقاط تمیز داده بشه که تعداد پیکسل ها بین 17و26و37 تغییر می کنه و کمترین تعداد
نقاط فرضیه ی ما میشه 18918 تا که این با فرض تراکم یکسانه نقاط هستش.
نتیجه کوئری که منظور من هست اونقدر ها هم ساده نوشته نمیشه. اما از نظر من از فرضیه جلوتر هست.
و میشه اون رو عملی کرد. به طوری که در مقیاس های مختلف حتی می تونید با یه الگوریتم حساب شده با توجه به تعداد
محدود پرش های زوم بانک نقاط رو هم در مقیاس های مختلف تفکیک کنید. که این از نظر من پیشنهاد نمیشه چون اینجا بحث
نمایش نقاط در کار هست و کوئری حساب شده ی شما خیلی سریعتر روی بانک عمل می کنه.
البته اگر به جای موضوع تفکیک بانکمون بیایم با افزودن یک فیلد جدید که حاصل نتیجه ی الگوریتم یا کوئریمون هست موضوع رو مرتفع
کنیم اینطوری خیلی خیلی بهتر خواهد شد. که اگر سر افزایش حجم بانک با این موضوع مشکل دارید همون راه اول پیشنهاد میشه.
(آخرین ویرایش در این ارسال: ۲۰-۱۲-۱۳۹۳ ۱۲:۱۴ عصر، توسط دنکوب.)
۱۹-۱۲-۱۳۹۳ ۱۱:۰۵ عصر
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در یک پاسخ
 اعتبار داده شده توسط : ادمین(+1)
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان