গুগল ম্যাপে কোনও বিন্দু স্থল বা জল কিনা তা যাচাই করুন


106

.. এবং তারপরে গুগল-ম্যাপস "জলের থেকে জলগুলি ভাগ করুন"

ঠিক আছে, বাইবেলিক অর্থে নয় তবে ..

[ল্যাট, লোন] এর একটি বিন্দু ভূমি বা জল কিনা তা যাচাই করার জন্য আমার কাছে কী বিকল্প রয়েছে তা জানতে চাই।

গুগল ম্যাপের স্পষ্টতই এই ডেটা রয়েছে (জলের দেহগুলি নীল) - তবে এপিআই-তে এমন কিছু আছে যা আমি এর জন্য ব্যবহার করতে পারি? এবং যদি না - তারা কি এটি পরিবেশন করছে না কারণ তারা কখনও তা ভেবে দেখেনি? নাকি খুব জটিল?

আমি এখানে কিছু অনুরূপ প্রশ্ন (যেমন ভূখণ্ডের ধরন বা উচ্চতা সন্ধানের মতো - তবে এটি আমার প্রয়োজন ঠিক তেমন নয়) ব্যতীত আমি কোনও তথ্য পাইনি।

তার জন্য কি আলাদা স্তর রয়েছে? একটি বিকল্প? কমান্ড? নাকি আমি নিজেই তা করতে যাব?

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

একটি প্রস্তুত তৈরি সমাধান অনেক সহজ হবে।

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

আমি সম্পাদনা করুন

