# make-geo-json
Converts polylines, wkts, wkbs, polygons, circles, rectangles, googlePolys, as well as standard geoJSON into geoJSON MultiPolygon Feature Objects. Includes poly area (calculated in square miles).
Converts FeatureCollection and KMLs into arrays of geoJSON MultiPolygon Feature Objects.

Can be used as npm package or AWS Lambda.

### Params
makeGeoJSON receives two parameters, "type" and "poly".

#### Type

Options for type include:
  + wkt
  + wkb
  + polygons (Leaflet polygon)
  + circles (Leaflet circles)
  + rectangles (Leaflet rectangles)
  + Feature (Feature, geoJSON, and geo_json are the same, but worded differently to catch user mistakes)
  + geoJSON
  + geo_json
  + FeatureCollection
  + wkb_list (An array of wkbs)
  + kml
  
#### Poly

Poly will be passed in as a string, object, or array of objects, depending on the type
String:
  + wkt
  + wkb
  + polyline
Object:
  + polygons
  + circles
  + rectangles
  + geoJSON
  + FeatureCollection
Array of Objects:
  + kml
  

### Lambda

https://console.aws.amazon.com/lambda/home?region=us-east-1#/functions/make-geo-json?tab=graph

arn:aws:lambda:us-east-1:498598553520:function:make-geo-json

Pass in event with this structure:
```
{
  "type": :string,
  "poly": :string (for polyline, wkt, wkb, polygon, circle, rectangle)
          :object (for googlePolys, geoJSON, FeatureColletion)
          :array of objects (for kml)
          :array of strings (for wkb_list)
}
```

### NPM
```
npm i --save make-geo-json
```
```
import { makeGeoJSON } from 'make-geo-json';
```

## To Use
    
```
makeGeoJSON(poly.type, poly,data)
```

### Peer Dependencies

```
npm i --save lodash
npm i --save wkx
```

lodash - https://www.npmjs.com/package/lodash

wkx - https://www.npmjs.com/package/wkx

### Examples

```
const polyline = {
    type: 'polyline',
    data: 'polylinestringdata',
  };
  
  makeGeoJSON(polyline.type, polyline.data);
  
  outputs:
  { type: 'Feature',
    properties: {
      area: number,
      whateverelse: "You put here",
    },
    geometry: {
      type: 'MultiPolygon',
      coordinates: [[[
        [long, lat],
        [long, lat],
      ]]],
    },
  }
  ```
  Also see test/ for more examples.
  
  ## Data Conversion
  
  ### Points and Linestrings
  Any single point poly is converted to a circle with a 75 meter radius.
  Any two point poly is converted into a rectangle.
  Any three point plus, open linestring is closed.
  
 
  ## Output
  
  Output comes in the form of a MultiPolygon Feature Object. With the *exceptions* of kml and FeatureCollection, which return as an aray of Multipolygon Feature Objects.
  
  ## Testing
  
  Use claudia `test-lambda --event event.json` to test lambda. Must have claudia.js installed on machine.
  
  Use `npm test` to run jest tests.
  
  
###### For reference see: http://geojson.org/
  
  
  
