Metadata-Version: 2.1
Name: topography
Version: 0.0.2
Summary: Perform interpolation on surfaces to generate topographic-style maps.
Home-page: https://github.com/XDwightsBeetsX/topography
Author: John Gutierrez
License: MIT
Keywords: topography,map,engineering
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: numpy
Requires-Dist: matplotlib
Requires-Dist: pytest

# topography :earth_americas:

![Python 3.8](https://img.shields.io/badge/python-3.8-blue.svg)
[![Build Status](https://travis-ci.com/XDwightsBeetsX/topography.svg?branch=master)](https://travis-ci.com/XDwightsBeetsX/topography)

Contains different approaches to modeling terrain and maps in python

## [Requirements](requirements.txt)  

- `numpy`
- `matplotlib`

## Usage

### Install

```shell
pip install topography
```

### Implementation

```python
# read in data from csv file in form X, Y, Z
data = Map.readFromCsv("filename.csv")

M = Map(data)

# show plot and ouputs interpolated values to file
M.idw(filename="map_output_idw", showWhenDone=True)
```

## Features

### [Inverse Distance Weighting](https://pro.arcgis.com/en/pro-app/latest/help/analysis/geostatistical-analyst/how-inverse-distance-weighted-interpolation-works.htm)  

A given point `P(x, y)` is determined by the values of its neighbors, inversely to the distance of each neighbor.  

This ensures a `P` is more dependent on nearer points.  

- Weighting function `W(x, y)` of the form `exp(-d(x, y))`

### [Nearest Neighbor (in progress)](https://pro.arcgis.com/en/pro-app/latest/tool-reference/spatial-statistics/h-how-average-nearest-neighbor-distance-spatial-st.htm)  

`P(x, y)` is determined only by the value of its nearest neighbor.  

### [Spline (in progress)](https://pro.arcgis.com/en/pro-app/latest/tool-reference/3d-analyst/how-spline-works.htm)  

A 2D-spline is fit to known points, where unknown points `P(x, y)` can be determined.  

*credit to [`arcGIS`](https://www.arcgis.com/index.html)*