মন্তব্যগুলি পড়ার পরে: উচ্চতা পদ্ধতিটি নির্ভরযোগ্য নয়, সমুদ্রপৃষ্ঠের নীচে অনেকগুলি জায়গা রয়েছে (আপনি এখানে "গভীরতম" 10 টির একটি তালিকা দেখতে পারেন http://geology.com/below-sea-level/ এবং সেখানে) সমুদ্রপৃষ্ঠ (হ্রদ) উপরে অনেকগুলি স্থল-জলাবদ্ধ জলাশয়। বিপরীত জিওলোকেশন পদ্ধতিটি নির্ভরযোগ্য নয় কারণ এটি একটি ভূ-রাজনৈতিক সত্তা, যেমন শহর, বা রাজ্য - বা জিরোকে বহুবার ফিরিয়ে দেবে। প্রশ্ন জিজ্ঞাসার আগে আমি সেই ছদ্ম-সমাধানগুলি ইতিমধ্যে দেখেছি - তবে তাদের কেউই আসলে প্রশ্নের উত্তর দেয়নি - এই পদ্ধতিগুলি সর্বোত্তমভাবে "অনুমান করা" খারাপ।


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

ধন্যবাদ, আমি ইতিমধ্যে এটি সম্পর্কে ভেবে দেখেছি - তবে আপনি যেমন বলেছিলেন - পৃথিবীতে সমুদ্রপৃষ্ঠের নীচে অনেকগুলি বিন্দু রয়েছে - সেগুলি বাদ দেওয়া কোনও কার্যকর সমাধান নয় ..
ওবর্মক ক্রোনেন


GIS.SE এর জন্য আরও ভাল ফিট হতে পারে? অনুগ্রহ শেষ হয়ে গেলে আপনি স্থানান্তর করতে পারেন।
টিএমএস

আপনি যেমন উত্তর পেয়েছেন, তেমন আমার কিছুই বলার নেই .. তবে, যদি জলের ডেটা বা জিআইএসের তথ্য অনুসন্ধান করা হয় তবে আমাদের পৃথক ডোমেন http://gis.stackexchange.com/ এ আলাদা আলোচনা চলছে Here , আপনি জলের তথ্য সহ আপনার প্রয়োজনীয় অনেকগুলি জিনিস খুঁজে পাবেন .. যা আপনাকে ক্ষেত্রে সহায়তা করবে .. (যদি প্রয়োজন হয় ..) পুরানো পোস্ট আমি আশা করি এটি সাহায্য করবে ..
মার্মিক

উত্তর:


55

এটি 2 টি ভিন্ন উপায়, আপনি চেষ্টা করতে পারেন:

  • আপনি গুগল মানচিত্রের বিপরীত জিওকোডিং ব্যবহার করতে পারেন । ফলস্বরূপ সেটটি পরীক্ষা করে আপনি নির্ধারণ করতে পারেন যে এটি জল কিনা types। জলের ক্ষেত্রে প্রকারটি natural_feature। এই লিঙ্কটিতে আরও দেখুন http://code.google.com/apis/maps/docamentation/geocoding/# টিপস

    Sea, Lake, Oceanআরও নির্ভুলতার জন্য আপনার বৈশিষ্ট্যগুলির নাম, যদি সেগুলি এবং জলের সাথে সম্পর্কিত কিছু অন্যান্য শব্দ থাকে তবে এটি পরীক্ষা করতে হবে । উদাহরণস্বরূপ মরুভূমিগুলিও natural_featureএস।

    পেশাদাররা - সমস্ত সনাক্তকরণ প্রক্রিয়া ক্লায়েন্টের মেশিনে করা হবে। নিজস্ব সার্ভার সাইড পরিষেবা তৈরি করার দরকার নেই।

    কনস - খুব ভুল এবং আপনি পানিতে "কিছুই না" পাওয়ার সম্ভাবনা খুব বেশি।

  • গুগল স্ট্যাটিক মানচিত্র ব্যবহার করে আপনি পিক্সেল দ্বারা জলের / জমিগুলি সনাক্ত করতে পারেন । তবে এই উদ্দেশ্যে আপনাকে http পরিষেবা তৈরি করতে হবে।

    আপনার পরিষেবাটি অবশ্যই এই পদক্ষেপগুলি সম্পাদন করবে:

    1. গ্রহণ latitude, longitudeএবং current zoomক্লায়েন্ট থেকে।
    2. পাঠান http://maps.googleapis.com/maps/api/staticmap?center={অক্ষাংশ ,দ্রাঘিমাংশ }&zoom={বর্তমান zoom`} এবং আকার = 1x1 & maptype = রোডম্যাপ & সেন্সর = গুগল স্ট্যাটিক ম্যাপ সেবার মিথ্যা অনুরোধ।
    3. পিক্সেলের 1x1 স্ট্যাটিক চিত্রের রঙ সনাক্ত করুন।
    4. সনাক্তকরণ সম্পর্কে একটি তথ্য প্রতিক্রিয়া।

    আপনি ক্লায়েন্টের দিক থেকে পিক্সেলের রঙ সনাক্ত করতে পারবেন না। হ্যাঁ, আপনি ক্লায়েন্টের মেশিনে স্থিতিশীল চিত্র লোড করতে এবং canvasউপাদানটিতে চিত্র আঁকতে পারেন । তবে আপনি getImageDataপিক্সেলের রঙ পাওয়ার জন্য ক্যানভাসের প্রসঙ্গটি ব্যবহার করতে পারবেন না । এটি ক্রস ডোমেন নীতি দ্বারা সীমাবদ্ধ।

    প্রোনস - অত্যন্ত সঠিক সনাক্তকরণ

    কনস - সনাক্তকরণের জন্য নিজস্ব সার্ভার সংস্থান ব্যবহার


2
ধন্যবাদ - আমি ইতিমধ্যে এটি পরীক্ষা করে দেখেছি - আমি জানতাম না যে প্রকারগুলি সমুদ্রের হ্রদ মহাসাগর এবং পছন্দগুলি পরিবর্তন করছে এবং আপনি যেমনটি আপনার সম্পাদনায় দেখিয়েছিলেন - প্রাকৃতিক_ বৈশিষ্ট্যটি একটি পর্বত, একটি দ্বীপ এবং মরুভূমিও হতে পারে .. আপনি কি পারেন একটি ডকুমেন্টেশন নির্দেশ? এছাড়াও - আপনি ঠিকানা ছাড়াই জায়গাগুলির বিপরীত জিওকোডিং কীভাবে করতে পারেন? এবং এমন একটি হ্রদ কী হবে যা ভৌগলিক সত্তার অংশ? একটি হ্রদের মতো একটি শহর বা পৌরসভার সীমা (উদাহরণস্বরূপ জেনোভের) বা একটি পয়েন্ট যার মধ্যে একটি শহর বন্দর অন্তর্ভুক্ত করা হয়। আমার পরীক্ষাগুলিতে আমি তা করতে ব্যর্থ
হয়েছি

3
বিশ্বের বেশিরভাগ জলের জন্য একটি বিপরীত জিওকোডিং "শূন্য ফলাফল" প্রত্যাবর্তন করবে, জিওকোডিং-সরঞ্জামটি দেখুন: gmaps-sams-v3.googlecode.com/svn/trunk/geocoder/… এবং কোনও মহাসাগরের ভিতরে কোথাও ক্লিক করুন।
ডাঃমল

@ টমাস - এমন নয় যে আমি সহযোগী "স্ট্যাকার" - এর পক্ষে নিরপেক্ষ বা সম্পূর্ণ সম্মানহীন হতে চাই - তবে এটি বৈধ / সঠিক পদ্ধতি না হওয়ার কারণে এটি ভোট দেওয়া হয়নি?
ওবমের্ক ক্রোনেন

3
প্রস্তাবিত উপায়ে স্থির মানচিত্র ব্যবহার করা সম্ভবত শর্তাদির লঙ্ঘন (10.1.1 (h)) হিসাবে ধরা হবে।
অ্যান্ড্রু লিচ

1
স্ট্যাটিক মানচিত্রের পদ্ধতির হিসাবে, আপনি এটি স্টাইল ডেভেলপারগুলি google.com/maps/docamentation/static-maps/… দিয়ে করতে পারেন তবে সৌরভ সংযুক্ত নিবন্ধটি ব্যবহার করতে পারেন।
মাইগেভ

19

এটি কোনও বর্তমান গুগল পরিষেবা দিয়ে সম্ভব বলে মনে হচ্ছে না।

তবে অন্যান্য পরিষেবা রয়েছে যেমন কোর্ডিনেটস ভেক্টর জেএসএন কোয়েরি পরিষেবা ! আপনি কেবল ইউআরএল মধ্যে ডেটা জিজ্ঞাসা করুন, এবং আপনি একটি JSON / XML প্রতিক্রিয়া ফিরে পাবেন

উদাহরণের অনুরোধ: http://api.koordinates.com/api/vectorQuery.json?key=YOUR_GEODATA_KEY&layer=1298&x=-159.9609375&y=13.239945499286312&max_results=3&radius=10000&geometry=true&with_ue_names

আপনাকে নিবন্ধভুক্ত করতে হবে এবং আপনার কী এবং নির্বাচিত স্তর নম্বর সরবরাহ করতে হবে। আপনি তাদের উপলব্ধ স্তরগুলির সমস্ত সংগ্রহস্থল সন্ধান করতে পারেন । বেশিরভাগ স্তরগুলি শুধুমাত্র আঞ্চলিক, তবে আপনি বিশ্ব উপকূলরেখার মতো বৈশ্বিকও খুঁজে পেতে পারেন :

এখানে চিত্র বর্ণনা লিখুন

আপনি যখন একটি স্তর নির্বাচন করেন, আপনি "পরিষেবাদি" ট্যাবে ক্লিক করেন, আপনি উদাহরণ অনুরোধ URL পাবেন। আমি বিশ্বাস করি আপনার কেবল নিবন্ধন করা দরকার এবং এটিই!

এবং এখন সেরা:

আপনি আপনার স্তর আপলোড করতে পারেন!

এটি এখনই পাওয়া যায় না, আরে এটি কোনওভাবে প্রসেস করতে হবে তবে এটি কাজ করা উচিত! স্তর সংগ্রহস্থলটি দেখতে আসলে লোকেদের প্রয়োজন মতো তাদের আপলোড করার মতো মনে হয়।


এটি প্রায় নিখুঁত দেখাচ্ছে, তবে আমি কোনও স্থানীয় মানচিত্র দেখতে পাই না যা ওশেনিয়ার নয়। কোন মার্কিন স্তর আছে?
হ্যালোইবমাস্টার

@ হালোওয়েবমাস্টার যে স্তরটি আমি উল্লেখ করেছি তা বিশ্বব্যাপী। এবং আপনি অঞ্চল অনুসারে স্তরগুলিও অনুসন্ধান করতে পারেন।
টিএমএস

@ হালোওয়েবমাস্টার আমি কেবল লক্ষ্য করেছি আপনি নিজের স্তর আপলোড করতে পারবেন! আমার আপডেট দেখুন।
টিএমএস 15

আরে, টমাস, আমি জানি না আপনি আসলে অনুগ্রহ পেয়েছিলেন কি না (যেহেতু আমি এক সপ্তাহের জন্য অফলাইনে ছিলাম) তবে এটি দুর্দান্ত! আপনার সহায়তার জন্য আপনাকে ধন্যবাদ, আমি আমার অ্যাপ্লিকেশনটি কাজে লাগাতে পারতাম না। ধন্যবাদ! (যদি আপনি অনুগ্রহ না পেয়ে থাকেন তবে আমি এটি পুনরায় প্রত্যাবর্তন করব, কেবলমাত্র আমাকে প্রধানমন্ত্রী)
হ্যালোওয়েবমাস্টার

আরে, আপনি আমাকে কাস্টম কোডিংয়ের এক সপ্তাহ বাঁচিয়েছেন! এটা জরুরী!
হ্যালোওয়েব মাস্টার

8

এটি আমি যা ব্যবহার করি এবং এটি খুব খারাপ ব্যবহার করে না ... পিক্সেল যুক্ত করে আপনার আরও সিপিইউ নষ্ট করতে পারলে আপনি পরীক্ষাটি উন্নত করতে পারেন।

function isItWatter($lat,$lng) {

    $GMAPStaticUrl = "https://maps.googleapis.com/maps/api/staticmap?center=".$lat.",".$lng."&size=40x40&maptype=roadmap&sensor=false&zoom=12&key=YOURAPIKEY";  
    //echo $GMAPStaticUrl;
    $chuid = curl_init();
    curl_setopt($chuid, CURLOPT_URL, $GMAPStaticUrl);   
    curl_setopt($chuid, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($chuid, CURLOPT_SSL_VERIFYPEER, FALSE);
    $data = trim(curl_exec($chuid));
    curl_close($chuid);
    $image = imagecreatefromstring($data);

    // this is for debug to print the image
    ob_start();
    imagepng($image);
    $contents =  ob_get_contents();
    ob_end_clean();
    echo "<img src='data:image/png;base64,".base64_encode($contents)."' />";

    // here is the test : I only test 3 pixels ( enough to avoid rivers ... )
    $hexaColor = imagecolorat($image,0,0);
    $color_tran = imagecolorsforindex($image, $hexaColor);

    $hexaColor2 = imagecolorat($image,0,1);
    $color_tran2 = imagecolorsforindex($image, $hexaColor2);

    $hexaColor3 = imagecolorat($image,0,2);
    $color_tran3 = imagecolorsforindex($image, $hexaColor3);

    $red = $color_tran['red'] + $color_tran2['red'] + $color_tran3['red'];
    $green = $color_tran['green'] + $color_tran2['green'] + $color_tran3['green'];
    $blue = $color_tran['blue'] + $color_tran2['blue'] + $color_tran3['blue'];

    imagedestroy($image);
    var_dump($red,$green,$blue);
    //int(492) int(570) int(660) 
    if($red == 492 && $green == 570 && $blue == 660)
        return 1;
    else
        return 0;
}

কোড doens; t নতুন সংস্করণে কাজ করে না। নতুন সংস্করণটি এর মতো হওয়া উচিত ($ red == 537 && $ সবুজ == 627 && $ নীল == 765)
উইম প্রুইকসমা

8

একটি নিখরচায় ওয়েব এপিআই রয়েছে যা onwater.io নামক এই সমস্যাটিকে ঠিক সমাধান করে । এটি গুগল মানচিত্রে নির্মিত কিছু নয়, তবে একটি অক্ষাংশ এবং দ্রাঘিমাংশের ফলে এটি একটি অনুরোধের মাধ্যমে সঠিকভাবে সত্য বা মিথ্যা ফিরে পাবে return

জলের উপর উদাহরণ: https://api.onwater.io/api/v1/results/23.92323,-66.3

{
  lat: 23.92323,
  lon: -66.3,
  water: true
}

জমিতে উদাহরণ: https://api.onwater.io/api/v1/results/42.35,-71.1

{
  lat: 42.35,
  lon: -71.1,
  water: false
}

সম্পূর্ণ প্রকাশ আমি অনওয়ারের পিছনে থাকা সংস্থা ডকওয়া ডটকম এ কাজ করি। আমরা নিজেই এই সমস্যাটি সমাধান করতে এবং সম্প্রদায়টিকে সহায়তা করার জন্য অন ওয়াটার তৈরি করেছি। এটি ব্যবহারের জন্য নিখরচায় (উচ্চ পরিমাণের জন্য অর্থ প্রদান করা) এবং আমরা ভাগ করতে চেয়েছিলাম :)


1
আপডেট হওয়া লিঙ্কসমূহ: জলের উদাহরণ: api.onwater.io/api/v1/results/23.92323,-66.3 জমির উদাহরণ: api.onwater.io/api/v1/results/42.35,-71.1
খ্রিস্টান কে

1
এটি আর মুক্ত নয় (উচ্চতর আয়তনের জন্য), তবে যদি এটি কাজ করে তবে এটি এখনও খুব সাশ্রয়ী মূল্যের!
খ্রিস্টান কে।

ডকুমেন্টেশন পৃষ্ঠাটি একটি ত্রুটি দেয়। আমি কোন কভারেজ নির্দিষ্ট ডেটা আছে কিনা তা পরীক্ষা করতে চেয়েছিলাম? মানে আপনি কোন দেশকে কভার করবেন?
এনআর 5

Onwater.io হ্রদ এবং নদীর জন্য কাজ করে? যদি তা হয় তবে আমি কী ধরণের ইঙ্গিত পাই?
লুক

7

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

import ogr
from IPython import embed
import sys

drv = ogr.GetDriverByName('ESRI Shapefile') #We will load a shape file
ds_in = drv.Open("land_polygons.shp")    #Get the contents of the shape file
lyr_in = ds_in.GetLayer(0)    #Get the shape file's first layer

#Put the title of the field you are interested in here
idx_reg = lyr_in.GetLayerDefn().GetFieldIndex("P_Loc_Nm")

#If the latitude/longitude we're going to use is not in the projection
#of the shapefile, then we will get erroneous results.
#The following assumes that the latitude longitude is in WGS84
#This is identified by the number "4236", as in "EPSG:4326"
#We will create a transformation between this and the shapefile's
#project, whatever it may be
geo_ref = lyr_in.GetSpatialRef()
point_ref=ogr.osr.SpatialReference()
point_ref.ImportFromEPSG(4326)
ctran=ogr.osr.CoordinateTransformation(point_ref,geo_ref)

def check(lon, lat):
    #Transform incoming longitude/latitude to the shapefile's projection
    [lon,lat,z]=ctran.TransformPoint(lon,lat)

    #Create a point
    pt = ogr.Geometry(ogr.wkbPoint)
    pt.SetPoint_2D(0, lon, lat)

    #Set up a spatial filter such that the only features we see when we
    #loop through "lyr_in" are those which overlap the point defined above
    lyr_in.SetSpatialFilter(pt)

    #Loop through the overlapped features and display the field of interest
    for feat_in in lyr_in:
        # success!
        print lon, lat

check(-95,47)

আমি এক ডজন স্থানাঙ্ক চেষ্টা করেছিলাম, এটি আশ্চর্যজনকভাবে কাজ করে। "Land_polygons.shp" ফাইলটি এখানে ডাউনলোড করা যায় ওপেনস্ট্রিটম্যাপসের প্রশংসা। (আমি প্রথম WGS84 ডাউনলোড লিঙ্কটি নিজেই ব্যবহার করেছি, সম্ভবত দ্বিতীয়টিও কাজ করে)


হ্রদ কি? এটি হ্রদগুলিকে সমুদ্র বা স্থল হিসাবে বিবেচনা করে?
fatma.ekici

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

7

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


5

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

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


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

3

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

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


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

3

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


ধন্যবাদ, এটি একটি দুর্দান্ত ধারণা, তবে এটি প্রতিটি জলপ্রপাত, বা একটি নদীর উপত্যকায় দর্শনীয়ভাবে ব্যর্থ হবে ...
ওবর্মক ক্রোনেন

2

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

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

আশা করি এটি কোনও উপায়ে সহায়তা করবে।


2

খাঁটি জাভাস্ক্রিপ্টে এখানে আরও একটি উদাহরণ রয়েছে: http://jsfiddle.net/eUwMf/

আপনি দেখতে পাচ্ছেন, আদর্শটি গুগল স্ট্যাটিক ম্যাপ এপিআই থেকে চিত্রটি পেয়ে রিব 100x এর মত একই, এবং প্রথম পিক্সেল পড়ুন:

$("#xGps, #yGps").change(function() {
    var img = document.getElementById('mapImg');

    // Bypass the security issue : drawing a canvas from an external URL.
    img.crossOrigin='anonymous';

    var xGps = $("#xGps").val();
    var yGps = $("#yGps").val();

    var mapUrl = "http://maps.googleapis.com/maps/api/staticmap?center=" + xGps + "," + yGps +
        "&zoom=14&size=20x20&maptype=roadmap&sensor=false";

    // mapUrl += "&key=" + key;

    $(img).attr("src", mapUrl);

    var canvas = $('<canvas/>')[0];
    canvas.width = img.width;
    canvas.height = img.height;
    canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height);

    var pixelData = canvas.getContext('2d').getImageData(1, 1, 1, 1).data;

    if (pixelData[0] == 164 &&
        pixelData[1] == 190 &&
        pixelData[2] == 220) {
        $("#result").html("Water");
    } else {
        $("#result").html("Not water");
    }
});

