viewinline 0.2.0__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- Copyright 2025 Keiko Nomura
1
+ Copyright 2026 Keiko Nomura
2
2
 
3
3
  Apache License
4
4
  Version 2.0, January 2004
@@ -0,0 +1,240 @@
1
+ Metadata-Version: 2.4
2
+ Name: viewinline
3
+ Version: 0.2.2
4
+ Summary: Quick look geospatial viewer for iTerm2 compatible terminals
5
+ Project-URL: Homepage, https://github.com/nkeikon/viewinline
6
+ Project-URL: Repository, https://github.com/nkeikon/viewinline
7
+ Project-URL: Issues, https://github.com/nkeikon/viewinline/issues
8
+ Author: Keiko Nomura
9
+ License: Apache-2.0
10
+ License-File: LICENSE
11
+ Requires-Python: >=3.9
12
+ Requires-Dist: geopandas
13
+ Requires-Dist: matplotlib
14
+ Requires-Dist: numpy
15
+ Requires-Dist: pandas
16
+ Requires-Dist: pillow
17
+ Requires-Dist: pyogrio
18
+ Requires-Dist: rasterio
19
+ Provides-Extra: all
20
+ Requires-Dist: duckdb; extra == 'all'
21
+ Requires-Dist: h5py; extra == 'all'
22
+ Requires-Dist: pyarrow; extra == 'all'
23
+ Provides-Extra: hdf5
24
+ Requires-Dist: h5py; extra == 'hdf5'
25
+ Provides-Extra: parquet
26
+ Requires-Dist: pyarrow; extra == 'parquet'
27
+ Provides-Extra: sql
28
+ Requires-Dist: duckdb; extra == 'sql'
29
+ Description-Content-Type: text/markdown
30
+
31
+ # viewinline
32
+ [![Downloads](https://static.pepy.tech/badge/viewinline)](https://pepy.tech/project/viewinline)
33
+ [![PyPI version](https://img.shields.io/pypi/v/viewinline)](https://pypi.org/project/viewinline/)
34
+ [![Python version](https://img.shields.io/badge/python-%3E%3D3.9-blue.svg)](https://pypi.org/project/viewinline/)
35
+
36
+ **Quick-look geospatial viewer for compatible terminals.**
37
+ Displays rasters, vectors, and tabular data directly in the terminal with no GUI and no temporary files.
38
+
39
+ <p align="center">
40
+ <a href="viewinline_gif1.gif"><img src="viewinline_gif1.gif" width="49%"></a>
41
+ <a href="viewinline_gif2.gif"><img src="viewinline_gif2.gif" width="49%"></a>
42
+ </p>
43
+
44
+ Think of it as `ls` for geospatial files — designed for quick visual inspection at the command line, not a replacement for QGIS, ArcGIS, or analytical workflows.
45
+
46
+ Particularly useful on HPC systems and remote servers accessed via SSH. Images render on your local terminal without X11 forwarding, VNC, or file downloads.
47
+
48
+ This tool combines the core display logic of `viewtif` and `viewgeom`, but is **non-interactive**: you can't zoom, pan, or switch colormaps on the fly. Instead, you control everything through command-line options (e.g. --display, --color-by, --colormap).
49
+
50
+ It uses the iTerm2 inline image protocol (OSC 1337) to render previews. In incompatible terminals, the escape codes are silently ignored with no errors or crashes.
51
+
52
+ ## Installation
53
+ Requires Python 3.9 or later.
54
+
55
+ ```bash
56
+ pip install viewinline
57
+ ```
58
+
59
+ ## Usage
60
+ ```bash
61
+ # Rasters
62
+ viewinline path/to/file.tif
63
+ viewinline R.tif G.tif B.tif # RGB composite (also works with --rgbfiles)
64
+ viewinline path/to/multiband.tif --rgb 3 2 1
65
+ viewinline path/to/folder --gallery 4x3 # show image gallery (e.g. 4x3 grid)
66
+
67
+ # NetCDF and HDF
68
+ viewinline file.nc # list variables
69
+ viewinline file.nc --subset 2 # display variable 2
70
+ viewinline file.nc --subset 1 --band 10 # variable 1, timestep 10 --band or --timestep
71
+ viewinline temp.nc --subset 1 --colormap plasma --vmin 273 --vmax 310
72
+
73
+ # Vectors
74
+ viewinline path/to/vector.geojson
75
+ viewinline boundaries.geoparquet --color-by population --colormap viridis
76
+
77
+ # CSV and Parquet
78
+ viewinline data.csv # preview rows and columns
79
+ viewinline data.parquet --describe # summary statistics
80
+ viewinline data.csv --hist # histograms for all numeric columns
81
+ viewinline data.csv --hist area_km2 # histogram for one column
82
+ viewinline data.csv --scatter X Y # scatter plot
83
+ viewinline data.csv --where "year > 2010" # filter rows
84
+ viewinline data.csv --sort population --desc # sort rows
85
+ viewinline data.csv --sql "SELECT * FROM data WHERE area > 100 ORDER BY year" # full SQL
86
+
87
+ # Tabular view of vectors
88
+ viewinline counties.shp --table # view shapefile as table
89
+ viewinline counties.shp --table --describe # summary statistics
90
+ viewinline counties.shp --table --unique STATE_NAME
91
+ viewinline data.geoparquet --table --where "POP > 100000" --sort POP --desc
92
+ ```
93
+
94
+ ## Compatible terminals
95
+
96
+ The iTerm2 inline image protocol (OSC 1337) is supported by:
97
+
98
+ - **iTerm2** (macOS)
99
+ - **WezTerm** (cross-platform)
100
+ - **Konsole** (Linux/KDE)
101
+ - **Rio**, **Contour** (cross-platform)
102
+
103
+ **Not compatible:** Mac Terminal, GNOME Terminal, Kitty (uses different protocol), Ghostty, Alacritty
104
+
105
+ **SSH/HPC usage:** Works over SSH when connecting from a compatible terminal. Images render on your local machine, not the remote server. No X11 forwarding or VNC required.
106
+
107
+ **tmux/screen:** Inline images don't work inside tmux or screen sessions, even with `allow-passthrough on`. Use a plain terminal tab.
108
+
109
+ **Fallback:** In terminals that do not support inline images, you can fallback to ASCII art by installing [`chafa`](https://hpjansson.org/chafa/) command-line tool. Install `chafa` with your package manager (e.g. `brew install chafa` or `sudo apt install chafa`). You can also force the use of `chafa` by setting the environment variable `INLINE_VIEWER_ENGINE=chafa`.
110
+
111
+ ## Features
112
+ - Previews rasters, vectors, and tabular data directly in the terminal
113
+ - Non-interactive: everything is controlled through command-line options
114
+ - **NetCDF/HDF Support:** Display variables from NetCDF (.nc) and HDF5 (.h5, .hdf5) files with automatic nodata detection and multi-slice navigation
115
+ - **Parquet/GeoParquet:** Render GeoParquet as vector maps or view as tabular data
116
+ - **Tabular View for Vectors:** Use `--table` to access CSV-style operations (filter, sort, describe, hist) on any vector file
117
+
118
+ ## Supported formats
119
+ **Rasters**
120
+ - GeoTIFF (.tif, .tiff)
121
+ - PNG, JPEG (.png, .jpg, .jpeg)
122
+ - NetCDF (.nc)
123
+ - HDF5 (.h5, .hdf5)
124
+ - HDF4 (.hdf) — requires GDAL with HDF4 support
125
+ - Single-band or multi-band composites
126
+
127
+ **Composite inputs**
128
+ - You can pass three rasters (e.g. `R.tif G.tif B.tif`) or use `--rgbfiles R.tif G.tif B.tif` to create an RGB composite
129
+ - Multi-band files: use `--rgb 3 2 1` to specify band order
130
+
131
+ **Vectors**
132
+ - GeoJSON (`.geojson`)
133
+ - Shapefile (`.shp`)
134
+ - GeoPackage (`.gpkg`)
135
+ - Parquet/GeoParquet (`.parquet`, `.geoparquet`)
136
+
137
+ **Tabular data (CSV and Parquet)**
138
+ - CSV (`.csv`)
139
+ - Parquet (`.parquet`) — requires `pyarrow`
140
+ - All CSV operations work on parquet files
141
+ - Preview file summary (rows, columns, and names)
142
+ - Summary statistics with `--describe`
143
+ - Inline histograms with `--hist`
144
+ - Scatter plots with `--scatter X Y`
145
+ - Filter rows with `--where`, sort with `--sort`, limit output with `--limit`
146
+ - Full SQL queries with `--sql` (DuckDB required) — use `data` as the table name
147
+
148
+ **Tabular view of vectors**
149
+ - Use `--table` flag to view any vector file (shapefiles, GeoPackage, GeoParquet) as tabular data
150
+ - Enables all CSV-style operations: `--describe`, `--hist`, `--scatter`, `--unique`, `--where`, `--sort`
151
+
152
+ **Gallery view**
153
+ - Display all images in a folder with `--gallery 4x4`
154
+
155
+ **NetCDF/HDF notes:**
156
+ - viewinline lists only variables that can be displayed as 2D or 3D arrays
157
+ - Variables with additional dimensions (e.g., vertical levels) may be listed but will fail to display with a clear error message
158
+ - For a complete variable list, use `ncdump -h file.nc` or `viewtif`
159
+
160
+ ## Dependencies
161
+
162
+ **Core dependencies** (installed automatically):
163
+ - `rasterio` — raster reading (includes GDAL)
164
+ - `geopandas`, `pyogrio` — vector reading
165
+ - `matplotlib` — vector rendering
166
+ - `Pillow` — image encoding
167
+ - `numpy`, `pandas` — data handling
168
+
169
+ **Optional dependencies:**
170
+ - `duckdb` — required for `--where`, `--sort`, `--sql`, `--limit` with filtering
171
+ ```bash
172
+ pip install duckdb
173
+ ```
174
+ - `pyarrow` — required for Parquet/GeoParquet files
175
+ ```bash
176
+ pip install pyarrow
177
+ ```
178
+ - `h5py` — fallback for HDF5 files if GDAL lacks HDF5 support (usually not needed)
179
+ ```bash
180
+ pip install h5py
181
+ ```
182
+
183
+ **Note on HDF support:**
184
+ - **HDF5** (.h5, .hdf5): Supported via rasterio if GDAL has HDF5 support (most installations)
185
+ - **HDF4** (.hdf): Requires GDAL compiled with HDF4 support (common in MODIS data)
186
+ - **NetCDF** (.nc): Supported via rasterio (uses GDAL's NetCDF driver)
187
+
188
+ ## Available options
189
+ ```
190
+ General:
191
+ --display DISPLAY Resize only the displayed image (0.5=smaller, 2=bigger). Default: auto-fit to terminal.
192
+
193
+ Raster:
194
+ --band BAND Band number to display (single raster), or slice number for NetCDF. (default: 1)
195
+ --timestep INTEGER Alias for --band when working with NetCDF files.
196
+ --subset INTEGER Variable index for NetCDF/HDF files (e.g., --subset 1).
197
+ --colormap Apply colormap to single-band rasters. Flag without the color scheme → 'terrain'.
198
+ --rgb R G B Three band numbers for RGB display (e.g., --rgb 4 3 2). Overrides default 1 2 3.
199
+ --rgbfiles R G B Three single-band rasters for RGB composite. Can also provide as positional arguments.
200
+ --vmin VMIN Minimum pixel value for raster display scaling.
201
+ --vmax VMAX Maximum pixel value for raster display scaling.
202
+ --nodata NODATA Override nodata value for rasters if dataset metadata is missing or incorrect.
203
+ --gallery [GRID] Display all PNG/JPG/TIF images in a folder as thumbnails (e.g., 5x5 grid).
204
+
205
+ Vector:
206
+ --color-by COLUMN Column to color vector features by.
207
+ --colormap Apply colormap to vector coloring. Flag without value → 'terrain'.
208
+ --width WIDTH Line width for vector boundaries. (default: 0.7)
209
+ --edgecolor COLOR Edge color for vector outlines (hex or named color). (default: white)
210
+ --layer LAYER Layer name for GeoPackage/multi-layer files, or variable name for NetCDF files.
211
+ --table Display vector/parquet file as tabular data instead of rendering geometry.
212
+
213
+ CSV and Parquet:
214
+ --describe [COLUMN] Show summary statistics for all numeric columns or specify one column name.
215
+ --hist [COLUMN] Show histograms for all numeric columns or specify one column name.
216
+ --bins BINS Number of bins for histograms (used with --hist). (default: 20)
217
+ --scatter X Y Plot scatter of two numeric columns (e.g., --scatter area_km2 year).
218
+ --unique COLUMN Show unique values for a categorical column.
219
+ --where EXPR Filter rows using SQL WHERE clause (DuckDB required). Example: --where "year > 2010"
220
+ --sort COLUMN Sort rows by column, ascending by default. Use --desc to reverse.
221
+ --desc Sort in descending order (used with --sort).
222
+ --limit N Limit number of rows shown (e.g., --limit 100).
223
+ --select COLUMNS Select specific columns (space separated). Example: --select Country City
224
+ --sql QUERY Execute full DuckDB SQL query. Use 'data' as table name. Example: --sql "SELECT * FROM data WHERE Poverty > 40"
225
+ ```
226
+
227
+ ## Need help?
228
+ NASA staff can ask questions about usage via the documentation-based assistant 'viewtif + viewgeom + viewinline Helper' via the ChatGSFC Agent Marketplace.
229
+
230
+ ## License
231
+ This project is released under the Apache License 2.0 © 2026 Keiko Nomura.
232
+
233
+ If you find this tool useful, please consider supporting or acknowledging it in your work.
234
+
235
+ ## Useful links
236
+ - [YouTube demo playlist](https://www.youtube.com/playlist?list=PLP9MNCMgJIHj6FvahJ6Tembp1rCyhLtR4)
237
+ - [Demo at the initial release](https://www.linkedin.com/posts/keiko-nomura-0231891_just-released-viewinline-for-those-using-activity-7390643680770023424-8Guu?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA0INsBVIO1f6nS_NkKqFh4Na1ZpoYo2fc)
238
+ - [Demo for the v0.1.3](https://www.linkedin.com/posts/keiko-nomura-0231891_just-released-viewinline-v013-for-iterm2-activity-7391633864798081025-dPbk?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA0INsBVIO1f6nS_NkKqFh4Na1ZpoYo2fc)
239
+ - [Demo with GDAL](https://www.linkedin.com/posts/keiko-nomura-0231891_if-you-use-gdal-heres-a-quick-example-workflow-activity-7390892270847373312-XWZ4?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA0INsBVIO1f6nS_NkKqFh4Na1ZpoYo2fc)
240
+ - [User feedback (thank you!)](https://www.linkedin.com/posts/jamshidsodikov_shout-out-to-keiko-nomura-for-viewinline-activity-7390979602539528192-S8JQ?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA0INsBVIO1f6nS_NkKqFh4Na1ZpoYo2fc)
@@ -0,0 +1,210 @@
1
+ # viewinline
2
+ [![Downloads](https://static.pepy.tech/badge/viewinline)](https://pepy.tech/project/viewinline)
3
+ [![PyPI version](https://img.shields.io/pypi/v/viewinline)](https://pypi.org/project/viewinline/)
4
+ [![Python version](https://img.shields.io/badge/python-%3E%3D3.9-blue.svg)](https://pypi.org/project/viewinline/)
5
+
6
+ **Quick-look geospatial viewer for compatible terminals.**
7
+ Displays rasters, vectors, and tabular data directly in the terminal with no GUI and no temporary files.
8
+
9
+ <p align="center">
10
+ <a href="viewinline_gif1.gif"><img src="viewinline_gif1.gif" width="49%"></a>
11
+ <a href="viewinline_gif2.gif"><img src="viewinline_gif2.gif" width="49%"></a>
12
+ </p>
13
+
14
+ Think of it as `ls` for geospatial files — designed for quick visual inspection at the command line, not a replacement for QGIS, ArcGIS, or analytical workflows.
15
+
16
+ Particularly useful on HPC systems and remote servers accessed via SSH. Images render on your local terminal without X11 forwarding, VNC, or file downloads.
17
+
18
+ This tool combines the core display logic of `viewtif` and `viewgeom`, but is **non-interactive**: you can't zoom, pan, or switch colormaps on the fly. Instead, you control everything through command-line options (e.g. --display, --color-by, --colormap).
19
+
20
+ It uses the iTerm2 inline image protocol (OSC 1337) to render previews. In incompatible terminals, the escape codes are silently ignored with no errors or crashes.
21
+
22
+ ## Installation
23
+ Requires Python 3.9 or later.
24
+
25
+ ```bash
26
+ pip install viewinline
27
+ ```
28
+
29
+ ## Usage
30
+ ```bash
31
+ # Rasters
32
+ viewinline path/to/file.tif
33
+ viewinline R.tif G.tif B.tif # RGB composite (also works with --rgbfiles)
34
+ viewinline path/to/multiband.tif --rgb 3 2 1
35
+ viewinline path/to/folder --gallery 4x3 # show image gallery (e.g. 4x3 grid)
36
+
37
+ # NetCDF and HDF
38
+ viewinline file.nc # list variables
39
+ viewinline file.nc --subset 2 # display variable 2
40
+ viewinline file.nc --subset 1 --band 10 # variable 1, timestep 10 --band or --timestep
41
+ viewinline temp.nc --subset 1 --colormap plasma --vmin 273 --vmax 310
42
+
43
+ # Vectors
44
+ viewinline path/to/vector.geojson
45
+ viewinline boundaries.geoparquet --color-by population --colormap viridis
46
+
47
+ # CSV and Parquet
48
+ viewinline data.csv # preview rows and columns
49
+ viewinline data.parquet --describe # summary statistics
50
+ viewinline data.csv --hist # histograms for all numeric columns
51
+ viewinline data.csv --hist area_km2 # histogram for one column
52
+ viewinline data.csv --scatter X Y # scatter plot
53
+ viewinline data.csv --where "year > 2010" # filter rows
54
+ viewinline data.csv --sort population --desc # sort rows
55
+ viewinline data.csv --sql "SELECT * FROM data WHERE area > 100 ORDER BY year" # full SQL
56
+
57
+ # Tabular view of vectors
58
+ viewinline counties.shp --table # view shapefile as table
59
+ viewinline counties.shp --table --describe # summary statistics
60
+ viewinline counties.shp --table --unique STATE_NAME
61
+ viewinline data.geoparquet --table --where "POP > 100000" --sort POP --desc
62
+ ```
63
+
64
+ ## Compatible terminals
65
+
66
+ The iTerm2 inline image protocol (OSC 1337) is supported by:
67
+
68
+ - **iTerm2** (macOS)
69
+ - **WezTerm** (cross-platform)
70
+ - **Konsole** (Linux/KDE)
71
+ - **Rio**, **Contour** (cross-platform)
72
+
73
+ **Not compatible:** Mac Terminal, GNOME Terminal, Kitty (uses different protocol), Ghostty, Alacritty
74
+
75
+ **SSH/HPC usage:** Works over SSH when connecting from a compatible terminal. Images render on your local machine, not the remote server. No X11 forwarding or VNC required.
76
+
77
+ **tmux/screen:** Inline images don't work inside tmux or screen sessions, even with `allow-passthrough on`. Use a plain terminal tab.
78
+
79
+ **Fallback:** In terminals that do not support inline images, you can fallback to ASCII art by installing [`chafa`](https://hpjansson.org/chafa/) command-line tool. Install `chafa` with your package manager (e.g. `brew install chafa` or `sudo apt install chafa`). You can also force the use of `chafa` by setting the environment variable `INLINE_VIEWER_ENGINE=chafa`.
80
+
81
+ ## Features
82
+ - Previews rasters, vectors, and tabular data directly in the terminal
83
+ - Non-interactive: everything is controlled through command-line options
84
+ - **NetCDF/HDF Support:** Display variables from NetCDF (.nc) and HDF5 (.h5, .hdf5) files with automatic nodata detection and multi-slice navigation
85
+ - **Parquet/GeoParquet:** Render GeoParquet as vector maps or view as tabular data
86
+ - **Tabular View for Vectors:** Use `--table` to access CSV-style operations (filter, sort, describe, hist) on any vector file
87
+
88
+ ## Supported formats
89
+ **Rasters**
90
+ - GeoTIFF (.tif, .tiff)
91
+ - PNG, JPEG (.png, .jpg, .jpeg)
92
+ - NetCDF (.nc)
93
+ - HDF5 (.h5, .hdf5)
94
+ - HDF4 (.hdf) — requires GDAL with HDF4 support
95
+ - Single-band or multi-band composites
96
+
97
+ **Composite inputs**
98
+ - You can pass three rasters (e.g. `R.tif G.tif B.tif`) or use `--rgbfiles R.tif G.tif B.tif` to create an RGB composite
99
+ - Multi-band files: use `--rgb 3 2 1` to specify band order
100
+
101
+ **Vectors**
102
+ - GeoJSON (`.geojson`)
103
+ - Shapefile (`.shp`)
104
+ - GeoPackage (`.gpkg`)
105
+ - Parquet/GeoParquet (`.parquet`, `.geoparquet`)
106
+
107
+ **Tabular data (CSV and Parquet)**
108
+ - CSV (`.csv`)
109
+ - Parquet (`.parquet`) — requires `pyarrow`
110
+ - All CSV operations work on parquet files
111
+ - Preview file summary (rows, columns, and names)
112
+ - Summary statistics with `--describe`
113
+ - Inline histograms with `--hist`
114
+ - Scatter plots with `--scatter X Y`
115
+ - Filter rows with `--where`, sort with `--sort`, limit output with `--limit`
116
+ - Full SQL queries with `--sql` (DuckDB required) — use `data` as the table name
117
+
118
+ **Tabular view of vectors**
119
+ - Use `--table` flag to view any vector file (shapefiles, GeoPackage, GeoParquet) as tabular data
120
+ - Enables all CSV-style operations: `--describe`, `--hist`, `--scatter`, `--unique`, `--where`, `--sort`
121
+
122
+ **Gallery view**
123
+ - Display all images in a folder with `--gallery 4x4`
124
+
125
+ **NetCDF/HDF notes:**
126
+ - viewinline lists only variables that can be displayed as 2D or 3D arrays
127
+ - Variables with additional dimensions (e.g., vertical levels) may be listed but will fail to display with a clear error message
128
+ - For a complete variable list, use `ncdump -h file.nc` or `viewtif`
129
+
130
+ ## Dependencies
131
+
132
+ **Core dependencies** (installed automatically):
133
+ - `rasterio` — raster reading (includes GDAL)
134
+ - `geopandas`, `pyogrio` — vector reading
135
+ - `matplotlib` — vector rendering
136
+ - `Pillow` — image encoding
137
+ - `numpy`, `pandas` — data handling
138
+
139
+ **Optional dependencies:**
140
+ - `duckdb` — required for `--where`, `--sort`, `--sql`, `--limit` with filtering
141
+ ```bash
142
+ pip install duckdb
143
+ ```
144
+ - `pyarrow` — required for Parquet/GeoParquet files
145
+ ```bash
146
+ pip install pyarrow
147
+ ```
148
+ - `h5py` — fallback for HDF5 files if GDAL lacks HDF5 support (usually not needed)
149
+ ```bash
150
+ pip install h5py
151
+ ```
152
+
153
+ **Note on HDF support:**
154
+ - **HDF5** (.h5, .hdf5): Supported via rasterio if GDAL has HDF5 support (most installations)
155
+ - **HDF4** (.hdf): Requires GDAL compiled with HDF4 support (common in MODIS data)
156
+ - **NetCDF** (.nc): Supported via rasterio (uses GDAL's NetCDF driver)
157
+
158
+ ## Available options
159
+ ```
160
+ General:
161
+ --display DISPLAY Resize only the displayed image (0.5=smaller, 2=bigger). Default: auto-fit to terminal.
162
+
163
+ Raster:
164
+ --band BAND Band number to display (single raster), or slice number for NetCDF. (default: 1)
165
+ --timestep INTEGER Alias for --band when working with NetCDF files.
166
+ --subset INTEGER Variable index for NetCDF/HDF files (e.g., --subset 1).
167
+ --colormap Apply colormap to single-band rasters. Flag without the color scheme → 'terrain'.
168
+ --rgb R G B Three band numbers for RGB display (e.g., --rgb 4 3 2). Overrides default 1 2 3.
169
+ --rgbfiles R G B Three single-band rasters for RGB composite. Can also provide as positional arguments.
170
+ --vmin VMIN Minimum pixel value for raster display scaling.
171
+ --vmax VMAX Maximum pixel value for raster display scaling.
172
+ --nodata NODATA Override nodata value for rasters if dataset metadata is missing or incorrect.
173
+ --gallery [GRID] Display all PNG/JPG/TIF images in a folder as thumbnails (e.g., 5x5 grid).
174
+
175
+ Vector:
176
+ --color-by COLUMN Column to color vector features by.
177
+ --colormap Apply colormap to vector coloring. Flag without value → 'terrain'.
178
+ --width WIDTH Line width for vector boundaries. (default: 0.7)
179
+ --edgecolor COLOR Edge color for vector outlines (hex or named color). (default: white)
180
+ --layer LAYER Layer name for GeoPackage/multi-layer files, or variable name for NetCDF files.
181
+ --table Display vector/parquet file as tabular data instead of rendering geometry.
182
+
183
+ CSV and Parquet:
184
+ --describe [COLUMN] Show summary statistics for all numeric columns or specify one column name.
185
+ --hist [COLUMN] Show histograms for all numeric columns or specify one column name.
186
+ --bins BINS Number of bins for histograms (used with --hist). (default: 20)
187
+ --scatter X Y Plot scatter of two numeric columns (e.g., --scatter area_km2 year).
188
+ --unique COLUMN Show unique values for a categorical column.
189
+ --where EXPR Filter rows using SQL WHERE clause (DuckDB required). Example: --where "year > 2010"
190
+ --sort COLUMN Sort rows by column, ascending by default. Use --desc to reverse.
191
+ --desc Sort in descending order (used with --sort).
192
+ --limit N Limit number of rows shown (e.g., --limit 100).
193
+ --select COLUMNS Select specific columns (space separated). Example: --select Country City
194
+ --sql QUERY Execute full DuckDB SQL query. Use 'data' as table name. Example: --sql "SELECT * FROM data WHERE Poverty > 40"
195
+ ```
196
+
197
+ ## Need help?
198
+ NASA staff can ask questions about usage via the documentation-based assistant 'viewtif + viewgeom + viewinline Helper' via the ChatGSFC Agent Marketplace.
199
+
200
+ ## License
201
+ This project is released under the Apache License 2.0 © 2026 Keiko Nomura.
202
+
203
+ If you find this tool useful, please consider supporting or acknowledging it in your work.
204
+
205
+ ## Useful links
206
+ - [YouTube demo playlist](https://www.youtube.com/playlist?list=PLP9MNCMgJIHj6FvahJ6Tembp1rCyhLtR4)
207
+ - [Demo at the initial release](https://www.linkedin.com/posts/keiko-nomura-0231891_just-released-viewinline-for-those-using-activity-7390643680770023424-8Guu?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA0INsBVIO1f6nS_NkKqFh4Na1ZpoYo2fc)
208
+ - [Demo for the v0.1.3](https://www.linkedin.com/posts/keiko-nomura-0231891_just-released-viewinline-v013-for-iterm2-activity-7391633864798081025-dPbk?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA0INsBVIO1f6nS_NkKqFh4Na1ZpoYo2fc)
209
+ - [Demo with GDAL](https://www.linkedin.com/posts/keiko-nomura-0231891_if-you-use-gdal-heres-a-quick-example-workflow-activity-7390892270847373312-XWZ4?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA0INsBVIO1f6nS_NkKqFh4Na1ZpoYo2fc)
210
+ - [User feedback (thank you!)](https://www.linkedin.com/posts/jamshidsodikov_shout-out-to-keiko-nomura-for-viewinline-activity-7390979602539528192-S8JQ?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAA0INsBVIO1f6nS_NkKqFh4Na1ZpoYo2fc)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "viewinline"
7
- version = "0.2.0"
7
+ version = "0.2.2"
8
8
  description = "Quick look geospatial viewer for iTerm2 compatible terminals"
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
@@ -12,17 +12,22 @@ authors = [
12
12
  { name = "Keiko Nomura" }
13
13
  ]
14
14
  requires-python = ">=3.9"
15
+
15
16
  dependencies = [
16
17
  "numpy",
17
18
  "pillow",
18
19
  "rasterio",
19
20
  "geopandas",
20
21
  "matplotlib",
21
- "pyogrio"
22
+ "pyogrio",
23
+ "pandas"
22
24
  ]
23
25
 
24
26
  [project.optional-dependencies]
25
27
  sql = ["duckdb"]
28
+ parquet = ["pyarrow"]
29
+ hdf5 = ["h5py"]
30
+ all = ["duckdb", "pyarrow", "h5py"]
26
31
 
27
32
  [project.scripts]
28
33
  viewinline = "viewinline.viewinline:main"