From dee2cb1f70185aafdc4251bac00d6c59e6f2b7b0 Mon Sep 17 00:00:00 2001 From: "Gregory H. Halverson" Date: Thu, 11 Sep 2025 13:32:54 -0700 Subject: [PATCH] including point GeoSeries to MultiPoint conversion in wrap_geometry --- notebooks/GeoSeries to MultiGeometry.ipynb | 556 +++++++++++++++++++++ pyproject.toml | 19 +- rasters/wrap_geometry.py | 3 + 3 files changed, 569 insertions(+), 9 deletions(-) create mode 100644 notebooks/GeoSeries to MultiGeometry.ipynb diff --git a/notebooks/GeoSeries to MultiGeometry.ipynb b/notebooks/GeoSeries to MultiGeometry.ipynb new file mode 100644 index 0000000..71abbd8 --- /dev/null +++ b/notebooks/GeoSeries to MultiGeometry.ipynb @@ -0,0 +1,556 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "id": "282f4532", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "from geopandas import GeoSeries\n", + "import rasters as rt\n", + "from rasters import MultiPoint\n", + "from ECOv002_calval_tables import load_calval_table" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "79f4c98f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0IDvegetationclimateSTICinstBESSinstMOD16instPTJPLSMinstETinstETinstUncertainty...EndDateLE_countclosure_ratiogeometrytime_UTCST_KST_CTa_CSWin_Wm2emissivity
00US-NC3ENFCfa270.34520078.53355392.851840307.021970487.383423118.916280...1/1/22 05:0095761.02POINT (-76.656 35.799)2019-10-02 19:09:40305.1031.9532.658920545.510560.948
11US-Mi3CVMDfb232.141600229.20093640.118470375.089300106.825577167.919460...12/28/19 04:00121700.92POINT (-80.637 41.8222)2019-06-23 18:17:17304.3431.1924.227982848.343900.952
22US-Mi3CVMDfb356.355740335.23154625.661700284.686250NaN132.936340...12/28/19 04:00121700.92POINT (-80.637 41.8222)2019-06-27 16:35:42304.0630.9126.178862838.811600.972
33US-Mi3CVMDfb332.938400326.68680624.254330251.414490178.827545141.132420...12/28/19 04:00121700.92POINT (-80.637 41.8222)2019-06-30 15:44:10301.8028.6522.527096851.724800.974
44US-Mi3CVMDfb286.854030237.21654511.082180228.520170154.791626114.809410...12/28/19 04:00121700.92POINT (-80.637 41.8222)2019-07-01 14:53:48303.1830.0323.280691702.551600.960
..................................................................
10601060US-xAEGRACfa70.923310172.3745981.64523015.282976NaN56.385185...12/1/22 00:00296150.60POINT (-99.0588 35.4106)2021-12-11 16:01:12278.785.633.815752286.846600.980
10611061US-xAEGRACfa116.543190121.8164165.46932022.186659NaN40.509410...12/1/22 00:00296150.60POINT (-99.0588 35.4106)2022-03-25 22:45:31293.2820.1319.266186290.874000.976
10621062US-xAEGRACfa129.8801000.00000118.77724055.343586NaN52.403820...12/1/22 00:00296150.60POINT (-99.0588 35.4106)2022-04-12 22:53:09301.9428.7932.110336352.195300.976
10631063US-xAEGRACfa2.707851140.38632126.49052440.434025NaN57.769722...12/1/22 00:00296150.60POINT (-99.0588 35.4106)2022-04-14 14:45:37290.7217.5710.464681420.678800.976
10641064US-xAEGRACfa303.2429500.00000271.749480119.763630190.823303122.092445...12/1/22 00:00296150.60POINT (-99.0588 35.4106)2022-04-20 19:38:47314.7641.6130.316103781.841100.978
\n", + "

1065 rows × 77 columns