2

অনুরূপ প্রশ্নের আমি যে উত্তর দিয়েছি তা দেখুন - এটি ফাংশনটি অর্জন করতে আর্থ এপি থেকে "HIT_TEST_TERRAIN" ব্যবহার করে।

আমি এখানে একত্রিত ধারণাটির কার্যকারী উদাহরণ রয়েছে: http://www.msa.mmu.ac.uk/~fraser/ge/coord/


2

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

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

আদমশুমারির মানচিত্র

জিডিএল তথ্য

পাইথনে পয়েন্ট ক্যোয়ারির উদাহরণ


1

এখানে একটি সহজ সমাধান

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


ইয়ানডেক্স ডকুমেন্টেশন: https://api.yandex.com.tr/maps/doc/geocoder/desc/concepts/input_params.xml


মহাসাগরের নাম পুনরুদ্ধার করার পদক্ষেপগুলি:

1.) জিওকোডের স্থানাঙ্কের বিপরীতে প্রথমে গুগল ব্যবহার করুন।

২) গুগল যদি শূন্য ফলাফল দেয় তবে এটি সমুদ্রের উপরে স্থানাঙ্কের সম্ভাবনা 99%। এখন ইয়ানডেক্সে একই স্থানাঙ্কগুলি সহ একটি গৌণ বিপরীত জিওকোডিংয়ের অনুরোধ করুন। ইয়ানডেক্স সঠিক স্থানাঙ্কের জন্য একটি জেএসএন প্রতিক্রিয়া ফিরিয়ে দেবে, এই প্রতিক্রিয়াটির মধ্যে দুটি "কী" হবে: "মান" জোড়ার গুরুত্ব

