কীভাবে JSON নথিতে লাইন এবং বহুভুজ সংরক্ষণ করবেন?


24

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


6
মঙ্গোডিবি বর্তমানে পয়েন্ট ব্যতীত অন্য কোনও বিষয়কে সূচকে সমর্থন করে না এবং এর স্থানিক ক্রিয়াকলাপ সীমার মধ্যে সীমাবদ্ধ।
স্ক্রু

উত্তর:


16

GeoJSON এখানে আছেন চশমা

এখানে একটি লাইন এবং বহুভুজ উদাহরণ:

{ "type": "FeatureCollection",
  "features": [
    { "type": "Feature",
      "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
      "properties": {"prop0": "value0"}
      },
    { "type": "Feature",
      "geometry": {
        "type": "LineString",
        "coordinates": [
          [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
          ]
        },
      "properties": {
        "prop0": "value0",
        "prop1": 0.0
        }
      },
    { "type": "Feature",
       "geometry": {
         "type": "Polygon",
         "coordinates": [
           [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
             [100.0, 1.0], [100.0, 0.0] ]
           ]
       },
       "properties": {
         "prop0": "value0",
         "prop1": {"this": "that"}
         }
       }
     ]
   }

9

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

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

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

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

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


9

এই কেবল সত্য নয়,

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

আমার কাছে ইউএসজিএস পয়েন্টের ডেটা একক মঙ্গো সংগ্রহে রেকর্ড রয়েছে যা দেখতে দেখতে এটি সংরক্ষণ করে:

> db.names.find({FEATURE_NAME: 'Mount Saint Helens', STATE_ALPHA: 'WA'})       
{ "_id" : ObjectId("4e262106d7a99b7db41a4919"), 
"_ID" : 1525360, 
"FEATURE_NAME" : "Mount Saint Helens", 
"FEATURE_CLASS" : "Summit", 
"STATE_ALPHA" : "WA", 
"STATE_FIPS" : 53, 
"COUNTY_NAME" : "Skamania", 
"COUNTY_FIPS" : "059", 
"COORDS" : [ -122.1944, 46.1912 ], 
"ELEV_IN_FT" : "8356" }

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

প্রশ্ন:

> box = [[-126.562500,45.089036], [-123.750000,47.040182]]
[ [ -126.5625, 45.089036 ], [ -123.75, 47.040182 ] ]
> db.names.find({"COORDS" : {"$within" : {"$box" : box}}, FEATURE_CLASS: "Summit"}, {FEATURE_NAME: true, COUNTY_NAME: true, STATE_ALPHA: true, ELEV_IN_FEET: true}).limit(5);

প্রতিক্রিয়া:

{ "_id" : ObjectId("4e2620f8d7a99b7db4146cec"), "FEATURE_NAME" : "Harlocker Hill", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Coos" }
{ "_id" : ObjectId("4e2620f8d7a99b7db414a349"), "FEATURE_NAME" : "Neskowin Crest", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Tillamook" }
{ "_id" : ObjectId("4e2620f8d7a99b7db414a105"), "FEATURE_NAME" : "Miles Mountain", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Tillamook" }
{ "_id" : ObjectId("4e2620f8d7a99b7db414934a"), "FEATURE_NAME" : "Mount Gauldy", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Tillamook" }
{ "_id" : ObjectId("4e2620f8d7a99b7db4149d06"), "FEATURE_NAME" : "Little Hebo", "STATE_ALPHA" : "OR", "COUNTY_NAME" : "Yamhill" }

মোঙ্গো নিকটতম প্রতিবেশী অনুসন্ধানগুলি করার পাশাপাশি বহুভুজ অনুসন্ধানে পয়েন্ট করার ক্ষমতাও সরবরাহ করে। এটি mongodb.org এ ভালভাবে নথিভুক্ত করা হয়


ক্ষমাপ্রার্থী তবে আমি বিভ্রান্ত, মোংগোডিবি লাইন এবং বহুভুজ বৈশিষ্ট্য সংগ্রহের জন্য একটি স্থানিক সূচক তৈরি করতে পারে বা করতে পারে না?
ডেরেক সুইংলে

2
এটি এই মুহুর্তে লাইন এবং বহুভুজ বৈশিষ্ট্যগুলিতে একটি স্থানিক সূচক তৈরি করতে পারে না। যাইহোক, যদি আপনি কোয়েরির অংশ হিসাবে বহুভুজ জ্যামিতি সরবরাহ করেন তবে এটি কোনও পয়েন্টের সাথে একটি টেবিলের মধ্যে পয়েন্ট-ইন-বহুভুজ অনুসন্ধান করতে পারে। mongodb.org/display/DOCS/…
lagerratrobe

1
ঠিক আছে, সুতরাং এই উক্তিটি: "জিওজসন একটি দুর্দান্ত ফর্ম্যাট, তবে মংগোর মধ্যে সীমিত (পয়েন্ট-কেবল) স্থানিক সূচকের সুবিধা নিতে" সত্য সত্য কারণ মঙ্গো কেবল স্থানিকভাবে সূচক পয়েন্ট করতে পারে।
ডেরেক সুইংলে

আমি আপনাকে সম্মতি দিচ্ছি যে সেই বাক্যটির একটি অংশ সঠিক, "সীমাবদ্ধ (কেবলমাত্র পয়েন্ট) স্থানিক সূচকগুলি"। সুতরাং 71 শব্দগুলির মধ্যে 5 বা 7%। এটি এর 93% ভুল রয়েছে। আমি আমার বক্তব্য পিছনে দাঁড়িয়ে।
lagerratrobe

1
আপনি কি নিজের উত্তরটি পরিষ্কার করতে পারবেন? যেমনটি, এটি বিভ্রান্তিকর এবং বিভ্রান্তিকর। বিবৃতিটির অন্যান্য অংশ সম্পর্কে, মূলত এটি কেবল অ-পয়েন্ট ডেটার জন্য একটি স্থানিক সূচি বাস্তবায়নের জন্য একটি পরামর্শ নয়? এটি আদর্শ বা অনুকূল নাও হতে পারে তবে এটি কেবল একটি পরামর্শ। আপনি কেন এই বিবৃতিটির বেশিরভাগটি ভুল বলে ব্যাখ্যা করেছেন তাও সহায়তা করবে।
ডেরেক সুইংলে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.