buildingInsights এন্ডপয়েন্ট কোনও বিল্ডিংয়ের লোকেশন, ডাইমেনশন ও সৌরশক্তি উৎপাদনের সম্ভাবনা সম্পর্কে ইনসাইট প্রদান করে। বিশেষ করে, আপনি এইসব বিষয়ে তথ্য পেতে পারেন:
- সোলার প্যানেলের সাইজ, বার্ষিক সূর্যালোকের পরিমাণ, কার্বন অফসেট ফ্যাক্টর এবং আরও অনেক কিছু সহ সোলার পোটেনশিয়াল
- সোলার প্যানেলের অবস্থান, কোন দিকে মুখ করে আছে এবং বিদ্যুৎ উৎপাদন
- সবচেয়ে ভালো সোলার লেআউটের আনুমানিক মাসিক বিদ্যুতের বিল এবং সংশ্লিষ্ট খরচ ও সুবিধা
Solar API কীভাবে সোলার পোটেনশিয়াল ও রোদ পাওয়ার সম্ভাবনাকে সংজ্ঞায়িত করে সেই সম্পর্কে আরও জানতে, Solar API সংক্রান্ত ধারণা দেখুন।
APIs Explorer আপনাকে লাইভ অনুরোধ করতে দেয় যাতে আপনি API এবং API বিকল্পের সাথে পরিচিত হতে পারেন:
বিল্ডিং ইনসাইট সংক্রান্ত অনুরোধ সম্পর্কে
বিল্ডিং ইনসাইটের জন্য অনুরোধ করতে, এখানে একটি HTTP GET অনুরোধ পাঠান:
https://solar.googleapis.com/v1/buildingInsights:findClosest?key=YOUR_API_KEY
আপনার অনুরোধের URL-এ প্যারামিটার যোগ করুন যা লোকেশনের অক্ষাংশ ও দ্রাঘিমাংশের কোঅর্ডিনেট এবং ফলাফলে অনুমোদিত ন্যূনতম কোয়ালিটি লেভেল নির্দিষ্ট করে।
ইনসাইট সংক্রান্ত উত্তর তৈরি করা সম্পর্কে
Solar API, রেসপন্স বডি-তে কোনও বিল্ডিংয়ের লোকেশন, ডাইমেনশন ও সৌরশক্তি উৎপাদনের সম্ভাবনা সম্পর্কিত তথ্য ফেরত পাঠায়।
ছবির কোয়ালিটি
কিছু ক্ষেত্রে, কোনও নির্দিষ্ট লোকেশনে অনুরোধ করা ছবির কোয়ালিটি উপলভ্য ছবির কোয়ালিটির থেকে আলাদা হতে পারে। এই ধরনের পরিস্থিতিতে, নিম্নলিখিত আচরণ প্রত্যাশিত:
| পরিস্থিতি | উত্তরের আচরণ |
|---|---|
কোনও লোকেশনে requiredQuality-এর সাথে মেলে এমন ছবি নেই। |
Solar API 404 স্ট্যাটাস কোড সহ NOT_FOUND সমস্যা দেখায়। |
অনুরোধে নির্দিষ্ট requiredQuality উল্লেখ করা হয়েছে, কিন্তু শুধুমাত্র উন্নত কোয়ালিটির ছবি উপলভ্য আছে। |
Solar API লোকেশনে উপলভ্য সবচেয়ে ভাল কোয়ালিটির ডেটা দেখায়। |
বিল্ডিং ইনসাইট সংক্রান্ত অনুরোধের উদাহরণ
নিম্নলিখিত উদাহরণে অক্ষাংশ = ৩৭.৪৪৫০ এবং দ্রাঘিমাংশ = -১২২.১৩৯০ স্থানাঙ্কে অবস্থিত লোকেশনের জন্য বিল্ডিং ইনসাইট সংক্রান্ত তথ্য চাওয়া হয়েছে:
API key
API key ব্যবহার করে অনুরোধ করতে, ইনপুট প্যারামিটার হিসেবে আপনার API key যোগ করুন:
curl -X GET "https://solar.googleapis.com/v1/buildingInsights:findClosest?location.latitude=37.4450 &location.longitude=-122.1390 &requiredQuality=HIGH &key=YOUR_API_KEY"
এছাড়াও, আপনার ব্রাউজারের URL বারে cURL অনুরোধে URL পেস্ট করে আপনি HTTP অনুরোধ করতে পারেন।
OAuth টোকেন
মনে রাখবেন: এই ফর্ম্যাটটি শুধুমাত্র টেস্ট এনভায়রনমেন্টের জন্য। আরও তথ্যের জন্য, OAuth ব্যবহার করুন দেখুন।
OAuth ব্যবহার করে অনুরোধ করতে, আপনার বিলিং প্রোজেক্টের নাম এবং OAuth টোকেন পাস করুন:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_NUMBER_OR_ID" \
"https://solar.googleapis.com/v1/buildingInsights:findClosest?location.latitude=37.4450&location.longitude=-122.1390"
TypeScript
TypeScript ব্যবহার করে অনুরোধ করতে, অনুরোধে আপনার API কী বা OAuth টোকেন অন্তর্ভুক্ত করুন। নিম্নলিখিত উদাহরণে API key ব্যবহার করা হয়েছে:
/** * Fetches the building insights information from the Solar API. * https://developers.google.com/maps/documentation/solar/building-insights * * @param {LatLng} location Point of interest as latitude longitude. * @param {string} apiKey Google Cloud API key. * @return {Promise<DataLayersResponse>} Building Insights response. */ export async function findClosestBuilding( location: google.maps.LatLng, apiKey: string, ): Promise<BuildingInsightsResponse> { const args = { 'location.latitude': location.lat().toFixed(5), 'location.longitude': location.lng().toFixed(5), // The Solar API always returns the highest quality imagery available. required_quality: 'BASE', }; console.log('GET buildingInsights\n', args); const params = new URLSearchParams({ ...args, key: apiKey }); // https://developers.google.com/maps/documentation/solar/reference/rest/v1/buildingInsights/findClosest return fetch(`https://solar.googleapis.com/v1/buildingInsights:findClosest?${params}`).then( async (response) => { const content = await response.json(); if (response.status != 200) { console.error('findClosestBuilding\n', content); throw content; } console.log('buildingInsightsResponse', content); return content; }, ); }
ডেটার ধরনের সংজ্ঞা
নিম্নলিখিত ধরনের ডেটা কাজ করে:
export interface DataLayersResponse { imageryDate: Date; imageryProcessedDate: Date; dsmUrl: string; rgbUrl: string; maskUrl: string; annualFluxUrl: string; monthlyFluxUrl: string; hourlyShadeUrls: string[]; imageryQuality: 'HIGH' | 'MEDIUM' | 'BASE'; } export interface Bounds { north: number; south: number; east: number; west: number; } // https://developers.google.com/maps/documentation/solar/reference/rest/v1/buildingInsights/findClosest export interface BuildingInsightsResponse { name: string; center: LatLng; boundingBox: LatLngBox; imageryDate: Date; imageryProcessedDate: Date; postalCode: string; administrativeArea: string; statisticalArea: string; regionCode: string; solarPotential: SolarPotential; imageryQuality: 'HIGH' | 'MEDIUM' | 'BASE'; } export interface SolarPotential { maxArrayPanelsCount: number; panelCapacityWatts: number; panelHeightMeters: number; panelWidthMeters: number; panelLifetimeYears: number; maxArrayAreaMeters2: number; maxSunshineHoursPerYear: number; carbonOffsetFactorKgPerMwh: number; wholeRoofStats: SizeAndSunshineStats; buildingStats: SizeAndSunshineStats; roofSegmentStats: RoofSegmentSizeAndSunshineStats[]; solarPanels: SolarPanel[]; solarPanelConfigs: SolarPanelConfig[]; financialAnalyses: object; } export interface SizeAndSunshineStats { areaMeters2: number; sunshineQuantiles: number[]; groundAreaMeters2: number; } export interface RoofSegmentSizeAndSunshineStats { pitchDegrees: number; azimuthDegrees: number; stats: SizeAndSunshineStats; center: LatLng; boundingBox: LatLngBox; planeHeightAtCenterMeters: number; } export interface SolarPanel { center: LatLng; orientation: 'LANDSCAPE' | 'PORTRAIT'; segmentIndex: number; yearlyEnergyDcKwh: number; } export interface SolarPanelConfig { panelsCount: number; yearlyEnergyDcKwh: number; roofSegmentSummaries: RoofSegmentSummary[]; } export interface RoofSegmentSummary { pitchDegrees: number; azimuthDegrees: number; panelsCount: number; yearlyEnergyDcKwh: number; segmentIndex: number; } export interface LatLng { latitude: number; longitude: number; } export interface LatLngBox { sw: LatLng; ne: LatLng; } export interface Date { year: number; month: number; day: number; } export interface RequestError { error: { code: number; message: string; status: string; }; }
এই অনুরোধের ফলে এই ফর্ম্যাটে একটি JSON রেসপন্স তৈরি হয়:
{ "name": "buildings/ChIJh0CMPQW7j4ARLrRiVvmg6Vs", "center": { "latitude": 37.4449439, "longitude": -122.13914659999998 }, "imageryDate": { "year": 2022, "month": 8, "day": 14 }, "postalCode": "94303", "administrativeArea": "CA", "statisticalArea": "06085511100", "regionCode": "US", "solarPotential": { "maxArrayPanelsCount": 1163, "maxArrayAreaMeters2": 1903.5983, "maxSunshineHoursPerYear": 1802, "carbonOffsetFactorKgPerMwh": 428.9201, "wholeRoofStats": { "areaMeters2": 2399.3958, "sunshineQuantiles": [ 351, 1396, 1474, 1527, 1555, 1596, 1621, 1640, 1664, 1759, 1864 ], "groundAreaMeters2": 2279.71 }, "roofSegmentStats": [ { "pitchDegrees": 11.350553, "azimuthDegrees": 269.6291, "stats": { "areaMeters2": 452.00052, "sunshineQuantiles": [ 408, 1475, 1546, 1575, 1595, 1606, 1616, 1626, 1635, 1643, 1761 ], "groundAreaMeters2": 443.16 }, "center": { "latitude": 37.444972799999995, "longitude": -122.13936369999999 }, "boundingBox": { "sw": { "latitude": 37.444732099999996, "longitude": -122.1394224 }, "ne": { "latitude": 37.4451909, "longitude": -122.13929279999999 } }, "planeHeightAtCenterMeters": 10.7835045 }, /.../ ], "solarPanelConfigs": [ { "panelsCount": 4, "yearlyEnergyDcKwh": 1819.8662, "roofSegmentSummaries": [ { "pitchDegrees": 12.273684, "azimuthDegrees": 179.12555, "panelsCount": 4, "yearlyEnergyDcKwh": 1819.8663, "segmentIndex": 1 } ] }, /.../ ] "financialAnalyses": [ { "monthlyBill": { "currencyCode": "USD", "units": "20" }, "panelConfigIndex": -1 }, { "monthlyBill": { "currencyCode": "USD", "units": "25" }, "panelConfigIndex": -1 }, { "monthlyBill": { "currencyCode": "USD", "units": "30" }, "panelConfigIndex": -1 }, { "monthlyBill": { "currencyCode": "USD", "units": "35" }, "panelConfigIndex": 0, "financialDetails": { "initialAcKwhPerYear": 1546.8864, "remainingLifetimeUtilityBill": { "currencyCode": "USD", "units": "2563" }, "federalIncentive": { "currencyCode": "USD", "units": "1483" }, "stateIncentive": { "currencyCode": "USD" }, "utilityIncentive": { "currencyCode": "USD" }, "lifetimeSrecTotal": { "currencyCode": "USD" }, "costOfElectricityWithoutSolar": { "currencyCode": "USD", "units": "10362" }, "netMeteringAllowed": true, "solarPercentage": 86.7469, "percentageExportedToGrid": 52.136684 }, "leasingSavings": { "leasesAllowed": true, "leasesSupported": true, "annualLeasingCost": { "currencyCode": "USD", "units": "335", "nanos": 85540771 }, "savings": { "savingsYear1": { "currencyCode": "USD", "units": "-10" }, "savingsYear20": { "currencyCode": "USD", "units": "1098" }, "presentValueOfSavingsYear20": { "currencyCode": "USD", "units": "568", "nanos": 380859375 }, "financiallyViable": true, "savingsLifetime": { "currencyCode": "USD", "units": "1098" }, "presentValueOfSavingsLifetime": { "currencyCode": "USD", "units": "568", "nanos": 380859375 } } }, "cashPurchaseSavings": { "outOfPocketCost": { "currencyCode": "USD", "units": "5704" }, "upfrontCost": { "currencyCode": "USD", "units": "4221" }, "rebateValue": { "currencyCode": "USD", "units": "1483", "nanos": 40039063 }, "paybackYears": 11.5, "savings": { "savingsYear1": { "currencyCode": "USD", "units": "325" }, "savingsYear20": { "currencyCode": "USD", "units": "7799" }, "presentValueOfSavingsYear20": { "currencyCode": "USD", "units": "1083", "nanos": 500244141 }, "financiallyViable": true, "savingsLifetime": { "currencyCode": "USD", "units": "7799" }, "presentValueOfSavingsLifetime": { "currencyCode": "USD", "units": "1083", "nanos": 500244141 } } }, "financedPurchaseSavings": { "annualLoanPayment": { "currencyCode": "USD", "units": "335", "nanos": 85540771 }, "rebateValue": { "currencyCode": "USD" }, "loanInterestRate": 0.05, "savings": { "savingsYear1": { "currencyCode": "USD", "units": "-10" }, "savingsYear20": { "currencyCode": "USD", "units": "1098" }, "presentValueOfSavingsYear20": { "currencyCode": "USD", "units": "568", "nanos": 380859375 }, "financiallyViable": true, "savingsLifetime": { "currencyCode": "USD", "units": "1098" }, "presentValueOfSavingsLifetime": { "currencyCode": "USD", "units": "568", "nanos": 380859375 } } } }, ], /.../ "panelCapacityWatts": 400, "panelHeightMeters": 1.879, "panelWidthMeters": 1.045, "panelLifetimeYears": 20, "buildingStats": { "areaMeters2": 2533.1233, "sunshineQuantiles": [ 348, 1376, 1460, 1519, 1550, 1590, 1618, 1638, 1662, 1756, 1864 ], "groundAreaMeters2": 2356.03 }, "solarPanels": [ { "center": { "latitude": 37.4449659, "longitude": -122.139089 }, "orientation": "LANDSCAPE", "yearlyEnergyDcKwh": 455.40714, "segmentIndex": 1 }, /.../ ] "imageryQuality": "HIGH", "imageryProcessedDate": { "year": 2023, "month": 8, "day": 4 } }
প্যানেল বসানোর জন্য ছাদের অংশ বেছে নিন
কিছু ক্ষেত্রে, সোলার প্যানেল বসানোর জন্য আপনি ছাদের নির্দিষ্ট অংশ বেছে নিতে পারেন। roofSegmentStats কোনও ছাদের অংশের সাইজ,
ওরিয়েন্টেশন ও রোদ পাওয়ার কোয়ান্টাইল সম্পর্কে তথ্য প্রদান করে:
"roofSegmentStats": [ { "pitchDegrees": 11.350553, "azimuthDegrees": 269.6291, "stats": { "areaMeters2": 452.00052, "sunshineQuantiles": [409.601, 1482.1255, 1553.5117, 1582.7875, 1602.3456, 1613.7804, 1623.6434, 1634.0812, 1642.697, 1651.0267, 1771.4792], "groundAreaMeters2": 443.16 }, "center": { "latitude": 37.4449728, "longitude": -122.1393637 }, "boundingBox": { "sw": { "latitude": 37.4447321, "longitude": -122.1394224 }, "ne": { "latitude": 37.4451909, "longitude": -122.1392928 } }, "planeHeightAtCenterMeters": 10.7835045 }, { "pitchDegrees": 12.273684, "azimuthDegrees": 179.12555, "stats": { "areaMeters2": 309.87268, "sunshineQuantiles": [650.5504, 1701.709, 1745.0032, 1768.4081, 1779.1625, 1787.4258, 1794.9333, 1801.3938, 1806.7461, 1814.0724, 1845.8717], "groundAreaMeters2": 302.79 }, "center": { "latitude": 37.4449286, "longitude": -122.1389889 }, "boundingBox": { "sw": { "latitude": 37.4448617, "longitude": -122.1392095 }, "ne": { "latitude": 37.444982, "longitude": -122.1387809 } }, "planeHeightAtCenterMeters": 10.67585 }, /.../ ],
এইসব বৈশিষ্ট্যের উপর ভিত্তি করে, আপনি শুধুমাত্র নির্দিষ্ট ছাদের অংশে
বসানো প্যানেল বেছে নিতে পারেন। buildingInsights এন্ডপয়েন্টের মাধ্যমে ফেরত আসা প্রতিটি প্যানেলে একটি segmentIndex ভ্যালু থাকে যা নির্দেশ করে যে প্যানেলটি কোন ছাদের অংশে রাখা হয়েছে:
{ "panelsCount": 142, "yearlyEnergyDcKwh": 101170.17, "roofSegmentSummaries": [ { "pitchDegrees": 12.273684, "azimuthDegrees": 179.12555, "panelsCount": 122, "yearlyEnergyDcKwh": 87260.48, "segmentIndex": 1 }, { "pitchDegrees": 11.245564, "azimuthDegrees": 179.204, "panelsCount": 18, "yearlyEnergyDcKwh": 12544.052, "segmentIndex": 3 }, { "pitchDegrees": 2.5699794, "azimuthDegrees": 86.05642, "panelsCount": 1, "yearlyEnergyDcKwh": 681.69183, "segmentIndex": 10 }, { "pitchDegrees": 0.10844088, "azimuthDegrees": 0, "panelsCount": 1, "yearlyEnergyDcKwh": 683.9312, "segmentIndex": 14 } ] },
নির্দিষ্ট বৈশিষ্ট্য সহ ছাদের অংশে প্যানেল বেছে নিতে, আপনি
segmentIndex দ্বারা ফিল্টার করতে পারেন। যেমন, আপনি যদি ছাদের দক্ষিণমুখী অংশে প্যানেল বসাতে চান, তাহলে ছাদের কোন অংশে
azimuthDegrees ভ্যালু ৯০ থেকে ২৭০-এর মধ্যে আছে তা শনাক্ত করুন, তারপর সেইসব ছাদের অংশের জন্য সম্পূর্ণ প্যানেল তালিকা ফিল্টার করতে সংশ্লিষ্ট
segmentIndex ব্যবহার করুন।
শনাক্ত করা অ্যারে ডেটার জন্য অনুরোধ করুন
Solar API স্যাটেলাইট ইমেজ ব্যবহার করে আগে থেকে থাকা রুফটপ সোলার ইনস্টলেশন শনাক্ত করে। কাজ করে এমন অঞ্চল সম্পর্কে তথ্য পেতে, কভারেজ ম্যাপ দেখুন।
শনাক্ত করা অ্যারে ডেটার জন্য অনুরোধ করতে, আপনার অনুরোধের বডিতে additionalInsights
প্যারামিটারটি DETECTED_ARRAYS-এ সেট করুন:
curl -X GET "https://solar.googleapis.com/v1/buildingInsights:findClosest?location.latitude=49.9263 &location.longitude=11.5870 &additionalInsights=DETECTED_ARRAYS &required_quality=BASE &key=YOUR_API_KEY"
উত্তরের বডিতে শনাক্ত করা অ্যারে সংক্রান্ত নিম্নলিখিত তথ্য অন্তর্ভুক্ত থাকে:
- বিল্ডিংয়ের ছাদে সোলার প্যানেল ইনস্টল করা হয়েছে কিনা
(
detectionStatus)। - শনাক্তকরণের জন্য ব্যবহৃত লেটেস্ট স্যাটেলাইট ইমেজ ক্যাপচারের তারিখ
(
latestCaptureDate), উপলভ্য থাকলে। - শনাক্ত করা সোলার অ্যারের তালিকা (
arrays)। প্রতিটি অ্যারে সোলার প্যানেলের একটি একক সংলগ্ন এলাকাকে উপস্থাপন করে এবং এতে অন্তর্ভুক্ত রয়েছে:polygonGeojson: ছাদের যে অংশে সোলার প্যানেল শনাক্ত করা হয়েছে, সেটির GeoJSON উপস্থাপনা। GeoJSON ডেটা RFC 7946 ফর্ম্যাটে থাকে এবং একটি সংলগ্ন এলাকার জন্যPolygonদেখায়। একটি বহুভুজ যাতে গর্ত রয়েছে তা বেশ কয়েকটি লুপ দ্বারা উপস্থাপিত হয়।
arrays তালিকাটি শুধুমাত্র তখনই পূরণ করা হয় যখন detectionStatus
DETECTION_STATUS_ARRAYS_DETECTED হয়।
নিচের উদাহরণে শনাক্ত করা অ্যারে সহ কোনও বিল্ডিংয়ের জন্য উত্তর দেখানো হয়েছে (উত্তরটি ছোট করা হয়েছে):
{ "name": "buildings/ChIJ7zV8T9a8oUcRapOpazDCQEE", "center": { "latitude": 49.9262649, "longitude": 11.587273999999999 }, "imageryQuality": "HIGH", "imageryDate": { "year": 2016, "month": 6, "day": 11 }, ... "detectedArrays": { "detectionStatus": "DETECTION_STATUS_ARRAYS_DETECTED", "arrays": [ { "polygonGeojson": { "type": "Polygon", "coordinates": [ [ [11.5873992221349, 49.9262569599232], [11.5873991692473, 49.9262899326168], [11.5873805103546, 49.9262899153611], [11.5873807666599, 49.9262569221221], [11.5873992221349, 49.9262569599232] ] ] } }, ... ], "latestCaptureDate": { "year": 2025, "month": 5, "day": 14 } } }
এটি ব্যবহার করে দেখুন!
APIs Explorer আপনাকে স্যাম্পেল অনুরোধ করতে দেয় যাতে আপনি API এবং API বিকল্পের সাথে পরিচিত হতে পারেন।
পৃষ্ঠার ডানদিকে API আইকন api বেছে নিন।
ঐচ্ছিকভাবে, অনুরোধের প্যারামিটার এডিট করুন।
এক্সিকিউট করুন বোতামটি বেছে নিন। ডায়ালগে, অনুরোধ করার জন্য আপনি যে অ্যাকাউন্ট ব্যবহার করতে চান সেটি বেছে নিন।
APIs Explorer প্যানেলে, APIs Explorer উইন্ডো বড় করতে ফুলস্ক্রিন আইকন ফুলস্ক্রিন বেছে নিন।