["GeoObject"]["metaDataProperty"]["GeocoderMetaData"]["kind"]

and

["GeoObject"]["name"]

দয়া করে কীটি পরীক্ষা করুন, যদি এটি == "হাইড্রো" আপনি জানেন যে আপনি জলের দেহের উপরে রয়েছেন, এবং গুগল শূন্য ফলাফল পেয়েছে তবে এটি 99.99% হওয়ার সম্ভাবনা রয়েছে এই পানির দেহ সম্ভবত সমুদ্র is সমুদ্রের নাম উপরের "নাম" কী হবে।

আমি রুবিতে লেখা এই কৌশলটি কীভাবে ব্যবহার করি তার একটি উদাহরণ এখানে

if result.data["GeoObject"]["metaDataProperty"]["GeocoderMetaData"]["kind"] == "hydro"
     ocean = result.data["GeoObject"]["name"] 
end

পানির নামটির অভ্যন্তরীণ দেহ পুনরুদ্ধারের পদক্ষেপগুলি:

এই উদাহরণের জন্য ধরে নিন যে আমাদের স্থানাঙ্ক কোথাও একটি লেকের মধ্যে রয়েছে:

1.) জিওকোডের স্থানাঙ্কের বিপরীতে প্রথমে গুগল ব্যবহার করুন।