\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 ID vegetation climate STICinst BESSinst \\\n", + "0 0 US-NC3 ENF Cfa 270.345200 78.53355 \n", + "1 1 US-Mi3 CVM Dfb 232.141600 229.20093 \n", + "2 2 US-Mi3 CVM Dfb 356.355740 335.23154 \n", + "3 3 US-Mi3 CVM Dfb 332.938400 326.68680 \n", + "4 4 US-Mi3 CVM Dfb 286.854030 237.21654 \n", + "... ... ... ... ... ... ... \n", + "1060 1060 US-xAE GRA Cfa 70.923310 172.37459 \n", + "1061 1061 US-xAE GRA Cfa 116.543190 121.81641 \n", + "1062 1062 US-xAE GRA Cfa 129.880100 0.00000 \n", + "1063 1063 US-xAE GRA Cfa 2.707851 140.38632 \n", + "1064 1064 US-xAE GRA Cfa 303.242950 0.00000 \n", + "\n", + " MOD16inst PTJPLSMinst ETinst ETinstUncertainty ... \\\n", + "0 392.851840 307.021970 487.383423 118.916280 ... \n", + "1 640.118470 375.089300 106.825577 167.919460 ... \n", + "2 625.661700 284.686250 NaN 132.936340 ... \n", + "3 624.254330 251.414490 178.827545 141.132420 ... \n", + "4 511.082180 228.520170 154.791626 114.809410 ... \n", + "... ... ... ... ... ... \n", + "1060 81.645230 15.282976 NaN 56.385185 ... \n", + "1061 65.469320 22.186659 NaN 40.509410 ... \n", + "1062 118.777240 55.343586 NaN 52.403820 ... \n", + "1063 126.490524 40.434025 NaN 57.769722 ... \n", + "1064 271.749480 119.763630 190.823303 122.092445 ... \n", + "\n", + " EndDate LE_count closure_ratio geometry \\\n", + "0 1/1/22 05:00 9576 1.02 POINT (-76.656 35.799) \n", + "1 12/28/19 04:00 12170 0.92 POINT (-80.637 41.8222) \n", + "2 12/28/19 04:00 12170 0.92 POINT (-80.637 41.8222) \n", + "3 12/28/19 04:00 12170 0.92 POINT (-80.637 41.8222) \n", + "4 12/28/19 04:00 12170 0.92 POINT (-80.637 41.8222) \n", + "... ... ... ... ... \n", + "1060 12/1/22 00:00 29615 0.60 POINT (-99.0588 35.4106) \n", + "1061 12/1/22 00:00 29615 0.60 POINT (-99.0588 35.4106) \n", + "1062 12/1/22 00:00 29615 0.60 POINT (-99.0588 35.4106) \n", + "1063 12/1/22 00:00 29615 0.60 POINT (-99.0588 35.4106) \n", + "1064 12/1/22 00:00 29615 0.60 POINT (-99.0588 35.4106) \n", + "\n", + " time_UTC ST_K ST_C Ta_C SWin_Wm2 emissivity \n", + "0 2019-10-02 19:09:40 305.10 31.95 32.658920 545.51056 0.948 \n", + "1 2019-06-23 18:17:17 304.34 31.19 24.227982 848.34390 0.952 \n", + "2 2019-06-27 16:35:42 304.06 30.91 26.178862 838.81160 0.972 \n", + "3 2019-06-30 15:44:10 301.80 28.65 22.527096 851.72480 0.974 \n", + "4 2019-07-01 14:53:48 303.18 30.03 23.280691 702.55160 0.960 \n", + "... ... ... ... ... ... ... \n", + "1060 2021-12-11 16:01:12 278.78 5.63 3.815752 286.84660 0.980 \n", + "1061 2022-03-25 22:45:31 293.28 20.13 19.266186 290.87400 0.976 \n", + "1062 2022-04-12 22:53:09 301.94 28.79 32.110336 352.19530 0.976 \n", + "1063 2022-04-14 14:45:37 290.72 17.57 10.464681 420.67880 0.976 \n", + "1064 2022-04-20 19:38:47 314.76 41.61 30.316103 781.84110 0.978 \n", + "\n", + "[1065 rows x 77 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = load_calval_table()\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b7f401c2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 POINT (-76.656 35.799)\n", + "1 POINT (-80.637 41.8222)\n", + "2 POINT (-80.637 41.8222)\n", + "3 POINT (-80.637 41.8222)\n", + "4 POINT (-80.637 41.8222)\n", + " ... \n", + "1060 POINT (-99.0588 35.4106)\n", + "1061 POINT (-99.0588 35.4106)\n", + "1062 POINT (-99.0588 35.4106)\n", + "1063 POINT (-99.0588 35.4106)\n", + "1064 POINT (-99.0588 35.4106)\n", + "Name: geometry, Length: 1065, dtype: geometry" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gs = df.geometry\n", + "gs" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "52eef858", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MULTIPOINT ((-76.656 35.799), (-80.637 41.8222), (-80.637 41.8222), (-80.637 41.8222), (-80.637 41.8222), (-80.637 41.8222), (-75.9038 35.7879), (-80.6313 41.7727), (-80.6313 41.7727), (-80.6313 41.7727), (-80.6313 41.7727), (-80.6313 41.7727), (-90.3004 45.9793), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-122.3303 45.7624), (-71.7181 43.9397), (-71.7181 43.9397), (-71.7181 43.9397), (-71.7181 43.9397), (-71.7181 43.9397), (-71.7181 43.9397), (-71.7181 43.9397), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-121.6078 44.3233), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-76.6685 35.803), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.0522 31.7438), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-110.8661 31.8214), (-90.2475 45.9245), (-90.2475 45.9245), (-105.5864 40.052), (-105.5864 40.052), (-79.9333 44.3167), (-79.9333 44.3167), (-81.9509 27.3836), (-81.9509 27.3836), (-81.9509 27.3836), (-81.9509 27.3836), (-81.9509 27.3836), (-81.9509 27.3836), (-81.9509 27.3836), (-81.9509 27.3836), (-81.9509 27.3836), (-81.9509 27.3836), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-116.7356 43.1439), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-84.6975 45.5625), (-90.2823 45.9392), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-79.2322 33.3482), (-89.7117 43.3448), (-89.7117 43.3448), (-89.7117 43.3448), (-89.7117 43.3448), (-89.7117 43.3448), (-89.7117 43.3448), (-89.7117 43.3448), (-89.7117 43.3448), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-109.9419 31.7365), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-121.5574 44.4523), (-82.2188 29.7381), (-82.2188 29.7381), (-82.2188 29.7381), (-82.2188 29.7381), (-82.2188 29.7381), (-82.2188 29.7381), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-110.1777 31.6637), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-93.0723 44.6781), (-81.951 27.3944), (-81.951 27.3944), (-81.951 27.3944), (-110.5391 44.9535), (-110.5391 44.9535), (-110.5391 44.9535), (-110.5391 44.9535), (-110.5391 44.9535), (-110.5391 44.9535), (-110.5391 44.9535), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-85.3301 42.4423), (-89.3477 46.242), (-89.3477 46.242), (-89.3477 46.242), (-89.3477 46.242), (-89.3477 46.242), (-89.3477 46.242), (-89.3477 46.242), (-89.3477 46.242), (-89.3477 46.242), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-90.0799 45.8059), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-116.7132 43.1675), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-84.4686 31.1948), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-110.8277 31.7894), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-116.7486 43.0645), (-105.5859 40.052), (-105.5859 40.052), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-106.8425 32.5907), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-86.4131 39.3232), (-78.0056 40.7536), (-78.0056 40.7536), (-78.0056 40.7536), (-78.0056 40.7536), (-78.0056 40.7536), (-78.0056 40.7536), (-78.0056 40.7536), (-78.0056 40.7536), (-78.0056 40.7536), (-87.8039 32.5417), (-87.8039 32.5417), (-78.0716 39.0603), (-78.0716 39.0603), (-78.0716 39.0603), (-78.0716 39.0603), (-78.0716 39.0603), (-78.0716 39.0603), (-78.0716 39.0603), (-78.0716 39.0603), (-89.5864 45.5089), (-89.5864 45.5089), (-89.5864 45.5089), (-89.5864 45.5089), (-89.5864 45.5089), (-89.5864 45.5089), (-81.9934 29.6893), (-81.9934 29.6893), (-81.9934 29.6893), (-81.9934 29.6893), (-81.9934 29.6893), (-81.9934 29.6893), (-84.2826 35.9641), (-84.2826 35.9641), (-84.2826 35.9641), (-84.2826 35.9641), (-77.9998 40.7559), (-77.9998 40.7559), (-77.9998 40.7559), (-77.9998 40.7559), (-77.9998 40.7559), (-77.9998 40.7559), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-89.5857 45.4937), (-105.5459 40.2759), (-105.5459 40.2759), (-105.5459 40.2759), (-105.5459 40.2759), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-106.6032 32.5849), (-89.5377 44.1095), (-89.5377 44.1095), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-121.9519 45.8205), (-95.1921 39.0404), (-95.1921 39.0404), (-95.1921 39.0404), (-95.1921 39.0404), (-95.1921 39.0404), (-95.1921 39.0404), (-95.1921 39.0404), (-95.1921 39.0404), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-89.5373 46.2339), (-71.2873 44.0639), (-71.2873 44.0639), (-71.2873 44.0639), (-71.2873 44.0639), (-71.2873 44.0639), (-71.2873 44.0639), (-71.2873 44.0639), (-71.2873 44.0639), (-71.2873 44.0639), (-71.2873 44.0639), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-97.57 33.4012), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-96.6129 39.1104), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-119.006 37.0058), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-116.7231 43.1207), (-80.5248 37.3783), (-80.5248 37.3783), (-80.5248 37.3783), (-80.5248 37.3783), (-80.5248 37.3783), (-80.5248 37.3783), (-80.5248 37.3783), (-80.5248 37.3783), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-88.1984 40.0628), (-66.8687 17.9696), (-66.8687 17.9696), (-66.8687 17.9696), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-97.4888 36.6058), (-79.244 33.3242), (-103.0293 40.4619), (-103.0293 40.4619), (-103.0293 40.4619), (-103.0293 40.4619), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106), (-99.0588 35.4106))" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mp = MultiPoint(gs)\n", + "mp" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d1ee5db5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def geom_type_summary(geo_series):\n", + " \"\"\"\n", + " Determines if a GeoPandas GeoSeries contains Points, Polygons, or other geometry types.\n", + "\n", + " Returns:\n", + " dict: Counts of each geometry type in the GeoSeries.\n", + " \"\"\"\n", + " return geo_series.geom_type.value_counts().to_dict()\n", + "\n", + "set(geom_type_summary(gs).keys()) == {'Point'}" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "3c942bed", + "metadata": {}, + "outputs": [], + "source": [ + "def is_point_geoseries(gs: GeoSeries) -> bool:\n", + " \"\"\"\n", + " Check if all geometries in a GeoSeries are Points.\n", + "\n", + " Args:\n", + " gs (GeoSeries): The GeoSeries to check.\n", + " \"\"\"\n", + " return isinstance(gs, GeoSeries) and all(gs.geom_type == 'Point')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "dbd0db48", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "is_point_geoseries(gs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "707d9f39", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml index d065729..5d5aa5e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "rasters" -version = "1.11.0" +version = "1.12.0" description = "raster processing toolkit" readme = "README.md" authors = [ @@ -15,24 +15,25 @@ classifiers = [ "Operating System :: OS Independent", ] dependencies = [ - "pandas", - "pillow", + "affine", + "astropy", + "ECOv002-calval-tables", "geopandas", "h5py", "matplotlib", "msgpack", "msgpack_numpy", "numpy", - "pyproj", - "rasterio", - "shapely", - "scikit-image", - "affine", - "astropy", + "pandas", + "pillow", "pykdtree>=1.3.11", + "pyproj", "pyresample", "pytest", + "rasterio", + "scikit-image", "scipy", + "shapely", "six", ] diff --git a/rasters/wrap_geometry.py b/rasters/wrap_geometry.py index 506f384..cda2a77 100644 --- a/rasters/wrap_geometry.py +++ b/rasters/wrap_geometry.py @@ -51,6 +51,9 @@ def wrap_geometry(geometry: Any, crs: Union[CRS, str] = None) -> SpatialGeometry # If the geometry is already a SpatialGeometry, return it as is return geometry + if isinstance(geometry, GeoSeries) and all(geometry.geom_type == 'Point'): + return MultiPoint(geometry) + if crs is None: # Default to WGS84 if no CRS is provided crs = WGS84