[{"data":1,"prerenderedAt":540},["ShallowReactive",2],{"example-sun-position-en":3,"faq-sun-position-en":506,"sources-sun-position-en":534},{"input":4,"output":11},{"location":5,"month":6,"day":7,"localHour":8,"utcOffsetH":9,"year":10},"52.52,13.405",6,21,12,2,2026,{"currentElevationDeg":12,"currentAzimuthDeg":13,"sunriseLocalH":14,"sunsetLocalH":15,"sunriseGeomLocalH":16,"sunsetGeomLocalH":17,"transitLocalH":18,"transitAltitudeDeg":19,"dayLengthHours":20,"sunriseAzimuthDeg":21,"sunsetAzimuthDeg":22,"twilights":23,"paths":29,"horizon":440,"latitudeDeg":472,"month":6,"day":7,"localHour":8,"steps":494,"warnings":505},58.2,149.5,4.714,21.546,4.836,21.424,13.13,60.95,16.83,47.8,312.2,{"civilDawnH":24,"civilDuskH":25,"nauticalDawnH":26,"nauticalDuskH":27,"astroDawnH":28,"astroDuskH":28},3.878,22.383,2.49,23.77,null,[30,243,363],{"id":31,"points":32},"summer",[33,37,41,45,49,53,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,212,216,220,224,228,231,235,239],{"azimuthDeg":34,"altitudeDeg":35,"localHour":36},43.13,-3.31,4.33,{"azimuthDeg":38,"altitudeDeg":39,"localHour":40},47.18,-1.15,4.67,{"azimuthDeg":42,"altitudeDeg":43,"localHour":44},51.15,1.5,5,{"azimuthDeg":46,"altitudeDeg":47,"localHour":48},55.04,3.79,5.33,{"azimuthDeg":50,"altitudeDeg":51,"localHour":52},58.87,6.27,5.67,{"azimuthDeg":54,"altitudeDeg":55,"localHour":6},62.64,8.89,{"azimuthDeg":57,"altitudeDeg":58,"localHour":59},66.37,11.62,6.33,{"azimuthDeg":61,"altitudeDeg":62,"localHour":63},70.08,14.43,6.67,{"azimuthDeg":65,"altitudeDeg":66,"localHour":67},73.78,17.31,7,{"azimuthDeg":69,"altitudeDeg":70,"localHour":71},77.49,20.25,7.33,{"azimuthDeg":73,"altitudeDeg":74,"localHour":75},81.23,23.23,7.67,{"azimuthDeg":77,"altitudeDeg":78,"localHour":79},85.03,26.25,8,{"azimuthDeg":81,"altitudeDeg":82,"localHour":83},88.92,29.28,8.33,{"azimuthDeg":85,"altitudeDeg":86,"localHour":87},92.91,32.32,8.67,{"azimuthDeg":89,"altitudeDeg":90,"localHour":91},97.06,35.35,9,{"azimuthDeg":93,"altitudeDeg":94,"localHour":95},101.39,38.35,9.33,{"azimuthDeg":97,"altitudeDeg":98,"localHour":99},105.96,41.31,9.67,{"azimuthDeg":101,"altitudeDeg":102,"localHour":103},110.81,44.19,10,{"azimuthDeg":105,"altitudeDeg":106,"localHour":107},116.01,46.98,10.33,{"azimuthDeg":109,"altitudeDeg":110,"localHour":111},121.62,49.65,10.67,{"azimuthDeg":113,"altitudeDeg":114,"localHour":115},127.72,52.15,11,{"azimuthDeg":117,"altitudeDeg":118,"localHour":119},134.37,54.44,11.33,{"azimuthDeg":121,"altitudeDeg":122,"localHour":123},141.62,56.48,11.67,{"azimuthDeg":13,"altitudeDeg":12,"localHour":8},{"azimuthDeg":126,"altitudeDeg":127,"localHour":128},157.99,59.55,12.33,{"azimuthDeg":130,"altitudeDeg":131,"localHour":132},166.99,60.47,12.67,{"azimuthDeg":134,"altitudeDeg":135,"localHour":136},176.32,60.91,13,{"azimuthDeg":138,"altitudeDeg":139,"localHour":140},185.75,60.85,13.33,{"azimuthDeg":142,"altitudeDeg":143,"localHour":144},195.02,60.3,13.67,{"azimuthDeg":146,"altitudeDeg":147,"localHour":148},203.92,59.29,14,{"azimuthDeg":150,"altitudeDeg":151,"localHour":152},212.28,57.86,14.33,{"azimuthDeg":154,"altitudeDeg":155,"localHour":156},220.02,56.06,14.67,{"azimuthDeg":158,"altitudeDeg":159,"localHour":160},227.14,53.96,15,{"azimuthDeg":162,"altitudeDeg":163,"localHour":164},233.66,51.62,15.33,{"azimuthDeg":166,"altitudeDeg":167,"localHour":168},239.64,49.08,15.67,{"azimuthDeg":170,"altitudeDeg":171,"localHour":172},245.16,46.38,16,{"azimuthDeg":174,"altitudeDeg":175,"localHour":176},250.28,43.57,16.33,{"azimuthDeg":178,"altitudeDeg":179,"localHour":180},255.07,40.66,16.67,{"azimuthDeg":182,"altitudeDeg":183,"localHour":184},259.58,37.7,17,{"azimuthDeg":186,"altitudeDeg":187,"localHour":188},263.87,34.69,17.33,{"azimuthDeg":190,"altitudeDeg":191,"localHour":192},267.97,31.66,17.67,{"azimuthDeg":194,"altitudeDeg":195,"localHour":196},271.94,28.62,18,{"azimuthDeg":198,"altitudeDeg":199,"localHour":200},275.8,25.59,18.33,{"azimuthDeg":202,"altitudeDeg":203,"localHour":204},279.59,22.58,18.67,{"azimuthDeg":206,"altitudeDeg":207,"localHour":208},283.32,19.6,19,{"azimuthDeg":210,"altitudeDeg":180,"localHour":211},287.03,19.33,{"azimuthDeg":213,"altitudeDeg":214,"localHour":215},290.73,13.8,19.67,{"azimuthDeg":217,"altitudeDeg":218,"localHour":219},294.44,11.01,20,{"azimuthDeg":221,"altitudeDeg":222,"localHour":223},298.18,8.31,20.33,{"azimuthDeg":225,"altitudeDeg":226,"localHour":227},301.96,5.71,20.67,{"azimuthDeg":229,"altitudeDeg":230,"localHour":7},305.8,3.27,{"azimuthDeg":232,"altitudeDeg":233,"localHour":234},309.71,1.03,21.33,{"azimuthDeg":236,"altitudeDeg":237,"localHour":238},313.7,-1.64,21.67,{"azimuthDeg":240,"altitudeDeg":241,"localHour":242},317.77,-3.76,22,{"id":244,"points":245},"equinox",[246,249,252,255,258,261,264,267,270,273,276,279,282,285,288,291,294,297,300,303,306,309,312,315,318,321,324,327,330,333,336,339,342,345,348,351,354,357,360],{"azimuthDeg":247,"altitudeDeg":248,"localHour":67},87.23,-1.83,{"azimuthDeg":250,"altitudeDeg":251,"localHour":71},91.2,1.56,{"azimuthDeg":253,"altitudeDeg":254,"localHour":75},95.17,4.44,{"azimuthDeg":256,"altitudeDeg":257,"localHour":79},99.18,7.41,{"azimuthDeg":259,"altitudeDeg":260,"localHour":83},103.23,10.37,{"azimuthDeg":262,"altitudeDeg":263,"localHour":87},107.36,13.29,{"azimuthDeg":265,"altitudeDeg":266,"localHour":91},111.59,16.15,{"azimuthDeg":268,"altitudeDeg":269,"localHour":95},115.95,18.93,{"azimuthDeg":271,"altitudeDeg":272,"localHour":99},120.44,21.61,{"azimuthDeg":274,"altitudeDeg":275,"localHour":103},125.1,24.17,{"azimuthDeg":277,"altitudeDeg":278,"localHour":107},129.95,26.59,{"azimuthDeg":280,"altitudeDeg":281,"localHour":111},134.99,28.83,{"azimuthDeg":283,"altitudeDeg":284,"localHour":115},140.25,30.89,{"azimuthDeg":286,"altitudeDeg":287,"localHour":119},145.72,32.73,{"azimuthDeg":289,"altitudeDeg":290,"localHour":123},151.4,34.32,{"azimuthDeg":292,"altitudeDeg":293,"localHour":8},157.29,35.64,{"azimuthDeg":295,"altitudeDeg":296,"localHour":128},163.35,36.67,{"azimuthDeg":298,"altitudeDeg":299,"localHour":132},169.55,37.39,{"azimuthDeg":301,"altitudeDeg":302,"localHour":136},175.84,37.78,{"azimuthDeg":304,"altitudeDeg":305,"localHour":140},182.17,37.84,{"azimuthDeg":307,"altitudeDeg":308,"localHour":144},188.48,37.56,{"azimuthDeg":310,"altitudeDeg":311,"localHour":148},194.72,36.96,{"azimuthDeg":313,"altitudeDeg":314,"localHour":152},200.83,36.03,{"azimuthDeg":316,"altitudeDeg":317,"localHour":156},206.78,34.81,{"azimuthDeg":319,"altitudeDeg":320,"localHour":160},212.54,33.31,{"azimuthDeg":322,"altitudeDeg":323,"localHour":164},218.08,31.56,{"azimuthDeg":325,"altitudeDeg":326,"localHour":168},223.42,29.58,{"azimuthDeg":328,"altitudeDeg":329,"localHour":172},228.53,27.4,{"azimuthDeg":331,"altitudeDeg":332,"localHour":176},233.45,25.04,{"azimuthDeg":334,"altitudeDeg":335,"localHour":180},238.17,22.53,{"azimuthDeg":337,"altitudeDeg":338,"localHour":184},242.73,19.89,{"azimuthDeg":340,"altitudeDeg":341,"localHour":188},247.13,17.15,{"azimuthDeg":343,"altitudeDeg":344,"localHour":192},251.4,14.32,{"azimuthDeg":346,"altitudeDeg":347,"localHour":196},255.57,11.42,{"azimuthDeg":349,"altitudeDeg":350,"localHour":200},259.66,8.47,{"azimuthDeg":352,"altitudeDeg":353,"localHour":204},263.68,5.51,{"azimuthDeg":355,"altitudeDeg":356,"localHour":208},267.67,2.59,{"azimuthDeg":358,"altitudeDeg":359,"localHour":211},271.64,-0.11,{"azimuthDeg":361,"altitudeDeg":362,"localHour":215},275.62,-3.74,{"id":364,"points":365},"winter",[366,369,372,375,378,381,384,387,390,393,396,399,402,405,408,410,413,416,419,422,425,428,431,434,437],{"azimuthDeg":367,"altitudeDeg":368,"localHour":91},126.56,-2.56,{"azimuthDeg":370,"altitudeDeg":371,"localHour":95},130.48,0.33,{"azimuthDeg":373,"altitudeDeg":374,"localHour":99},134.49,2.34,{"azimuthDeg":376,"altitudeDeg":377,"localHour":103},138.57,4.34,{"azimuthDeg":379,"altitudeDeg":380,"localHour":107},142.75,6.22,{"azimuthDeg":382,"altitudeDeg":383,"localHour":111},147.02,7.94,{"azimuthDeg":385,"altitudeDeg":386,"localHour":115},151.38,9.49,{"azimuthDeg":388,"altitudeDeg":389,"localHour":119},155.83,10.83,{"azimuthDeg":391,"altitudeDeg":392,"localHour":123},160.36,11.96,{"azimuthDeg":394,"altitudeDeg":395,"localHour":8},164.96,12.86,{"azimuthDeg":397,"altitudeDeg":398,"localHour":128},169.62,13.52,{"azimuthDeg":400,"altitudeDeg":401,"localHour":132},174.32,13.95,{"azimuthDeg":403,"altitudeDeg":404,"localHour":136},179.04,14.12,{"azimuthDeg":406,"altitudeDeg":407,"localHour":140},183.77,14.05,{"azimuthDeg":307,"altitudeDeg":409,"localHour":144},13.72,{"azimuthDeg":411,"altitudeDeg":412,"localHour":148},193.16,13.15,{"azimuthDeg":414,"altitudeDeg":415,"localHour":152},197.78,12.35,{"azimuthDeg":417,"altitudeDeg":418,"localHour":156},202.34,11.31,{"azimuthDeg":420,"altitudeDeg":421,"localHour":160},206.83,10.05,{"azimuthDeg":423,"altitudeDeg":424,"localHour":164},211.23,8.59,{"azimuthDeg":426,"altitudeDeg":427,"localHour":168},215.53,6.94,{"azimuthDeg":429,"altitudeDeg":430,"localHour":172},219.75,5.12,{"azimuthDeg":432,"altitudeDeg":433,"localHour":176},223.87,3.16,{"azimuthDeg":435,"altitudeDeg":436,"localHour":180},227.91,1.13,{"azimuthDeg":438,"altitudeDeg":439,"localHour":184},231.86,-1.59,{"azimuthDeg":441,"heightDeg":490},[442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,160,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489],-180,-172.5,-165,-157.5,-150,-142.5,-135,-127.5,-120,-112.5,-105,-97.5,-90,-82.5,-75,-67.5,-60,-52.5,-45,-37.5,-30,-22.5,-15,-7.5,0,7.5,22.5,30,37.5,45,52.5,60,67.5,75,82.5,90,97.5,105,112.5,120,127.5,135,142.5,150,157.5,165,172.5,180,[491,491,491,491,491,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,492,493,493,493,493,493,493,491,466,466,491,491,491,491,466,466,466,466,491,491,491,491,491,491,491,491,491],0.4,1.1,0.8,[495,501],{"label":496,"expression":497,"value":498,"unit":499,"provenance":500},"spaPosition","NREL SPA (Reda & Andreas 2004)",58.202558854754365,"deg","exact",{"label":502,"expression":503,"value":504,"unit":499,"provenance":500},"spaTransit","max h(t), Dreiteilungssuche",60.94610694891379,[],[507,510,513,516,519,522,525,528,531],{"q":508,"a":509},"How accurate is this sun position calculator?","It computes with a complete port of the NREL Solar Position Algorithm (Reda & Andreas 2004) — the reference algorithm used by PVGIS-adjacent tools and pvlib. The port is cross-validated by automated test against the pvlib reference implementation: deviation below 0.01° in altitude and azimuth across 60 reference points, sunrise and sunset times within 60 seconds across twelve events. Any change to the implementation that breaks these thresholds turns the build red.",{"q":511,"a":512},"Why are there a visible and a geometric sunrise?","The geometric sunrise is the moment the sun’s centre passes the mathematical horizon (0°). But the sun becomes visible earlier: atmospheric refraction lifts it by about 0.57°, and half the solar diameter (0.27°) adds on — together the famous −0.833°. That makes several minutes of difference depending on latitude; weather services and calendars quote the visible times, while some PV simulations compute geometrically.",{"q":514,"a":515},"What does the sun-path diagram show — and why the terrain horizon?","The three curves are the sun paths at summer solstice, equinox and winter solstice — every other day of the year lies between them. Underneath sits your site’s terrain horizon from the PVGIS elevation model: where the winter path disappears behind the horizon, your surface gets no direct sun in winter. Exactly this diagram is the standard tool of shading analysis in architecture and PV planning.",{"q":517,"a":518},"Does the horizon include trees and neighbouring houses?","No, inherently not: the terrain horizon comes from an elevation model with roughly 90 m resolution — mountains and ridgelines yes, the neighbour’s tree no. Yet near obstacles are what actually shades real roofs. Until the obstacle editor arrives: measure an obstacle’s azimuth and elevation angle yourself (compass app plus inclinometer) and compare with the path curves — if the obstacle sits above the winter path, it costs yield exactly when yield is scarcest.",{"q":520,"a":521},"Why do I have to choose the time zone myself?","Because automatic DST logic confuses more than it helps on changeover days: in the changeover night one hour exists twice or not at all. The calculator therefore works with a fixed zone offset (CET, CEST or UTC) and warns explicitly on the EU changeover days. For planning, fixed zone time is the cleaner reference anyway — solar noon in Berlin swings only between 11:50 and 12:21 CET across the year (equation of time plus longitude), one hour later in CEST.",{"q":523,"a":524},"What are twilight times good for in PV planning?","Directly, little — but they answer the neighbouring questions of the same diagram: civil twilight (−6°) bounds usable daylight, nautical (−12°) and astronomical (−18°) mark when the sky is truly dark. More relevant off-grid: between visible sunset and darkness lies nearly an hour of residual light without meaningful yield — when planning load profiles, count battery time from sunset, not from darkness.",{"q":526,"a":527},"How high is the sun in December — and in June?","The quick formula for solar noon at the winter solstice is 90° minus latitude minus 23.44°. For Berlin (52.5° N) that gives 14.0°; the calculator's exact value for 21 December is 14.1° (refraction included). Munich reaches 18.5°, Hamburg only 13.1°. On 21 June the sign flips: 90° − latitude + 23.44° — 60.9° in Berlin, 65.3° in Munich. This factor-four swing in noon altitude is why row spacing, facade yield and winter shading are always dimensioned against the December sun, never against the yearly average.",{"q":529,"a":530},"In which compass direction does the sun rise and set?","Only around the equinoxes does the sun rise almost exactly east and set west (Berlin, 20 March: azimuth 89° and 271°). At the summer solstice, sunrise moves far into the northeast — Berlin, 21 June: 04:43 at azimuth 48°, sunset 21:33 at 312° in the northwest, for 16.8 hours of daylight. At the winter solstice it is the southeast: sunrise 08:15 at 129°, sunset 15:54 at 231°, day length just 7.6 hours. The rise point swings across more than 80° of horizon over the year — which is why an east-facing window gets morning sun in summer that it never sees in December.",{"q":532,"a":533},"How do I check the sun path for my house or plot?","Set the location (place search or coordinates), then read the diagram bottom-up: the orange winter curve is the critical one. Everything that pokes above it — terrain horizon, roofs, trees — shades your plot exactly in the months when light is scarcest; the summer curve runs so high that it clears most obstacles anyway. For a planned PV array, balcony system or vegetable bed, compare the obstacle direction (azimuth scale at the bottom) with the curves: an obstruction due south hurts all year, one in the northeast only costs summer morning sun. The rise and set azimuths below the diagram give the exact compass window of direct sun.",[535],{"name":536,"url":537,"retrievedAt":538,"version":539},"JRC Photovoltaic Geographical Information System (PVGIS), European Commission — endpoints tmy, MRcalc, printhorizon","https:\u002F\u002Fre.jrc.ec.europa.eu\u002Fpvg_tools\u002F","2026-07-30","PVGIS API v5_3, solar radiation database PVGIS-SARAH3",1786101751609]