২) গুগল সম্ভবত এমন একটি ফলাফল প্রত্যাবর্তন করবে যা কাছের জমিতে একটি বিশিষ্ট ডিফল্ট ঠিকানা। এর ফলস্বরূপ এটি যে ঠিকানাটি ফিরে পেয়েছিল তার স্থানাঙ্ক সরবরাহ করে, এই সমন্বয়টি আপনি সরবরাহ করেছেন তার সাথে মেলে না। আপনার সরবরাহিত স্থানাঙ্কের মধ্যবর্তী দূরত্ব পরিমাপ করুন এবং ফলাফলটি দিয়ে ফিরে আসলেন, যদি তা উল্লেখযোগ্যভাবে আলাদা হয় (উদাহরণস্বরূপ 100 গজ) তবে ইয়ানডেক্সের সাথে একটি গৌণ ব্যাকআপ অনুরোধ সম্পাদন করুন এবং "ধরণের" কীটির মান দেখতে পরীক্ষা করুন, যদি এটি হয় "হাইড্রো" তখন আপনি জলের উপর স্থানাঙ্ক নিহিত জানেন। গুগল উপরের উদাহরণটির বিপরীতে ফলাফল ফিরিয়ে দিয়েছে বলে, এটি 99.99% সম্ভবত এটি পানির অভ্যন্তরীণ দেহ তাই এখন আপনি নামটি পেতে পারেন। যদি "দয়ালু" == "হাইড্রো" না করে তবে গুগল জিওকোডযুক্ত অবজেক্টটি ব্যবহার করুন।

