
2026/04/22 21:04
340 万枚の太陽光パネル
RSS: https://news.ycombinator.com/rss
要約▶
Japanese 訳:
米国における地上設置太陽光エネルギーのバージョン 2 のデータセット(GM-SEUS)がリリースされ、340 万を超えるパネルを含む大幅な拡張を遂げ、詳細な屋上配列コレクションを導入しました。このアップデートには、OSM や CECSFC などの主に 13 のデータベースから取得された 5,822 件の新たな屋上レコードと、OSM および USPVDB からの主なソースである 18,980 レコードの arrays データセットが加えられています。リリース処理は、Microsoft の Ubuntu for Windows サブシステムを介して Windows 11 Pro で Ubuntu 24 LTS を動作させ、AMD Ryzen 9 9950X CPU、96 GB DDR5 メモリを搭載したワークステーションを使用して行われ、GDAL 3.9.3、DuckDB v1.5.1(H3、JSON、Lindel、Parquet、Spatial エクステンション付き)、および HCMGIS プラグインを含む QGIS バージョン 4.0.1 を利用しました。
本データセットは、設置年(農場は 1985–2025 年、屋上は 2003–2025 年)と地上設置型農場および住宅用屋上の両方に対する技術容量に関する粒度の細かいメタデータを提供します。明確な歴史的トレンドが認められます:1980 年代以来、農場あたりの平均 AC 容量と DC 容量は一貫して増加しており、OSM などの多様なデータベースから統計記録を取得することでこれらの変化を効果的に追跡しています(ただし、屋上方位角などの一部の属性ではデータの不完全性が顕著です)。特定のカラムごとの NULL 値の被覆状況には大きなばらつきがあり、例えば屋上配列では方位角(89.63%)、capMWAC(89.52%)、傾き(90.64%)などの属性で欠落率が非常に高い一方、arrays データセットの容量フィールドでは NULL 値が 0% です。本データセットは単結晶/多結晶および薄膜を含むモジュールタイプをカバーし、大多数の設置では固定軸または単軸配置を採用しています。この強化されたデータセットは、長期的な容量トレンドと地域別分布の高度な分析を支援し、新たなソースが配列コレクションを継続的に補完する中、業界関係者が将来の成長をより効果的に計画できるようにします。
本文
GM-SEUS データセットレビュー(バージョン 2)
10 月に、米国における地上設置型太陽エネルギー資源のデータセット(GM-SEUS: Ground-Mounted Solar Energy in the United States)をレビューしました。このデータセットは、米国内に存在する主な太陽光発電所のアレイとパネルを対象として作成されています。このデータセットのバージョン 1 は 290 万枚のパネルを含んでいましたが、今週月曜日にリリースされたバージョン 2 では、より多くの 340 万枚以上のパネルが含まれています。アレイやパネルの更新に加え、新しい屋上アレイデータセットも追加されました。本投稿では、GM-SEUS データセットのバージョン 2(v2)についてレビューいたします。
私のワークステーション環境
私は AMD Ryzen 9 9950X プロセッサ(クロック周波数 5.7 GHz)を使用しています。この CPU は 16 コア、32 スレッドを搭載し、L1 キャッシュは 1.2 MB、L2 キャッシュは 16 MB、L3 キャッシュは 64 MB の容量を有しています。液体冷却システムが取り付けられており、広々としたフルサイズの Cooler Master HAF 700 コンピュータケースに収められています。
このシステムには、時定格速度 4,800 MT/s の DDR5 メモリ 96 GB と、読み取り速度が最大 12,400 MB/s に対応する第 5 世代 Crucial T700 4 TB NVMe M.2 SSD が搭載されています。SSD の温度管理を助けるためにヒートシンクも装着されており、これがこのシステムの C ドライブとして使用されています。
システムは、完全なモジュール化デザインの Corsair パワーサプライ(1,200 ワット)で電力を供給され、ASRock X870E Nova 90 マザーボード上を実行しています。
Ubuntu 24 LTS を Microsoft の「Windows 用の Ubuntu」機能を利用して Windows 11 Pro にインストールして使用しています。Linux ベースのデスクトップ環境をメインのワーク環境として採用していない理由をご質問いただく可能性がありますので、その点について補足いたします。私は NVIDIA GTX 1080 GPU を使用しており、これは Windows においてより優れたドライバーサポートを受け、かつ ArcGIS Pro は原生に Windows のみに対応しているためです。
前置条件のインストール
本投稿でのデータ解析には GDAL 3.9.3 を使用します。
$ sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable $ sudo apt update $ sudo apt install \ gdal-bin
また、本投稿では DuckDB とその H3、JSON、Lindel、Parquet、Spatial の拡張機能を使用します。
$ cd ~ $ wget -c https://github.com/duckdb/duckdb/releases/download/v1.5.1/duckdb_cli-linux-amd64.zip $ unzip -j duckdb_cli-linux-amd64.zip $ chmod +x duckdb $ ~/duckdb
DuckDB を実行し、必要な拡張機能をインストールします:
INSTALL h3 FROM community; INSTALL lindel FROM community; INSTALL json; INSTALL parquet; INSTALL spatial; .timer on .width 180 LOAD h3; LOAD lindel; LOAD json; LOAD parquet; LOAD spatial;
本投稿で使用された地図は、QGIS バージョン 4.0.1 で描画されました。QGIS は Windows、macOS、Linux のいずれのオペレーティングシステムでも動作するデスクトップアプリケーションであり、近年の人気も高く、世界中から月間およそ 1,500 万回の起動数があると言われているアプリです。本投稿では、Esri からベースマップを追加するために QGIS の HCMGIS プラグインを使用しました。
解析用データセット
以下のコマンドにより、3.4 GB の ZIP ファイルがダウンロードされます。その後、それより GeoPackage(GPKG)ファイルの任意の内容を抽出します。
$ wget -O GMSEUS_v2.zip \ 'https://zenodo.org/records/19581821/files/GMSEUS.zip?download=1' $ unzip -j GMSEUS_v2.zip "*.gpkg"
以下のコマンドは、このデータセット内の GPKG ファイルで使用されている投影座標系(Projection)を示しています。
$ gdalsrsinfo \ -o proj4 \ GMSEUS_RooftopArrays_2025_v2_0.gpkg +proj=aea +lat_0=23 +lon_0=-96 +lat_1=29.5 +lat_2=45.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
以下では、屋上アレイデータを Parquet 形式に変換します。この変換には DuckDB バージョン 1.4.4 の使用が必要で、バージョン 1.5.1 では例外エラーが発生したためです。
COPY ( WITH a AS ( SELECT Source, grndCvr, modType, mount, nativeID, roofArrID, area: IF(area::TEXT='-9999.0', NULL, area::DOUBLE), azimuth: IF(azimuth::TEXT='-9999.0', NULL, azimuth::DOUBLE), capMWAC: IF(capMWAC::TEXT='-9999.0', NULL, capMWAC::DOUBLE), capMWDC: IF(capMWDC::TEXT='-9999.0', NULL, capMWDC::DOUBLE), tilt: IF(tilt::TEXT='-9999.0', NULL, tilt::DOUBLE), instYr: CASE WHEN instYr::INT = -9999 THEN NULL ELSE instYr END, ST_FLIPCOORDINATES( ST_TRANSFORM( geom, '+proj=aea +lat_0=23 +lon_0=-96 +lat_1=29.5 +lat_2=45.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs', 'EPSG:4326')) geometry FROM ST_READ('GMSEUS_RooftopArrays_2025_v2_0.gpkg') ) SELECT * EXCLUDE (geometry), {'xmin': ST_XMIN(ST_EXTENT(geometry)), 'ymin': ST_YMIN(ST_EXTENT(geometry)), 'xmax': ST_XMAX(ST_EXTENT(geometry)), 'ymax': ST_YMAX(ST_EXTENT(geometry))} AS bbox, ST_ASWKB(geometry) geometry FROM a ORDER BY HILBERT_ENCODE([ST_Y(ST_CENTROID(geometry)), ST_X(ST_CENTROID(geometry))]::double[2]) ) TO 'GMSEUS_RooftopArrays_2025_v2_0.parquet' ( FORMAT 'PARQUET', CODEC 'ZSTD', COMPRESSION_LEVEL 22, ROW_GROUP_SIZE 15000);
このデータセットには 5,822 レコードが含まれています。
SELECT COUNT(*) FROM 'GMSEUS_RooftopArrays_2025_v2_0.parquet';
以下は、各カラムに関するユニーク値数と NULL 値の割合の概要です。
SELECT column_name, column_type, null_percentage, approx_unique, min, max FROM (SUMMARIZE FROM READ_PARQUET('GMSEUS_RooftopArrays_2025_v2_0.parquet')) WHERE column_name != 'geometry' AND column_name != 'bbox' ORDER BY LOWER(column_name);
| column_name | column_type | null_percentage | approx_unique | min | max |
|---|---|---|---|---|---|
| area | DOUBLE | 2.77 | 5180 | 15.0 | 487111.0 |
| azimuth | DOUBLE | 89.63 | 156 | 0.0 | 530.02323408881 |
| capMWAC | DOUBLE | 89.52 | 60 | 0.2 | 74.9 |
| capMWDC | DOUBLE | 87.12 | 166 | 0.00448 | 99.7 |
| grndCvr | VARCHAR | 97.61 | 2 | impervious | vegetation |
| instYr | BIGINT | 72.43 | 23 | 2003 | 2025 |
| modType | VARCHAR | 0.00 | 2 | c-si | thin-film |
| mount | VARCHAR | 87.53 | 5 | dual_axis | unknown |
| nativeID | VARCHAR | 0.00 | 4540 | 1 | Xebec 1 solar farm |
| roofArrID | BIGINT | 0.00 | 5830 | 1 | 5822 |
| Source | VARCHAR | 0.00 | 15 | CCVPV | gspt |
| tilt | DOUBLE | 90.64 | 31 | 0.0 | 52.0 |
次に、パネルデータを Parquet 形式に変換します。
COPY ( WITH a AS ( SELECT Source, arrayID: arrayID::INT, panelID: panelID::INT, pnlSource, rowArea, rowAzimuth, rowLength, rowMount, rowSpace: IF(rowSpace::TEXT='-9999.0', NULL, rowSpace::DOUBLE), rowWidth, ST_FLIPCOORDINATES( ST_TRANSFORM( geom, '+proj=aea +lat_0=23 +lon_0=-96 +lat_1=29.5 +lat_2=45.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs', 'EPSG:4326')) geometry FROM ST_READ('GMSEUS_Panels_Final_2025_v2_0.gpkg') ) SELECT * EXCLUDE (geometry), {'xmin': ST_XMIN(ST_EXTENT(geometry)), 'ymin': ST_YMIN(ST_EXTENT(geometry)), 'xmax': ST_XMAX(ST_EXTENT(geometry)), 'ymax': ST_YMAX(ST_EXTENT(geometry))} AS bbox, ST_ASWKB(geometry) geometry FROM a ORDER BY HILBERT_ENCODE([ST_Y(ST_CENTROID(geometry)), ST_X(ST_CENTROID(geometry))]::double[2]) ) TO 'GMSEUS_Panels_Final_2025_v2_0.parquet' ( FORMAT 'PARQUET', CODEC 'ZSTD', COMPRESSION_LEVEL 22, ROW_GROUP_SIZE 15000);
このデータセットには、3,429,157 レコードが含まれています。
SELECT COUNT(*) FROM 'GMSEUS_Panels_Final_2025_v2_0.parquet';
以下は、各カラムに関するユニーク値数と NULL 値の割合の概要です。
SELECT column_name, column_type, null_percentage, approx_unique, min, max FROM (SUMMARIZE FROM READ_PARQUET('GMSEUS_Panels_Final_2025_v2_0.parquet')) WHERE column_name != 'geometry' AND column_name != 'bbox' ORDER BY LOWER(column_name);
| column_name | column_type | null_percentage | approx_unique | min | max |
|---|---|---|---|---|---|
| arrayID | INTEGER | 0.03 | 12653 | 1 | 18980 |
| panelID | INTEGER | 0.00 | 3323765 | 1 | 3429157 |
| pnlSource | VARCHAR | 0.00 | 5 | CCVPV | OSM |
| rowArea | DOUBLE | 0.00 | 100105 | 15.01 | 9982.68 |
| rowAzimuth | DOUBLE | 0.00 | 22029 | 90.0 | 540.0 |
| rowLength | DOUBLE | 0.00 | 25531 | 3.96 | 737.38 |
| rowMount | VARCHAR | 0.00 | 3 | dual_axis | single_axis |
| rowSpace | DOUBLE | 1.27 | 1836 | 0.01 | 20.0 |
| rowWidth | DOUBLE | 0.00 | 2258 | 0.45 | 135.33 |
| Source | VARCHAR | 0.00 | 12 | CCVPV | USPVDB |
次に、アレイとパネルのデータセットを Parquet 形式に変換します。
COPY ( WITH a AS ( SELECT COUNTYFP, GCR1, GCR2, STATEFP, Source, arrayID, avgAzimuth: IF(avgAzimuth::TEXT='-9999.0', NULL, avgAzimuth::DOUBLE), avgLength: IF(avgLength::TEXT='-9999.0', NULL, avgLength::DOUBLE), avgSpace: IF(avgSpace::TEXT='-9999.0', NULL, avgSpace::DOUBLE), avgWidth: IF(avgWidth::TEXT='-9999.0', NULL, avgWidth::DOUBLE), capMWAC, capMWACest, capMWDC, capMWDCest, effInit: IF(effInit::TEXT='-9999.0', NULL, effInit::DOUBLE), grndCvr, instYr: CASE WHEN instYr::INT = -9999 THEN NULL ELSE instYr END, instYrEst: CASE WHEN instYrEst::INT = -9999 THEN NULL ELSE instYrEst END, modType, mount, nativeID: IF(nativeID::TEXT='unknown', NULL, nativeID), newBound, numRow, tilt: IF(tilt::TEXT='-9999.0', NULL, tilt::DOUBLE), tiltEst: CASE WHEN tiltEst::INT = -9999 THEN NULL ELSE tiltEst END, totArea, totRowArea, ST_FLIPCOORDINATES( ST_TRANSFORM( geom, '+proj=aea +lat_0=23 +lon_0=-96 +lat_1=29.5 +lat_2=45.5 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs', 'EPSG:4326')) geometry FROM ST_READ('GMSEUS_Arrays_Final_2025_v2_0.gpkg') ) SELECT * EXCLUDE (geometry), {'xmin': ST_XMIN(ST_EXTENT(geometry)), 'ymin': ST_YMIN(ST_EXTENT(geometry)), 'xmax': ST_XMAX(ST_EXTENT(geometry)), 'ymax': ST_YMAX(ST_EXTENT(geometry))} AS bbox, ST_ASWKB(geometry) geometry FROM a ORDER BY HILBERT_ENCODE([ST_Y(ST_CENTROID(geometry)), ST_X(ST_CENTROID(geometry))]::double[2]) ) TO 'GMSEUS_Arrays_Final_2025_v2_0.parquet' ( FORMAT 'PARQUET', CODEC 'ZSTD', COMPRESSION_LEVEL 22, ROW_GROUP_SIZE 15000);
このデータセットには 18,980 レコードが含まれています。
SELECT COUNT(*) FROM 'GMSEUS_Arrays_Final_2025_v2_0.parquet';
以下は、各カラムに関するユニーク値数と NULL 値の割合の概要です。
SELECT column_name, column_type, null_percentage, approx_unique, min, max FROM (SUMMARIZE FROM READ_PARQUET('GMSEUS_Arrays_Final_2025_v2_0.parquet')) WHERE column_name != 'geometry' AND column_name != 'bbox' ORDER BY LOWER(column_name);
| column_name | column_type | null_percentage | approx_unique | min | max |
|---|---|---|---|---|---|
| arrayID | BIGINT | 0.00 | 16914 | 1 | 18980 |
| avgAzimuth | DOUBLE | 32.88 | 5865 | 90.22 | 540.0 |
| avgLength | DOUBLE | 32.88 | 12674 | 4.02 | 360.128 |
| avgSpace | DOUBLE | 32.88 | 7965 | 0.024 | 20.0 |
| avgWidth | DOUBLE | 32.88 | 6528 | 0.863 | 83.13 |
| capMWAC | DOUBLE | 0.00 | 4182 | 0.003 | 1128.931 |
| capMWACest | DOUBLE | 0.00 | 6620 | 0.003 | 1352.693 |
| capMWDC | DOUBLE | 0.00 | 7203 | 0.003 | 1467.61 |
| capMWDCest | DOUBLE | 0.00 | 8883 | 0.004 | 1758.501 |
| COUNTYFP | VARCHAR | 0.00 | 237 | 001 | 840 |
| effInit | DOUBLE | 0.07 | 12 | 0.09 | 0.21 |
| GCR1 | DOUBLE | 0.00 | 5096 | 0.1 | 1.0 |
| GCR2 | DOUBLE | 0.00 | 5913 | 0.0943 | 0.9883 |
| grndCvr | VARCHAR | 0.00 | 3 | impervious | vegetation |
| instYr | BIGINT | 0.00 | 26 | 1985 | 2025 |
| instYrEst | BIGINT | 0.32 | 23 | 2003 | 2025 |
| modType | VARCHAR | 0.00 | 3 | c-si | thin-film |
| mount | VARCHAR | 0.00 | 9 | dual_axis | unknown |
| nativeID | VARCHAR | 0.23 | 14342 | 1 | York Solar |
| newBound | BIGINT | 0.00 | 2 | 0 | 1 |
| numRow | INTEGER | 0.00 | 1177 | 0 | 90145 |
| Source | VARCHAR | 0.00 | 10 | CCVPV | USPVDB |
| STATEFP | VARCHAR | 0.00 | 49 | 01 | 56 |
| tilt | DOUBLE | 46.39 | 63 | 0.0 | 90.0 |
| tiltEst | BIGINT | 46.39 | 30 | 10 | 43 |
| totArea | INTEGER | 0.00 | 14669 | 30 | 19603313 |
| totRowArea | INTEGER | 0.00 | 13415 | 30 | 8537538 |
屋上太陽光発電アレイ
以下は、屋上太陽光発電アレイデータセットのヒートマップです。
CREATE OR REPLACE TABLE h3_4_stats AS SELECT h3_4: H3_LATLNG_TO_CELL( bbox.ymin, bbox.xmin, 4), COUNT(*) num_recs FROM 'GMSEUS_RooftopArrays_2025_v2_0.parquet' GROUP BY 1; COPY ( SELECT geometry: ST_ASWKB(H3_CELL_TO_BOUNDARY_WKT(h3_4)::geometry), num_recs FROM h3_4_stats ) TO 'GMSEUS_RooftopArrays_2025_v2_0.h3_4.parquet' ( FORMAT 'PARQUET', CODEC 'ZSTD', COMPRESSION_LEVEL 22, ROW_GROUP_SIZE 15000);
このデータセットのソース別の件数です。
SELECT COUNT(*), Source FROM 'GMSEUS_RooftopArrays_2025_v2_0.parquet' GROUP BY 2 ORDER BY 1 DESC;
| count_star() | Source |
|---|---|
| 2175 | OSM |
| 1835 | CECSFC |
| 1024 | TZSAM |
| 485 | USPVDB |
| 93 | GRW |
| 54 | GMSEUSdigArraysPanels_v2_0 |
| 46 | gspt |
| 43 | SAM |
| 24 | GMSEUSgeoref_v2_0 |
| 16 | CCVPV |
| 15 | GPPDB |
| 10 | CWSD |
| 2 | InSPIRE |
以下は、六角形の各領域ごとの主要なソースを示しています。
CREATE OR REPLACE TABLE h3_3s AS WITH b AS ( WITH a AS ( SELECT h3_3: H3_LATLNG_TO_CELL( bbox.ymin, bbox.xmin, 3) , Source, num_recs: COUNT(*) FROM 'GMSEUS_RooftopArrays_2025_v2_0.parquet' GROUP BY 1, 2 ) SELECT *, ROW_NUMBER() OVER (PARTITION BY h3_3 ORDER BY num_recs DESC) AS rn FROM a ) FROM b WHERE rn = 1 ORDER BY num_recs DESC; COPY ( SELECT geom: H3_CELL_TO_BOUNDARY_WKT(h3_3)::GEOMETRY, Source FROM h3_3s ) TO 'GMSEUS_RooftopArrays_2025_v2_0.Source.h3_3.parquet' ( FORMAT 'PARQUET', CODEC 'ZSTD', COMPRESSION_LEVEL 22, ROW_GROUP_SIZE 15000);
以下は、設置年別によるモジュールタイプ(modType)と搭載方法(mount)の分類結果です。
WITH a AS ( SELECT modType, mount, cnt: COUNT(*) FROM 'GMSEUS_RooftopArrays_2025_v2_0.parquet' GROUP BY 1, 2 ) PIVOT a ON modType USING SUM(cnt) GROUP BY mount ORDER BY mount;
| mount | c-si | thin-film |
|---|---|---|
| dual_axis | 33 | NULL |
| fixed_axis | 381 | 2 |
| mixed | 2 | NULL |
| single_axis | 210 | NULL |
| unknown | 98 | NULL |
| NULL | 5096 | NULL |
以下は、設置年別による面積の統計データです。
SELECT instYr, count: COUNT(*), avg: AVG(area)::INT, mean: MEAN(area)::INT, max: MAX(area)::INT FROM 'GMSEUS_RooftopArrays_2025_v2_0.parquet' WHERE instYr IS NOT NULL GROUP BY 1 ORDER BY 1;
| instYr | count | avg | mean | max |
|---|---|---|---|---|
| 2003 | 23 | 2630 | 2630 | 18124 |
| 2005 | 1 | 20342 | 20342 | 20342 |
| 2006 | 1 | 37587 | 37587 | 37587 |
| 2007 | 6 | 16848 | 16848 | 27067 |
| 2008 | 4 | 24989 | 24989 | 30107 |
| 2009 | 11 | 7877 | 7877 | 30229 |
| 2010 | 24 | 15834 | 15834 | 43854 |
| 2011 | 46 | 41511 | 41511 | 487111 |
| 2012 | 54 | 13371 | 13371 | 38923 |
| 2013 | 47 | 14476 | 14476 | 151620 |
| 2014 | 24 | 29289 | 29289 | 65995 |
| 2015 | 37 | 34130 | 34130 | 218080 |
| 2016 | 47 | 21094 | 21094 | 46138 |
| 2017 | 105 | 20882 | 20882 | 315564 |
| 2018 | 225 | 13584 | 13584 | 152636 |
| 2019 | 102 | 21613 | 21613 | 111497 |
| 2020 | 143 | 16052 | 16052 | 70018 |
| 2021 | 120 | 16169 | 16169 | 101955 |
| 2022 | 141 | 17343 | 17343 | 185698 |
| 2023 | 164 | 18865 | 18865 | 137787 |
| 2024 | 132 | 14743 | 14743 | 63190 |
| 2025 | 148 | 12363 | 12363 | 135270 |
アレイとパネル
以下は、アレイデータセットのヒートマップです。
CREATE OR REPLACE TABLE h3_4_stats AS SELECT h3_4: H3_LATLNG_TO_CELL( bbox.ymin, bbox.xmin, 4), COUNT(*) num_recs FROM 'GMSEUS_Arrays_Final_2025_v2_0.parquet' GROUP BY 1; COPY ( SELECT geometry: ST_ASWKB(H3_CELL_TO_BOUNDARY_WKT(h3_4)::geometry), num_recs FROM h3_4_stats ) TO 'GMSEUS_Arrays_Final_2025_v2_0.h3_4.parquet' ( FORMAT 'PARQUET', CODEC 'ZSTD', COMPRESSION_LEVEL 22, ROW_GROUP_SIZE 15000);
以下は、各ソースごとのレコード数です。
SELECT COUNT(*), Source FROM 'GMSEUS_Arrays_Final_2025_v2_0.parquet' GROUP BY 2 ORDER BY 1 DESC;
| count_star() | Source |
|---|---|
| 5222 | OSM |
| 4024 | USPVDB |
| 3278 | TZSAM |
| 2288 | CECSFC |
| 1697 | GMSEUSgeoref_v2_0 |
| 1291 | GMSEUSdigArraysPanels_v2_0 |
| 957 | GRW |
| 155 | CCVPV |
| 68 | CWSD |
以下は、六角形の各領域ごとの主要なソースを示しています。
CREATE OR REPLACE TABLE h3_3s AS WITH b AS ( WITH a AS ( SELECT h3_3: H3_LATLNG_TO_CELL( bbox.ymin, bbox.xmin, 3) , Source, num_recs: COUNT(*) FROM 'GMSEUS_Arrays_Final_2025_v2_0.parquet' GROUP BY 1, 2 ) SELECT *, ROW_NUMBER() OVER (PARTITION BY h3_3 ORDER BY num_recs DESC) AS rn FROM a ) FROM b WHERE rn = 1 ORDER BY num_recs DESC; COPY ( SELECT geom: H3_CELL_TO_BOUNDARY_WKT(h3_3)::GEOMETRY, Source FROM h3_3s ) TO 'GMSEUS_Arrays_Final_2025_v2_0.Source.h3_3.parquet' ( FORMAT 'PARQUET', CODEC 'ZSTD', COMPRESSION_LEVEL 22, ROW_GROUP_SIZE 15000);
近接した複数の太陽光発電施設には、それぞれの検出アルゴリズムによって異なるデータソースが割り当てられる場合があります。また、すべての太陽光発電施設がアレイデータセットに網羅されているとは限りません。さらに、パネルそのものを明示していないアレイデータセットもあります。以下は、緯度 34.837、経度 -118.355 の地点での例です。パネルは紫色で表示されています。
これらは設置年別による発電能力(AC/DC)の統計データです。
SELECT instYr, count: COUNT(*), ACavg: AVG(capMWAC)::INT, DCavg: AVG(capMWDC)::INT, ACmean: MEAN(capMWAC)::INT, DCmean: MEAN(capMWDC)::INT, ACmax: MAX(capMWAC)::INT, DCmax: MAX(capMWDC)::INT FROM 'GMSEUS_Arrays_Final_2025_v2_0.parquet' WHERE instYr IS NOT NULL GROUP BY 1 ORDER BY 1;
| instYr | count | ACavg | DCavg | ACmean | DCmean | ACmax | DCmax |
|---|---|---|---|---|---|---|---|
| 1985 | 1 | 14 | 17 | 14 | 17 | 14 | 17 |
| 1990 | 2 | 88 | 90 | 88 | 90 | 92 | 92 |
| 2002 | 1 | 3 | 3 | 3 | 3 | 3 | 3 |
| 2003 | 7 | 2 | 2 | 2 | 2 | 2 | 3 |
| 2005 | 4 | 0 | 0 | 0 | 0 | 0 | 1 |
| 2006 | 64 | 3 | 4 | 3 | 4 | 100 | 125 |
| 2007 | 101 | 2 | 3 | 2 | 3 | 68 | 68 |
| 2008 | 195 | 2 | 3 | 2 | 3 | 226 | 294 |
| 2009 | 268 | 2 | 2 | 2 | 2 | 150 | 195 |
| 2010 | 401 | 2 | 2 | 2 | 2 | 150 | 195 |
| 2011 | 544 | 3 | 3 | 3 | 3 | 175 | 225 |
| 2012 | 777 | 3 | 3 | 3 | 3 | 331 | 430 |
| 2013 | 793 | 4 | 5 | 4 | 5 | 280 | 313 |
| 2014 | 913 | 6 | 7 | 6 | 7 | 586 | 752 |
| 2015 | 910 | 5 | 7 | 5 | 7 | 314 | 398 |
| 2016 | 1096 | 9 | 12 | 9 | 12 | 300 | 350 |
| 2017 | 1765 | 5 | 6 | 5 | 6 | 350 | 455 |
| 2018 | 1941 | 5 | 6 | 5 | 6 | 352 | 458 |
| 2019 | 1531 | 6 | 8 | 6 | 8 | 300 | 390 |
| 2020 | 1673 | 11 | 15 | 11 | 15 | 638 | 829 |
| 2021 | 1705 | 19 | 24 | 19 | 24 | 504 | 656 |
| 2022 | 1389 | 16 | 21 | 16 | 21 | 868 | 1128 |
| 2023 | 2017 | 34 | 44 | 34 | 44 | 1095 | 1423 |
| 2024 | 730 | 37 | 44 | 37 | 44 | 868 | 1128 |
| 2025 | 152 | 18 | 23 | 18 | 23 | 1129 | 1468 |
以下は、カリフォルニア州にある太陽光発電施設(緯度 35.57、経度 -115.47)のアジマス(方位角)フィールドのグラデーション表現です。これらの検出データはパネルデータセットに含まれていますが、Hacker News の利用者が丁寧に指摘してくださった通り、これらは反射鏡であり、Ivanpah Solar Power Facility に属しています。
別の発電場でも同様の視覚化結果を示します。
砂漠にはマイクロチップのようなパターンが広がっています。
本投稿を最後までご清書いただき、誠にありがとうございます。私は北米およびヨーロッパの皆様向けにコンサルティングおよび実務開発サービスを提供しております。もし私のお仕事があなたの事業にどのように貢献できるかについてお話ししたい場合は、LinkedIn からご連絡いただけますと幸いです。