কীভাবে আরআরটি শেষ পয়েন্টগুলি নেভিগেট করা যায় এবং ক্ষেত্রের তথ্যটি অগ্রগতিতে পুনরুদ্ধার করা যায়


9

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

Http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/ হোমল্যান্ডসিকিউরিটি / অপারেশনস / ম্যাপ সার্ভারে নমুনা আরকিজিআইএস সার্ভার পরিষেবাদি ডিরেক্টরিটি দেখুন

আপনি যদি কোনও ব্রাউজারে এই URL টি খুলেন তবে আপনি উপলব্ধ স্তরগুলির তালিকা (0,1,2) এবং প্রতিটি স্তরের ক্ষেত্র দেখতে পাবেন

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

(একটি বিকল্প হ'ল স্তরগুলি বৈশিষ্ট্য স্তর হিসাবে যুক্ত করা, তবে আমি যদি সম্ভব হয় তবে এটি এড়াতে পছন্দ করব)।

var url = "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/HomelandSecurity/operations/MapServer/";
var dynLayer = new esri.layers.ArcGISDynamicMapServiceLayer(url);
map.addLayer(dynLayer);

dojo.connect(dynLayer, "onLoad", function() {
   var infos = dynLayer.layerInfos;
   for (var i = 0; i <= infos.length - 1; i++) {
       var layerId = infos[i].id;
       var restEndPoint = url + layerId;
       //restEndPoint is the layer's URL - how can I retrieve its fields?
   }
});

ধন্যবাদ, স্টিভ ( আর্কজিআইএস সার্ভার ফোরামে ক্রস পোস্ট )

উত্তর:


6

ক্ষেত্রগুলি সম্পর্কে তথ্য পেতে প্রতিটি স্তরের REST শেষ পয়েন্টে আঘাত করতে esri.request () ব্যবহার করুন। এখানে একটি সাধারণ উদাহরণ:

<html>
  <head>
    <script type="text/javascript">var djConfig = {parseOnLoad: true};</script>
    <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.4"></script>
    <script type="text/javascript">
      dojo.require("esri.map");
      // var service_url = 'http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Hurricanes/NOAA_Tracks_1851_2007/MapServer/layers';
      var service_url = 'http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/MapServer/layers';

      function init() {
        esri.request({
          url: service_url,
          content: { f: 'json' },
          callbackParamName: 'callback',
          load: processServiceInfo,
          error: errorHandler
        });
      }
      // Runs once
      function processServiceInfo(info) {
        console.log('svc info: ', info);
        dojo.byId('info').innerHTML = '';
        dojo.forEach(info.layers, function(lyr) {

          // Add a new div for each Layer
          var lyr_div = dojo.create('div', { 
            id: 'layer_' + lyr.id,
            innerHTML: '<strong>Layer: ' + lyr.name + '</strong><br />'
          }, dojo.byId('info'));

          dojo.forEach(lyr.fields, function(field) {
            lyr_div.innerHTML += 'Name: ' + field.name + '; Alias: ' + field.alias + '<br />';
          });
        });
      }

      function errorHandler(err) {
        console.log('error: ', err);
      }

      dojo.ready(init);
    </script>
  </head>
  <body>
    <div id="info">field names and aliases will show up here.</div>
  </body>
</html>

এই কোডটি API এর v2.0 ব্যবহার করে তবে একই জিনিসটি 2.3 বা 2.4 এ কাজ করবে। আমি মূলত এসরি জেএস এপিআই ফোরামে পোস্ট করেছি ।

সম্পাদনা করুন: কোনও পরিষেবায় সমস্ত স্তর হ্যান্ডেল করার জন্য আপডেট হয়েছে। কোডটি এখন এপিআইয়ের ২.৪ সংস্করণও ব্যবহার করে।


+1 দেখতে ভাল লাগছে। যেহেতু ব্যবহারকারীর 3 স্তর রয়েছে, তাই প্রতিটি স্তরের জন্য ফিল্ডসইনিট ফাংশনটি কল করা উপকারী হতে পারে।
কर्क কুইকেনডাল

esri.request যাওয়ার উপায়, তবে পৃথক স্তরগুলি অনুসন্ধান করার পরিবর্তে, ইউআরএল হিসাবে http: // / / ম্যাপসভার / লেয়ার্স? এফ = জেসন ব্যবহার করে একবারে একবারে এগুলি সম্পর্কে জিজ্ঞাসা করুন।
সাসা আইভেটিক

আপনার সবার মাঝে আমার মনে হয় আমাদের দুর্দান্ত উত্তর রয়েছে :) @ ডেরিক আপনি কি সাসার পরামর্শ অনুসারে সমস্ত স্তর হ্যান্ডেল করার জন্য কোডটি সম্পাদনা করতে পারবেন এবং আমি এটি স্বীকৃত হিসাবে চিহ্নিত করব? সবাইকে ধন্যবাদ
স্টিফেন

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

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

0

আমার এখানে স্টিকের ভুল প্রান্ত থাকতে পারে, তবে আপনি কি কেবল প্রশ্নযুক্ত স্তরটিতে একটি ক্যোয়ারী সম্পাদন করছেন না এবং ফলাফলসেট হিসাবে ফলাফলগুলি ফিরে পান না? আপনি যদি জসনে এটির জন্য জিজ্ঞাসা করেন, আপনি ফলাফলগুলি পার্স করতে পারেন?

সুতরাং এটির জন্য:

http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/1/query?where=STATE_NAME%3D%27Florida%27&f=json

রিটার্নটি হ'ল:

{ "DisplayFieldName": "STATE_NAME- এ", "fieldAliases": { "STATE_NAME- এ": "STATE_NAME- এ"}, "geometryType": "esriGeometryPolygon", "spatialReference": { "wkid": 4326}, "ক্ষেত্র": [{ " নাম ":" STATE_NAME- এ "," টাইপ ":" esriFieldTypeString "," ওরফে ":" STATE_NAME- এ "," দৈর্ঘ্য ": 25}]," বৈশিষ্ট্য ": [{" বৈশিষ্ট্যাবলী ": {" STATE_NAME- এ ":" ফ্লোরিডা "} , "জ্যামিতি": {"রিং": [[[- 80.785662408630856,28.785194039580265], ... [-80.5878197219821,24.956376399079556], [- 80.249453677873134,25.3549372313288]]]

(আমি পড়তে সহজ করে তুলতে বেশিরভাগ জ্যামিতি সরিয়ে ফেলেছি)


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

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

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

এইভাবেই আমি এটির কাছে
হিরি

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