["GeoObject"]["metaDataProperty"]["GeocoderMetaData"]["kind"]

and

["GeoObject"]["name"]

অভ্যন্তরীণ_দেহ_ফাজের জল পেতে রুবিতে একই কোডটি এখানে রয়েছে

if result.data["GeoObject"]["metaDataProperty"]["GeocoderMetaData"]["kind"] == "hydro"
     inland_body_of_water = result.data["GeoObject"]["name"] 
end

লাইসেন্সিং সম্পর্কে একটি নোট: যতদূর আমি জানি গুগল আপনাকে Google এর অফারগুলি বাদে অন্য কোনও মানচিত্রে তাদের ডেটা প্রদর্শন করার অনুমতি দেয় না use ইয়ানডেক্সের অবশ্য খুব নমনীয় লাইসেন্সিং রয়েছে এবং আপনি তাদের মানচিত্র গুগল মানচিত্রে প্রদর্শিত করতে ব্যবহার করতে পারেন।

এছাড়াও ইয়ানডেক্সে 50,000 অনুরোধ / দিনের বিনা মূল্যে এএইচ রেট সীমা রয়েছে এবং কোনও প্রয়োজনীয় এপিআই কী নেই।


1

গুগল এলিভেশন এপিআই ব্যবহার করে আমি বেশ কাছাকাছি যেতে পেরেছি। এখানে ফলাফলগুলির একটি চিত্র:

