The RAS Solution is alive and well! It just moved to a different URL. If not automatically directed, please click here to get to the new and improved The RAS Solution.
https://www.kleinschmidtgroup.com/the-ras-solution/
Please update your bookmarks.
Happy HEC-RAS modeling!
-Chris
Tuesday, March 24, 2020
Thursday, February 13, 2020
Online Class - Using HEC-RAS to Modeling Bridges, Culverts, and Floodplains
Hey RAS Users-
This is a basic level steady flow HEC-RAS class. That's right, we start from the very beginning with HEC-RAS-steady flow theory, building 1D geometry, steady flow boundary conditions, and even introductions to RAS Mapper and 2D modeling. I'll be hosting weekly live sessions for this class to review the course material and workshops and for Q&A.
And it's an online course-that means you can take it from anywhere in the world-just need a computer with a wifi connection.
If you're relatively new the HEC-RAS, or just need a refresher, come and join me for this excellent intro class on HEC-RAS modeling. Don't delay, there are limited seats.
This is a basic level steady flow HEC-RAS class. That's right, we start from the very beginning with HEC-RAS-steady flow theory, building 1D geometry, steady flow boundary conditions, and even introductions to RAS Mapper and 2D modeling. I'll be hosting weekly live sessions for this class to review the course material and workshops and for Q&A.
And it's an online course-that means you can take it from anywhere in the world-just need a computer with a wifi connection.
If you're relatively new the HEC-RAS, or just need a refresher, come and join me for this excellent intro class on HEC-RAS modeling. Don't delay, there are limited seats.
Monday, February 3, 2020
1D/2D Offline Connection Issues
Written by Chris Goodell | Kleinschmidt Associates
Copyright © The RAS Solution. All rights reserved.
I’ve mentioned this before, but I am thoroughly impressed
with the robustness of the finite volume solution scheme used in 2D areas in
HEC-RAS. As long as your Courant Numbers
are in a good spot, you rarely get errors and instabilities in 2D areas. HOWEVER, the transition from 1D to 2D and
back is another story. In fact, the
majority of errors I get in 1D/2D models occur there (either at the cross
section to 2D area interface for inline connections, or in the cells adjacent
to the lateral structure for offline connections). In this post, I’m going to talk about the
errors next to lateral structures at 1D/2D boundaries.
Take this for example.
The model runs well with friendly blue bars everywhere. But I just can’t let go of the 5.154-ft
error. It only happens once and
obviously doesn’t cause the model to crash.
But it’s there, and a 5-ft error is a little more than I can stomach.
My usual go-to output for cross section errors, the water
surface profile plot, gives me no clues as to what is wrong. In RAS Mapper, I have what appears to be a
flooded situation around the time where the error occurs, but reasonable
looking results. I turned on the Update
per Screen option in the Velocity Layer Properties window, so that I could
optimize the velocity scale for this view.
Here I noticed that the maximum velocity is 11.5 feet per second (fps)
(which is about 3.5 meters per second).
This is way too high for this river, and in fact while hovering around
the centerline of the river, I get maximum velocities of around 2.8 to 2.9
fps. But since the Update per Screen
option is turned on for velocity here, that indicates that there is a hotspot
velocity of 11.5 fps somewhere in this view.
I just have to find it.
On closer inspection, I can see some lighter shades of blue
and green (i.e. higher velocities) in the floodplain adjacent to the lateral
structures (as highlighted in the white circles). Knowing that cells adjacent to lateral
structures are typically going to be the culprits in 1D/2D models, I zoomed in to
the cells around the lateral structures to get a closer look. I started with the circled area to the right,
since that was closest to the cross section that generated the numerical error
of 5.154 ft.
While zoomed in, it was hard to see at first, with the terrain turned on, so I turned off the terrain and noticed this little sliver of high velocity right at the boundary of the 1D river and the 2D area.
Turning the velocity off and the terrain back on, you can see how the 2D area dips into the main channel just slightly, and in fact it overlaps the lateral structure as well. This reveals a very typical problem that you can run into with 1D/2D offline connections with lateral structures. For a given timestep, RAS will compute a volume of water going over (or through in the case of gates and culverts) the lateral structure into a given cell. But if the receiving cell has a small sliver of low lying area, like in this example, that relatively small amount of volume could be enough to significantly raise the water surface in the cell. Perhaps enough so that it is even higher than the water surface adjacent to it in the 1D reach. This would then send water back the other direction the next time step. Besides the numerical shock of a sudden and large rise in stage, the oscillating effect of sending water back and forth can set up errors that persist, grow, and lead to an instability.
Now if you’re using the weir equation on the lateral
structure, you could change your weir submergence decay exponent from the default
value of 1 to 3 (1 is the most accurate, 3 is the most stable). This has a dampening effect on the oscillations
and errors you get from this situation.
Read more about the weir submergence decay exponent in the HEC-RAS User's Manual on page 8-41.
You might also reduce the weir coefficient. This will reduce the volume of water that
transfers from the river to the cell for a given timestep. If there is no elevated feature represented
by the lateral structure (e.g. it is not a levee), you would want to use a very
low weir coefficient on the order of 0.1 to 0.5, as discussed in the 2D Modeling User's Manual on page 3-50. However, in this case, it might be better to
just use the 2D equations over the lateral structure instead of the weir
equation. Using the “Normal 2D Equation
Domain” (this is just a funny way of saying “Use 2D Equations”) is a relatively
new feature available in lateral structures.
But if your lateral structure does not represent an elevated terrain
feature (e.g. a weir or levee), then this might be the better option to
use.
However, in recognizing that the 2D area perimeter and the lateral
structure are poorly located, I will fix this first to see if that’s all that
is needed to solve the problem.
First, I’ll pull in the 2D area to just beyond the high
ground. This can easily be done in RAS
Mapper on the 2D Area Perimeter Layer while in edit mode. Next, I’ll pull over the lateral structure so
that it resides ON the high ground.
In the current version of HEC-RAS (as I type this post),
Version 5.0.7, you cannot edit lateral structures in RAS Mapper. So you have to do it in the Geometry Editor
for now, using the Edit…Move Points/Objects command. After moving the lateral structure, I
adjusted the location of the 2D perimeter again, so it is just inside the
lateral structure. Here you can see a
much better placement of both the 2D perimeter and lateral structure.
And don’t forget, since I moved the lateral structure
placement, I have to re-extract the terrain onto it. Fortunately, HEC-RAS gives us a short cut to
do this with the Terrain Profile button.
After re-running, the error is gone and the results look
much better. Notice the peak velocity in
the scale is back to a normal value of 2.6 fps. And the 5.154-ft error is gone!
Monday, January 20, 2020
HEC-RAS Pub & Grub - HEC-RAS 5.1 and Beyond
Don't miss this great opportunity to listen to and interact with the HEC-RAS Developers in a fun and casual atmosphere! Gary Brunner, Cameron Ackerman, and Mark Jensen will all be speaking at this Pub & Grub on Feb 20, 2020 from 5:30 pm to 8:30 pm in Portland Oregon. They'll be covering all of the latest features being added to the upcoming Version 5.1 and beyond! Show up, get some food, grab a pint and enjoy!
This is a free event, but we need you to sign up on our Eventbrite page so we can get a good head count. Space is limited. Hope to see you there!
Thanks to our Platinum sponsors Wolf Water Resources, Mead & Hunt, and Galileo and our Gold sponsors David Evans & Associates, OTAK, Geosyntec, and WEST Consultants. Your generous contributions have made it possible to bring our guest speakers and provide the food. A special thanks to the Craft Brew Alliance and pH Experiment for providing the awesome venue.
Tuesday, December 17, 2019
Galileo and Missoula Flood Modeling
I'm honored to have worked with Galileo on this article. It's a great read and demonstrates the benefits of adding Galileo to your HEC-RAS modeling tool box. Click here for the full article.
https://galileoapp.io/hec-ras-galileo-wine-have-in-common/
https://galileoapp.io/hec-ras-galileo-wine-have-in-common/
Friday, December 13, 2019
HEC-RAS Pub & Grub 2! HEC is coming to town!
HEC-RAS...Portland...Food...Beer. They seem to just go perfectly together. That is why we're hosting...
HEC-RAS Pub & Grub 2
You will want to save this date! On Feb 20, 2020
HEC's very own Gary Brunner, Cameron Ackerman, and Mark Jensen
will be joining me in Portland Oregon to speak at the next offering of the HEC-RAS Pub & Grub. The HEC-RAS developers themselves! They're going to present all of the latest features coming out in the soon-to-be-released HEC-RAS Version 5.1 and plans for future versions.
Bring your HEC-RAS questions and come join us talking HEC-RAS at this awesome venue over some food and drink.
And as a bonus, the Craft Brew Alliance's pH Experiment will be on hand to share some of the latest innovative brews they have in the works. And this HEC-RAS Pub & Grub will have a very special HEC-RAS-related musical feature you won't want to miss. Yes, that's a teaser. 😊
For now, just mark your calendar and keep an eye out for more details to come. If you want more information or are interested in helping to sponsor the HEC-RAS Pub & Grub, please email me Chris.Goodell@KleinschmidtGroup.com or GinaRenee Autry at GinaRenee.Autrey@KleinschmidtGroup.com
Thursday, November 14, 2019
Very fine 2D Modeling
Written by Mike Hross and Chris Goodell | Kleinschmidt Associates
Copyright © The RAS Solution. All rights reserved.
I'm a big fan of testing HEC-RAS to the limits. What can it do? What can't it do? These are questions we should all ask at the beginning of a project. Can HEC-RAS actually prove to be a useful tool in answering hydraulic-related questions for our specific problem? Shortly after coming to work at Kleinschmidt I was posed with the question, "Can we use HEC-RAS to model a nature-like fishway? And more specifically, can we extract data from HEC-RAS to inform us of velocities and shear stresses between the many boulders and in the many pools that make up such a complicated feature?" The answer was YES! Check this out:
Here's an example of making HEC-RAS work at a very small cell level, in order to get detailed results for design considerations.
And a zoomed in view:
The fishway is constructed using 11 concrete weirs and is
approximately 300 feet wide by 400 feet long. The boulders are approximately 5
feet in diameter, with 2.25 feet projecting above the crest of the weirs. The
gaps between the boulders range from 3 to 5 feet. In total, there are over 700
boulders in the fishway.
For the simulation shown, the drop from normal pond to
the tailwater downstream of the last weir is approximately 6.4 feet or 0.58
foot per pool. The fishway is passing 890 cfs, 237 cfs of which is spilling
over the top most weir from the headpond and the remainder is being supplied by
5 overflow gates. The 5 gates have varying levels of submergence on their
tailwater sides, depending upon each one’s location, and they are each passing
from 108 to 137 cfs. The velocity varies throughout the fishway, but is generally
less than 6 feet/second. The nominal cell size in the mesh is 3 feet but
decreases to 0.75 foot on the tops of the weirs to capture hydraulics between
the boulder gaps. The largest cells have sizes of 96 feet and are located
primarily in the headpond away from the fishway.
The model is run using the
full momentum equation, with an eddy viscosity mixing coefficient of 0.44. The
computational timestep is 0.1 second and the Courant Numbers max out at around
0.6, with the highest values being in the cells on the downstream sides of the
gates where water is flowing into the fishway. The timestep is very small, but
the model does not need to simulate a very long time since it is a quasi-steady model, meaning there are constant boundary
conditions (a constant inflow hydrograph at the upstream end of the model and a
stage hydrograph at the downstream end of the model). The model achieves steady
state in less than 1 hour of simulated time. Model run-times averaged about 3 hours.
Labels:
2D,
Eddy,
Fishway,
Flow Patterns,
full momentum,
HEC-RAS,
Kleinschmidt,
Nature,
Turbulence,
Video,
Viscosity,
YouTube
Monday, November 4, 2019
McBreach Probabilistic Dam Breach Modeling - Free Webinar
ICEWaRM will be hosting this free webinar where I'll be discussing the software program McBreach and its application to probabilistic dam breach modeling. Come join in! Please note the the webinar start time for your particular time zone. Starts at 10:30 AM local Sydney Australia time on Wednesday, Nov 6th. That is 3:30 PM on Tuesday, Nov 5th if you live on the west coast of the USA. Find your local time. After the webinar, get your free copy of McBreach and the User's Manual here.
Introducing McBreach! Faced with aging infrastructure, limited resources, dynamic weather events, and the uncertainty of climate change, today’s dam owners must manage risk to protect the lives of the public and our built environment. The free McBreach program, quantifies uncertainty and informs better decision making before an event.
“McBreach takes dam breach modelling and analysis to the next level. By complimenting the traditional deterministic dam breach methods, McBreach’s probabilistic approach provides a more meaningful and more genuine way to communicate the potential effects from a dam or levee breach.” says Chris Goodell, Principal Consultant for Hydraulics & Hydrology, Kleinschmidt.
Manage risk by leveraging the power of HEC-RAS through Monte Carlo simulations
Introducing McBreach! Faced with aging infrastructure, limited resources, dynamic weather events, and the uncertainty of climate change, today’s dam owners must manage risk to protect the lives of the public and our built environment. The free McBreach program, quantifies uncertainty and informs better decision making before an event.“McBreach takes dam breach modelling and analysis to the next level. By complimenting the traditional deterministic dam breach methods, McBreach’s probabilistic approach provides a more meaningful and more genuine way to communicate the potential effects from a dam or levee breach.” says Chris Goodell, Principal Consultant for Hydraulics & Hydrology, Kleinschmidt.
Labels:
Dam,
Dam Breach,
HEC-RAS,
ICEWaRM,
Levee,
McBreach,
Probabilistic,
risk,
Uncertainty
Thursday, October 24, 2019
HEC-RAS in Three Dimensions
Now this is the kind of post that gets you on The RAS Solution! Cutting edge creative solutions to complex problems. This is great stuff. Thanks Michael for all the effort you put in to this.
Written by Michael Link | AECOM
Copyright © The RAS Solution. All rights reserved.
In today’s post we’ll cover two methodologies that leverage HEC RAS results to create impressionable and multi-dimensional flood visualizations. If these methodologies are implemented industry-wide, it is likely that the public will become more engaged with our work and our clients wowed. Products of the two methods are shown below.
Introduction
The mitigation of flood risk is traditionally accomplished
through regulation, correct science, and public buy-in. The federal government writes
the regulation, we make the floodplain maps, and homeowners begrudgingly
purchase flood insurance. How can we as engineers change the public’s sentiment
towards our work and how can we further reduce infrastructure damage? One way
we can do this is by transforming HEC RAS results into a format that is
visually stimulating and easily digestible for nearly anyone.
FIRM maps, WSEL/Depth
rasters, and inundation boundaries serve the purpose of communicating
information but do not necessarily communicate flood risk in a simple and
powerful manner. This post is targeted at transforming RAS results into just
that, a simple and powerful resource for capturing the attention of the public.
If flood risk is internalized by communities, we can expect infrastructure loss
to decrease and funding for our line of work to increase. Let’s dive in!
3DV-Flo (3D Visualization of Flooding)
3DV-Flo is a methodology that
takes in RAS results and generates a 3D flood visualization in Google Earth.
Here are a few examples of 3DV-Flo output.
Figure
2: Austin, Texas flooding visualized with 3DV-Flo
Figure
3: Google Street View of 3DV-Flo output
Figure
4: Muncie, Indiana flooding visualized with 3DV-Flo
The following YouTube playlist shows examples of 3DV-Flo output (the first video in the playlist is embedded below). If you would like to explore the
output yourself in Google Earth, the non-regulatory KML’s can be downloaded here.
3DV-Flo allows the
information stored in WSEL and depth rasters to be viewed three-dimensionally
in Google Earth. This output is an improvement upon RAS Mapper generated KML’s
in that the results are no longer clamped to the ground. The 3DV-Flo method
relies on three inputs (an inundation boundary, depth raster, WSEL raster), two
free software (HEC-RAS, Google Earth), and one proprietary software (ESRI ArcGIS*).
The 3DV-Flo toolbox has been tested on ArcMap for Desktop versions 10.3.1 and
10.6.1. Compatibility of this toolbox cannot be
guaranteed with ArcGIS Pro or other Desktop versions. Additionally, there are
two model types within the 3DV-toolbox. The first uses tools from the Advanced
ArcGIS License. The advanced model is slightly faster and provides the
functionality of adding breaklines to your resulting mesh. Breaklines are
helpful for modelling levees, elevated roads, and dams. The second model uses
tools solely from the Basic ArcGIS license, but you must have the 3D Analyst and Spatial Analyst extensions activated as
described in this ESRI post. If
this tool has a red ‘X’ next to it in ArcGIS follow the steps discussed in this
video. Lastly, if you are using the basic version of the 3DV-Flo toolbox it is essential that your inundation boundary shapefile name not contain spaces or special characters. For example, if your shapefile name is Inundation Boundary (Max Value_0).shp, you should modify this to be InundationBoundaryMaxValue,shp before using the toolbox.
Assuming you have a
georeferenced 1D or 2D RAS model and access to ArcGIS, let us proceed with the
tutorial. You can follow
along with the video below or you can scan the detailed written instructions.
*3DV-Flo methods are currently dependent on ESRI ArcGIS. These methods
can surely be recreated in QGIS or in a standalone script given enough time and
ingenuity. Any individual with the time and desire to make this a fully
open-source method can reach out to Michael Link for further guidance.
3DV-Flo (3D Visualization
of Flooding) Steps:
1. Download
3DV-Flo Files
2. Within HEC
RAS
a.
Open
geo-referenced HEC RAS project
b.
Open RAS Mapper
c.
Import best
available terrain if not already there
d.
Right-click
results and click ‘Add new results layer’ for the max inundation boundary,
depth raster, and WSEL raster
e.
Compute/update
layers
f.
Export break
lines as shapefile if applicable
3. Within
ArcGIS
a.
Open blank MXD
b.
Import model
output (inundation boundary, depth raster, WSEL raster, and breaklines) to MXD
c.
Import symbology
shapefile. Adjust symbology to be blue with no border and displayed with a
transparency of 40%
d.
Open the 3DV-Flo
toolbox by navigating there in ArcCatalog
e.
Open the 3DV-Flo_WSEL tool
i.
The 3DV-Flo_Depth
tool is used to reference flood depths to the ground rather than to mean sea
level. This tool can be used when the vertical datums between RAS and Google
Earth differ.
ii.
To use this tool right click the KML in Google
Earth, click properties, click altitude, and switch the altitude to be
‘relative to ground’
f.
Populate tool
parameters and specify where the Google Earth KMZ is to be saved
g.
If breaklines are not applicable, then bring in
the ‘Arbitrary_Breakline’ shapefile from the unzipped folder
h.
Run 3DV-Flo tool
4A - Within Google Earth for Desktop
b.
Open Google Earth
c.
Click
File>Import>and then navigate to the KMZ you created in ArcGIS
4B - Within Google Earth for Chrome
a.
Open Google Earth
in chrome browser
b.
Click three
horizontal lines in the top left of window
c.
Click my places
d.
Click import KML
file
e.
Click open file
f.
Navigate to KML
file of interest and import
There are two
known 3DV-Flo ‘bugs’. The first of which deals with poor terrains spatially
restricting results. The second deals with 3DV-Flo output that appears
unrealistically high in Google Earth. The first bug can be fixed by updating
the underlying terrain. The second bug can be fixed by relating 3DV-Flo output
relative to the ground rather than to mean sea level. These bugs and their
respective workarounds are discussed in this video.
The vision for 3DV-Flo in the
future includes 1. widespread adoption of the method by industry, 2. conversion
of the entire US regulatory floodplain into 3DV-Flo format, and 3. the
combination of 3DV-Flo with the National Water Model forecasts to help cities prepare for incoming floods. Advancing
goal #1 is in part achieved through the readership of this post. Advancing goal
#2 is theoretically possible by splitting the NFHL polygon layer nationwide by
all XS’s with regulatory elevations. The resulting polygons could be
transformed into 3DV-Flo output. Lastly, goal #3 has been prototyped in this video and this post. Any assistance to advance these goals is welcomed.
3D Printed Floods
According to the Wohlers Report 2019, the 2020 value of 3D Printing and Additive Manufacturing
will be $15.8 billion! Can we get a piece of that??? One way that we can
participate in this trend is to overlay RAS results onto 3D printed terrains.
Here is a YouTube playlist link to some examples of just that for a pluvial flooding model of Puerto Rico (the first video in the playlist is embedded below).
The intended
effect of this visualization is to intuitively convey how floods develop and
where they pose the largest threat. 3D printed terrains are often presented at
a large scale due to the coarse nature of the underlying digital elevation
model. This visualization is unlikely to be used as a structure by structure
evaluation of risk. It is more likely to be used in a city hall meeting or in
the classroom. The Austin, Texas Watershed Concepts Group from AECOM was the
first (to my knowledge) to prototype a 3D Printed Flood. Details on their FEMA
funded San Marcos, Texas project can be found here. That same group generated a second 3D printed flood for
Puerto Rico to give locals a high-level understanding of, go figure, watershed
concepts. The projector and mount costed roughly $500. The San Marcos 3D print
costed $1400 and the Puerto Rican model $250. The difference in price was
related to print infill density and size.
If you are
interested in making one of these models you can follow along with the video
tutorial below and/or you can scan the detailed written instructions.
3D Printed Flood Steps:
1. Develop 3D Printed Terrain
a.
Check
3D model repository (Thingiverse or Google searching 3D printed terrain of
“Location”) to see if your location already has an STL 3D print file
b.
If
there is no pre-existing STL file or you would like to make your own, you have
a few options.
i.
Create
STL from the Terrain2STL (Ideal due to time saved and nonideal
due to fixed rectangular shape of STL)
ii.
Create
terrain from Touch Terrain (Ideal due to time saved and ability
to specify bounding coordinates)
iii.
Create
STL by converting Lidar to greyscale image (process described here) and load
into Blender to convert the greyscale into an STL file (process described here).
i.
The most important
functions in Meshmixer are:
1.
Edit > Plane Cut
– This function allows you to discard unnecessary pieces of your model and to
break your model down into smaller chunks to be printed by small 3D printers
2.
Edit > Transform
– This function allows you to stretch your model solely in the Z direction. For
more hash marks click the up arrow.
3.
Analysis >
Units/Dimensions – This function allows you to rescale your model proportionally
in all directions
d.
If
you do not have a 3D printer at home or in the office, shop around to see where
you can get the best deal. For prototyping, I found that 3D Hubs was the cheapest and easiest to use.
Their banana reference was amusing and useful for catching extremely large or
small prints. For the final 1.5-foot-long print of Puerto Rico, I used a local
printing service so that I could guarantee the quality and interact with a
human. Here is a list of the top 10 online 3D printing
services in 2019.
2. Develop Movie of Flooding in HEC RAS
b.
Create
or load a pluvial or fluvial model in HEC RAS
c.
Open
RAS Mapper
d.
Load
web imagery, terrain, or basemap to be displayed in movie
e.
Open
ShareX and create screen capture video of unsteady RAS simulation
3. Project Movie of Flooding onto 3D Printed Terrain
b.
Open
the flooding movie in VLC
c.
Connect
the computer to projector via HDMI cable
e.
Pause
flooding movie at peak flooding and calibrate the movie extent to 3D print
extent by
i.
Raising
or lowering the Pixar lamp stand
ii.
Adjust
the aspect ratio of video
g.
Project
flooding onto terrain with basemap
In Conclusion
As illustrated in this post,
the impact of our RAS modeling can be greatly bolstered with spectacular Google
Earth imagery and mesmerizing 3D prints. By presenting our clients and
communities with these flood visualization resources, our work can be used
outside of the narrow confines of designating whether someone should or should
not buy flood insurance.
Acknowledgements
The inspiration for the 3DV-Flo methodology would not
have been possible without the catalysts listed below.
Much
gratitude goes out to Muhammad Ashraf and Yuxiang Kang for technical guidance
and edits, Alyssa Ruiz for computational fine-tuning, John Wade for wise GIS
counsel, Yacoub Raheem, Clint Kimball, and Justin Baker for patient 2D HEC-RAS
Training, and Chris Wright for overall mentorship. A big thanks goes out to the
U.S. Government for providing industry-standard software and innovations free
of charge to the world through funding of top-notch institutions (Hydraulic
Engineering Center, National Laboratories, Academia, etc.) and openly sharing
findings. Lastly, I'd like to thank Chris Goodell for this platform and for
single-handedly progressing and pushing the hydraulics industry forward over
the past decade. Your clear explanations and innovative posts have been the
cornerstone of my understanding of HEC-RAS.
Contact Details:
For more information on this topic, please message Michael Link through LinkedIn - https://www.linkedin.com/in/michael-link-b88329118/
Michael Link works for AECOM in Austin,
Texas. He received a B.S. in Ecological
Engineering from Oregon State University and an M.S. in Environmental and Water
Resources Engineering from The University of Texas at Austin. Michael is an EIT and certified floodplain manager. Outside of work, enjoys combining hydraulics, spatial analysis,
and data science in novel ways.
Subscribe to:
Posts (Atom)





















