- It's a full 3D geological modeling platform that works entirely from the web.
- It can help a geologist to gather and visualize all his information in a single site from anywhere.
- It has a modeling methodology that produces always solid (simulation ready) 3D geological models.
- It has interfaces for groundwater modeling platforms, mining software and others.

- It can receive structural data, boreholes, vector layers, and raster layers.
- It can support formats like ArcGIS shapefiles, GeoTiffs, images and excel files.
- Information can be visualized in 3D or projected in 2D.

- Cross sections are the simplest way for geologists to interpret geological knowledge.
- Geomodelr takes a set of cross sections and guarantees that the interpolation algorithm passes exactly through them.
- Geomodelr helps you interpret by generated interpolated cross sections which you can fill to finish the interpretation.

- To visualize the result of the interpolation you can use visualizations in 3D of single units, faults or block diagrams.
- You can also visualize boreholes, the cross sections or the geological map.
- You can use any image loaded into the cross sections, be geophysics or other.

- You can create presentations and add visualizations in 3D and 2D.
- You can share visualizations, maps and cross sections in other websites.
- You can visualize in VR.

- Export directly to MODFLOW and FEFLOW.
- Use different kinds of meshes.
- Follow units, boreholes, and others.

```
In [1] import geomodelr as gm
In [2] geo_model = gm.model_from_file('my_file.json')
# Units of the model
In [3] geo_model.units
Out[3] [u'unit_1'
u'unit_2'
u'unit_3'
.
.
.
u'unit_n']
# Value of a point (x,y) in the topography
In [4] geo_model.height( [x, y] )
Out[4] topo_value
# Geological unit and distance of a point in the space
In [5] geo_model.closest( [x, y, z] )
Out[5] (u'unit_i', distance)
# Get the faults of the model
In [6] geo_model.faults
Out[6] {u'Fault_1': [((x0_0, y0_0, z0_0),
(x0_1, y0_1, z0_1),
(x0_2, y0_2, z0_2)),
((x1_0, y1_0, z1_0),
(x1_1, y1_1, z1_1),
(x1_2, y1_2, z1_2))
.
.
.
((xn_0, yn_0, zn_0),
(xn_1, yn_1, zn_1),
(xn_2, yn_2, zn_2))
.
.
.
u'Fault_q': [((x0_0, y0_0, z0_0),
(x0_1, y0_1, z0_1),
(x0_2, y0_2, z0_2)),
((x1_0, y1_0, z1_0),
(x1_1, y1_1, z1_1),
(x1_2, y1_2, z1_2))
.
.
.
((xm_0, ym_0, zm_0),
(xm_1, ym_1, zm_1),
(xm_2, ym_2, zm_2)) ]}
```