ফলাফলের স্ক্রিনশট

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

https://gist.github.com/dvas0004/fd541a0502528ebfb825


শুধু এফওয়াইআই, গুগল এলিভেশন এপিআই ডকুমেন্টেশনগুলি এখানে পাওয়া যাবে: developers.google.com/maps/docamentation/javascript/elevation
dva0000004

2
এটি সম্ভাব্য ব্যবহারের একটি দুর্দান্ত উদাহরণ। তবে এটি জলের জমি-লক মৃতদেহে মহিমান্বিতভাবে ব্যর্থ হবে (লিগো ডি গার্ডা - লিঙ্কযুক্ত চিত্রের উদাহরণে ইতালি)। অন্য একটি সমাধানের সম্ভাব্য ভিত্তি হিসাবে ব্যবহার করার কথা ভেবে খুব সুন্দর কোড!
ওবর্ম্ক ক্রোনেন

1

যদি List<Address>ঠিকানাটি 0 ফেরত দেয় তবে আপনি এই অবস্থানটিকে মহাসাগর বা প্রাকৃতিক সংস্থান হিসাবে ধরে নিতে পারেন Google গুগল স্থানগুলির এপিআই প্রতিক্রিয়া পদ্ধতিতে আপনার প্রতিক্রিয়াতে কোডের নীচে যুক্ত করুন।

উল্লিখিত তালিকা হিসাবে সূচনা করুন

List<Address> addresses = geocoder.getFromLocation(latLng.latitude, latLng.longitude, 1);

if (addresses.size()==0) { Toast.MakeText(getApplicationContext,"Ocean or Natural Resources selected",Toast.LENGTH_SHORT).show(); }else{ }


0

