স্পষ্টালাইট কি আসলেই ধীর?


9

স্পাটিএলাইটে আমার কয়েক হাজার বহুভুজ রয়েছে। আমি একটি "ছোঁয়া" কোয়েরি করার চেষ্টা করছি:

select map1.* from map1,map2
where touches(map1."Geometry",map2."Geometry")

এবং বাহ, এটা কি কম!

তবে, আমি যদি এটি মানচিত্র 1 এ কেবল একটি পার্সেলের জন্য করতে বলি, এটি সত্যিই দ্রুত চলে।

select map1.* from map1,map2
where touches(map1."Geometry",map2."Geometry")
and map1."ROWID" = 753

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


9
স্থানিক গতির উপর কিছু পরীক্ষার জন্য এখানে দেখুন - এটি যদি আপনি সূচকগুলি ব্যবহার করেন তবে একটি বড় ডেটাসেটে একটি ST_Intersected অপারেশনের জন্য 200-গুণ গতি বাড়ানোর পরামর্শ দেয়!
সিম্বামাঙ্গু

লিঙ্ক Fezter জন্য ধন্যবাদ। এই উদাহরণটির সাথে একমাত্র সমস্যাটি ছিল যে একটি বাউন্ডিং বাক্স অন্তর্ভুক্ত করতে তাকে অতিরিক্ত এসকিউএল কোড লিখতে হয়েছিল (এবং, তাকে এটিকে খামে জোর করে চাপাতে হয়েছিল)। এটি চমৎকার হবে যদি স্থানিক সংস্করণের পরবর্তী সংস্করণটি কেবল ইতিমধ্যে বিদ্যমান স্থানিক সূচকগুলি ব্যবহার করে।
আজ

Gis.stackexchange.com এ আপনাকে স্বাগতম! এই সাইটের ফর্ম্যাটটি বোঝায় যে পোস্ট করা উত্তরগুলি মূল প্রশ্নের উত্তর হওয়া উচিত। কোনও উত্তরের উত্তর দেওয়ার সময় বা মন্তব্যে মন্তব্য করা ভাল best
শন

উত্তর:


16

না, স্পাটিএলাইট এত ধীর নয়, আপনার কেবল একটি স্থানিক সূচক ব্যবহার করা দরকার। এসকিউএল ডিজাইনের সীমাবদ্ধতার কারণে, কোয়েরিতে একটি স্থানিক সূচক ব্যবহার করা পোস্টজিআইএস-এর মতো অদৃশ্য নয়।

এখানে স্পাটিএলাইট কুকবুক http://www.gaia-gis.it/spatialite-3.0.0-BETA/spatialite-cookbook/html/neighbours.html থেকে পরিবর্তিত একটি উদাহরণ রয়েছে

আপনার বহুভুজ ডেটা সেটগুলিতে স্থানিক সূচক তৈরির পরে

    SELECT map1.*
      FROM map1, map2
     WHERE ST_Touches(map1.geometry, map2.geometry)
       AND map2.ROWID IN (
           SELECT pkid
             FROM idx_map1_geometry
            WHERE pkid MATCH RTreeIntersects(
                  MbrMinX(map1.geometry),
                  MbrMinY(map1.geometry),
                  MbrMaxX(map1.geometry),
                  MbrMaxY(map1.geometry)));

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

আমার বোধগম্যতা হ'ল সমস্যাটি এসকিউএলাইটের আর্কিটেকচারের অন্তর্নিহিত। আপনি অবশ্যই আরও প্রশ্ন সহ স্পাতিয়ালাইট গুগল গ্রুপে পোস্ট করতে পারেন। groups.google.com/forum/?fromgroups#!forum/spatialite-users
ডেভিডএফ

নোট করুন যে স্প্যাটিয়ালাইটের সর্বশেষতম সংস্করণগুলি একটি ভার্চুয়াল স্পেসিয়াল সূচক কার্যকর করে এবং উপরের সিনট্যাক্সটি আর কাজ করে না। WHWEE ধারাটি যেখানে WH2E map2.ROWID এ লিখতে হবে (স্প্যাটাল ইন্ডেক্স থেকে রাউন্ডটি নির্বাচন করুন যেখানে f_table_name = 'map1' এবং অনুসন্ধান_ফ্রেম = map1.geometry)
rudivonstaden

4

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


"আশ্চর্যরূপে" নয়, সাধারণ প্রশ্নগুলি এসকিউএলাইটে মাইএসকিউএল ইনোডিবি ইঞ্জিনের চেয়ে প্রায় 2 than 3 × দ্রুত চালিত হয়।
মিশা লিওন

3

আমি এই সম্পর্কে কিছুক্ষণ আগে একটি ব্লগ লিখেছিলাম। Http://www.frogmouth.net/blog/?p=23 দেখুন

মিশাও এই বিষয়টিতে একটি আকর্ষণীয় ব্লগ লিখেছিলেন ।

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