buildingInsights एंडपॉइंट से, किसी इमारत की जगह, डाइमेंशन, और सौर ऊर्जा उत्पादन की क्षमता के बारे में अहम जानकारी मिलती है. खास तौर पर, आपको इनके बारे में जानकारी मिल सकती है:
- सौर ऊर्जा उत्पादन की क्षमता. इसमें सोलर पैनल का साइज़, साल भर में मिलने वाली धूप, कार्बन ऑफ़सेट के फ़ैक्टर वगैरह शामिल हैं
- सोलर पैनल की पोज़िशन, ओरिएंटेशन, और ऊर्जा उत्पादन
- सबसे सही सोलर लेआउट के लिए, हर महीने का अनुमानित बिजली बिल, उससे जुड़ी लागत, और फ़ायदे
Solar API, सौर ऊर्जा की क्षमता और धूप की उपलब्धता को कैसे तय करता है, इस बारे में ज़्यादा जानने के लिए Solar API के सिद्धांत देखें.
APIs Explorer की मदद से, लाइव अनुरोध किए जा सकते हैं. इससे आपको एपीआई और उसके विकल्पों के बारे में जानकारी मिलती है:
बिल्डिंग इनसाइट के अनुरोधों के बारे में जानकारी
इमारत की अहम जानकारी पाने का अनुरोध करने के लिए, इस यूआरएल पर एचटीटीपी जीईटी अनुरोध भेजें:
https://solar.googleapis.com/v1/buildingInsights:findClosest?key=YOUR_API_KEY
अपने अनुरोध के यूआरएल में वे पैरामीटर शामिल करें जो जगह के अक्षांश और देशांतर के निर्देशांक बताते हैं. साथ ही, नतीजों में कम से कम ज़रूरी क्वालिटी लेवल की जानकारी देते हैं.
अहम जानकारी वाले जवाब बनाने के बारे में जानकारी
Solar API, रिस्पॉन्स बॉडी में किसी इमारत की जगह, डाइमेंशन, और सौर ऊर्जा की क्षमता के बारे में जानकारी दिखाता है.
इमेज क्वालिटी
कुछ मामलों में, किसी जगह के लिए अनुरोध की गई इमेज क्वालिटी, उपलब्ध इमेज क्वालिटी से अलग हो सकती है. ऐसे मामलों में, यह व्यवहार देखने को मिल सकता है:
| स्थिति | जवाब देने का तरीका |
|---|---|
किसी जगह की ऐसी इमेज उपलब्ध नहीं है जो requiredQuality के मुताबिक हो. |
Solar API, 404 स्टेटस कोड के साथ NOT_FOUND गड़बड़ी दिखाता है. |
अनुरोध में किसी खास requiredQuality के बारे में बताया गया है, लेकिन सिर्फ़ बेहतर क्वालिटी की इमेज का डेटा उपलब्ध है. |
Solar API, किसी जगह के लिए उपलब्ध सबसे अच्छी क्वालिटी का डेटा दिखाता है. |
इमारत की अहम जानकारी पाने के अनुरोध का उदाहरण
नीचे दिए गए उदाहरण में, अक्षांश = 37.4450 और देशांतर = -122.1390 के निर्देशांकों पर मौजूद जगह के लिए, बिल्डिंग इनसाइट की जानकारी का अनुरोध किया गया है:
एपीआई पासकोड
एपीआई पासकोड का इस्तेमाल करके अनुरोध करने के लिए, अपने एपीआई पासकोड को इनपुट पैरामीटर के तौर पर शामिल करें:
curl -X GET "https://solar.googleapis.com/v1/buildingInsights:findClosest?location.latitude=37.4450 &location.longitude=-122.1390 &requiredQuality=HIGH &key=YOUR_API_KEY"
cURL अनुरोध में मौजूद यूआरएल को अपने ब्राउज़र के यूआरएल बार में चिपकाकर भी एचटीटीपी अनुरोध किए जा सकते हैं.
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 का इस्तेमाल करके अनुरोध करने के लिए, अनुरोध में अपना एपीआई पासकोड या OAuth टोकन शामिल करें. इस उदाहरण में, एपीआई पासकोड का इस्तेमाल किया गया है:
/** * 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 की वैल्यू 90 से 270 के बीच है. इसके बाद, उन हिस्सों के लिए पैनल की पूरी सूची को फ़िल्टर करने के लिए, उनसे जुड़े 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 डेटा, आरएफ़सी 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 को चुनें.
अनुरोध के पैरामीटर में बदलाव करें. हालांकि, ऐसा करना ज़रूरी नहीं है.
Execute बटन को चुनें. डायलॉग बॉक्स में, वह खाता चुनें जिसका इस्तेमाल करके आपको अनुरोध करना है.
APIs Explorer पैनल में, फ़ुलस्क्रीन आइकॉन fullscreen को चुनें. इससे APIs Explorer विंडो बड़ी हो जाएगी.