পাইথনের সম্পূর্ণ নবজাতক হিসাবে আমি পাইথন স্ক্রিপ্টের সাথে কাজ করার জন্য সেলভেনিবের সমাধান পেতে পারি নি যা স্থানাঙ্ক স্থলে রয়েছে কিনা তা পরীক্ষা করে। তবে OSGeo4W ( https://trac.osgeo.org/osgeo4w/ ) ডাউনলোড করে আমি এটি নির্ধারণ করতে সক্ষম হয়েছি এবং তারপরে আমার যে সমস্ত পাইপ, আইপাইথন প্রয়োজন ছিল তা ইনস্টল করেছিলাম এবং যাচাই করেছিলাম যে সমস্ত আমদানি সেখানে রয়েছে। আমি নীচের কোডটি একটি .py ফাইল হিসাবে সংরক্ষণ করেছি।

স্থানাঙ্কগুলি জমিতে রয়েছে কিনা তা যাচাই করার কোড

###make sure you check these are there and working separately before using the .py file 

import ogr
from IPython import embed
from osgeo import osr
import osgeo

import random
#####generate a 1000 random coordinates
ran1= [random.uniform(-180,180) for x in range(1,1001)]
ran2= [random.uniform(-180,180) for x in range(1,1001)]


drv = ogr.GetDriverByName('ESRI Shapefile') #We will load a shape file
ds_in = drv.Open("D:\Downloads\land-polygons-complete-4326\land-polygons-complete-4326\land_polygons.shp")    #Get the contents of the shape file
lyr_in = ds_in.GetLayer(0)    #Get the shape file's first layer

#Put the title of the field you are interested in here
idx_reg = lyr_in.GetLayerDefn().GetFieldIndex("P_Loc_Nm")

#If the latitude/longitude we're going to use is not in the projection
#of the shapefile, then we will get erroneous results.
#The following assumes that the latitude longitude is in WGS84
#This is identified by the number "4236", as in "EPSG:4326"
#We will create a transformation between this and the shapefile's
#project, whatever it may be
geo_ref = lyr_in.GetSpatialRef()
point_ref=osgeo.osr.SpatialReference()
point_ref.ImportFromEPSG(4326)
ctran=osgeo.osr.CoordinateTransformation(point_ref,geo_ref)
###check if the random coordinates are on land
def check(runs):
    lon=ran1[runs]
    lat=ran2[runs]
    #Transform incoming longitude/latitude to the shapefile's projection
    [lon,lat,z]=ctran.TransformPoint(lon,lat)
    #Create a point
    pt = ogr.Geometry(ogr.wkbPoint)
    pt.SetPoint_2D(0, lon, lat)
    #Set up a spatial filter such that the only features we see when we
    #loop through "lyr_in" are those which overlap the point defined above
    lyr_in.SetSpatialFilter(pt)
    #Loop through the overlapped features and display the field of interest
    for feat_in in lyr_in:
        return(lon, lat)

###give it a try
result = [check(x) for x in range(1,11)] ###checks first 10 coordinates

আমি এটি আর-তে কাজ করার চেষ্টা করেছি কিন্তু অজগরের কাছে আটকে থাকা আপনাকে যে সমস্ত প্যাকেজ ইনস্টল করতে হবে তা পাওয়ার চেষ্টা করার জন্য আমার একটি দুঃস্বপ্ন হয়েছিল।


-3

আমার এখানে আলাদা সমাধান আছে। বর্তমান গুগল মানচিত্র বাস্তবায়নে, এটি জলের অবস্থান থেকে জমির অবস্থান এবং তদ্বিপরীত থেকে দিক / দূরত্ব গণনা করে না। বিন্দুটি স্থল বা জলের কিনা তা নির্ধারণ করার জন্য আমরা কেন এই যুক্তি ব্যবহার করব না।

উদাহরণস্বরূপ এই উদাহরণ গ্রহণ করা যাক

যদি আমরা নির্ধারণ করতে চাই, যদি কোনও বিন্দু xজমি বা জলের হয়, তবে

আসুন আমরা বিন্দু xএবং একটি পরিচিত বিন্দুর মধ্যবর্তী দিকটি yযা জমি check এটি যদি দিক বা দূরত্ব নির্ধারণ করে তবে বিন্দু xস্থল হয় অন্যথায় এটি জল।


আপনি কি আসলে এটি চেষ্টা করেছেন বা আপনি কেবল "জল থেকে রান্না" ধরে নিচ্ছেন?
টিএমএস

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