আমি ডি 3 তে নতুন - আমি কীভাবে এটি বুঝতে পারি তা ব্যাখ্যা করার চেষ্টা করব তবে আমি নিশ্চিত নই যে আমি সবকিছু ঠিকঠাক পেয়েছি।
গোপনীয়তাটি জেনে গেছে যে কার্টেসিয়ান স্পেসে কিছু পদ্ধতি কার্টোগ্রাফিক স্পেস (অক্ষাংশ, দ্রাঘিমাংশ) এবং অন্যদের উপর পরিচালিত করবে (স্ক্রিনে এক্স, ওয়াই)। কার্টোগ্রাফিক স্পেস (আমাদের গ্রহ) হ'ল (প্রায়) গোলাকার, কার্টেসিয়ান স্পেস (স্ক্রিন) সমতল - অন্যটির উপরে একটিকে ম্যাপ করার জন্য আপনার প্রয়োজন একটি অ্যালগরিদম, যা প্রক্ষেপণ বলা হয় । এই স্থানটি অনুমানের মনোমুগ্ধকর বিষয়ের গভীরে এবং কীভাবে তারা গোলাকারকে প্লেনে রূপান্তরিত করার জন্য ভৌগলিক বৈশিষ্ট্যগুলি বিকৃত করে; কিছু অ্যাঙ্গেল সংরক্ষণের জন্য ডিজাইন করা হয়েছে, অন্যরা দূরত্ব সংরক্ষণ করে এবং আরও কিছু - সর্বদা একটি আপস হয় (মাইক বোস্টকের উদাহরণগুলির একটি বিশাল সংগ্রহ রয়েছে )।
ডি 3-তে, প্রোজেকশন অবজেক্টটির মানক ইউনিটগুলিতে দেওয়া কেন্দ্রের সম্পত্তি / সেটার থাকে:
projection.center ([অবস্থান])
যদি কেন্দ্রটি নির্দিষ্ট করা থাকে, তবে প্রক্ষেপণের কেন্দ্রটিকে নির্দিষ্ট স্থানে সেট করে, দ্রাঘিমাংশ এবং অক্ষাংশের একটি দুই-উপাদান অ্যারে এবং প্রজেকশনটি প্রদান করে। যদি কেন্দ্রটি নির্দিষ্ট না করা থাকে তবে বর্তমান কেন্দ্রটি ফিরে আসে যা ডিফল্ট ⟨0 °, 0 °⟩ হয়⟩
পিক্সেলে দেওয়া অনুবাদও রয়েছে - যেখানে প্রক্ষেপণ কেন্দ্রটি ক্যানভাসের তুলনায় দাঁড়িয়ে আছে:
projection.translate ([বিন্দু])
যদি বিন্দুটি নির্দিষ্ট করা থাকে, তবে প্রজেকশনটির অনুবাদটিকে নির্দিষ্ট দুটি-উপাদান অ্যারে [x, y] এ অফসেট সেট করে এবং প্রজেকশনটি প্রদান করে। যদি পয়েন্টটি নির্দিষ্ট না করা থাকে তবে বর্তমান অনুবাদটি অফসেটটি ফেরত দেয় যা ডিফল্ট [480, 250]। অনুবাদ অফসেট প্রক্ষেপণের কেন্দ্রের পিক্সেল স্থানাঙ্ক নির্ধারণ করে। ডিফল্ট অনুবাদ অফসেটটি 960 × 500 অঞ্চলের কেন্দ্রে ⟨0 °, 0 ° places রাখে।
যখন আমি ক্যানভাসে কোনও বৈশিষ্ট্যটি কেন্দ্র করতে চাই, আমি বৈশিষ্ট্য সীমানা বাক্সের কেন্দ্রে প্রক্ষেপণ কেন্দ্রটি সেট করতে চাই - আমার দেশের (ব্রাজিল) জন্য মেরেটার (ডাব্লুজিএস ৮৪, গুগল মানচিত্রে ব্যবহৃত) ব্যবহার করার সময় এটি আমার পক্ষে কাজ করে, অন্যান্য অনুমান এবং গোলার্ধ ব্যবহার করে কখনও পরীক্ষা করা হয় না। অন্যান্য পরিস্থিতিতে আপনার সামঞ্জস্য করতে হতে পারে, তবে আপনি যদি এই প্রাথমিক নীতিগুলি পেরেক করেন তবে আপনি ভাল থাকবেন।
উদাহরণস্বরূপ, একটি অভিক্ষেপ এবং পথ দেওয়া:
var projection = d3.geo.mercator()
.scale(1);
var path = d3.geo.path()
.projection(projection);
bounds
থেকে পদ্ধতি path
আয় সীমান্ত বক্স পিক্সেলে । সঠিক মানদণ্ডটি খুঁজে পেতে এটি ব্যবহার করুন, মানচিত্র ইউনিটগুলির আকারের সাথে পিক্সেলের আকারের তুলনা করুন (0.95 আপনাকে প্রস্থ বা উচ্চতার জন্য সেরা ফিটের চেয়ে 5% মার্জিন দেয়)। মূল জ্যামিতিটি এখানে ত্রিভুজ বিরোধী কোণগুলি প্রদত্ত আয়তক্ষেত্র প্রস্থ / উচ্চতা গণনা করে:
var b = path.bounds(feature),
s = 0.9 / Math.max(
(b[1][0] - b[0][0]) / width,
(b[1][1] - b[0][1]) / height
);
projection.scale(s);
d3.geo.bounds
মানচিত্র ইউনিটে সীমানা বাক্সটি খুঁজে পেতে পদ্ধতিটি ব্যবহার করুন :
b = d3.geo.bounds(feature);
সীমানা বাক্সের কেন্দ্রে প্রক্ষেপণের কেন্দ্রটি সেট করুন:
projection.center([(b[1][0]+b[0][0])/2, (b[1][1]+b[0][1])/2]);
translate
ক্যানভাসের কেন্দ্রে মানচিত্রের কেন্দ্র স্থানান্তর করতে পদ্ধতিটি ব্যবহার করুন :
projection.translate([width/2, height/2]);
এখন অবধি আপনার মানচিত্রের কেন্দ্রে একটি বৈশিষ্ট্যটি 5% মার্জিনের সাথে জুম করা উচিত।