terraformer
Version:
A Geo-toolkit built in Javascript.
176 lines (151 loc) • 11.8 kB
HTML
<html>
<head>
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<title>Terraformer</title>
<link href="/assets/css/terraformer-02847305.css" media="screen" rel="stylesheet" type="text/css" />
</head>
<body class="getting-started getting-started_index" id="wrap">
<nav>
<ul>
<li>
<a href="/" class="">Terraformer</a>
</li>
<li>
<a href="https://github.com/search?q=%40Esri+terraformer" class="">GitHub</a>
</li>
<li>
<a href="/install" class="">Install</a>
</li>
<li>
<a href="/" data-direction="active-top" class="toggle" id="close-drawer">Docs</a>
</li>
</ul>
</nav>
<div class="drawer" id="drawer">
<div class="doctoc drawer-nav drawer-top">
<div class="container">
<ul>
<h3>Terraformer Documentation</h3>
<li><a href="/getting-started/">Getting Started</a></li>
<li><a href="/core/">Terraformer Core</a></li>
<li class="indent"><a href="/core/#terraformerprimitive">Primitives</a></li>
<li class="indent"><a href="/core/#terraformertools">Tools</a></li>
<li><a href="/geostore/">GeoStores</a></li>
<li class="indent"><a href="/geostore/data-stores/">DataStores</a></li>
<li class="indent"><a href="/geostore/spatial-indexes/">Spatial Indexes</a></li>
<li><a href="/arcgis-parser/">ArcGIS Parser</a></li>
<li><a href="/wkt-parser/">WKT Parser</a></li>
<li><a href="/glossary/">Glossary</a></li>
</ul>
</div>
</div>
</div>
<main class="docs main-content" id="main-content">
<h1>Terraformer</h1>
<div class='semantic-toc'><ol><li><a href='#getting-started'>Getting Started</a><ol><li><a href='#nodejs'>Node.js</a></li><li><a href='#browser'>Browser</a></li></ol></li><li><a href='#working-with-primitives'>Working with Primitives</a></li><li><a href='#whats-next'>Whats Next?</a></div>
<p>Terraformer is an open source (MIT licensed) Javascript geo toolkit, built for the server and the browser.</p>
<h2>
<a id='getting-started' class='section-link'></a>
<a href='#getting-started' class='header-link'>Link</a>
Getting Started
<a href='#' class='back-to-top-link'>Back to Top</a>
</h2>
<p>Terraformer is broken into multiple small packages to give you the functionality you need while still remaining extremely lightweight.</p>
<p>There are currently several packages in the Terraformer ecosystem.</p>
<ul>
<li><a href="/core/">Terraformer</a> - The core library for manipilating GeoJSON and performaing calculations. Most other modules rely on <code>terraformer</code>.</li>
<li><a href="/arcgis-parser/">ArcGIS Parser</a> - Parses ArcGIS geometry objects to GeoJSON and vice-versa.</li>
<li><a href="/wkt-parser/">WKT Parser</a> - Parses basic WKT (Well Known Text) strings to and from GeoJSON.</li>
<li><a href="/geostore/">GeoStore</a> - A JavaScript database for storing and querying collections of GeoJSON Features. GeoStores also need an index module and a backing store which are distributed as seperate modules.</li>
</ul>
<h3>
<a id='nodejs' class='section-link'></a>
<a href='#nodejs' class='header-link'>Link</a>
Node.js
<a href='#' class='back-to-top-link'>Back to Top</a>
</h3>
<p>Install the core module with NPM and then require it in your Node program.</p>
<pre class="highlight plaintext"><code>$ npm install terraformer
</code></pre>
<pre class="highlight javascript"><code><span class="kd">var</span> <span class="nx">Terraformer</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'terraformer'</span><span class="p">);</span>
</code></pre>
<p>If needed, supporting packages can be added too.</p>
<pre class="highlight javascript"><code><span class="nx">require</span><span class="p">(</span><span class="s1">'terraformer-arcgis-parser'</span><span class="p">);</span>
<span class="nx">require</span><span class="p">(</span><span class="s1">'terraformer-wkt-parser'</span><span class="p">);</span>
<span class="nx">require</span><span class="p">(</span><span class="s1">'terraformer-geostore'</span><span class="p">);</span>
</code></pre>
<h3>
<a id='browser' class='section-link'></a>
<a href='#browser' class='header-link'>Link</a>
Browser
<a href='#' class='back-to-top-link'>Back to Top</a>
</h3>
<p>To use the Terraformer library, include a reference to it using a <code><script></code> tag.</p>
<pre class="highlight html"><code><span class="nt"><script </span><span class="na">src=</span><span class="s">"http://cdn-geoweb.s3.amazonaws.com/terraformer/1.0.4/terraformer.min.js"</span><span class="nt">></script></span>
</code></pre>
<p>To utilize supporting packages, you must load their source as well.</p>
<pre class="highlight html"><code><span class="nt"><script </span><span class="na">src=</span><span class="s">"terraformer-arcgis-parser.min.js"</span><span class="nt">></script></span> <span class="c"><!-- https://github.com/Esri/terraformer-arcgis-parser --></span>
<span class="nt"><script </span><span class="na">src=</span><span class="s">"terraformer-wkt-parser.min.js"</span><span class="nt">></script></span> <span class="c"><!-- https://github.com/Esri/terraformer-wkt-parser --></span>
<span class="nt"><script </span><span class="na">src=</span><span class="s">"terraformer-geostore.min.js"</span><span class="nt">></script></span> <span class="c"><!-- https://github.com/Esri/terraformer-geostore --></span>
</code></pre>
<h2>
<a id='working-with-primitives' class='section-link'></a>
<a href='#working-with-primitives' class='header-link'>Link</a>
Working with Primitives
<a href='#' class='back-to-top-link'>Back to Top</a>
</h2>
<p>Most of the core Terraformer libray centers around using <a href="/core/#terraformerprimitive"><code>Primitives</code></a>, which wrap GeoJSON objects and provide additional functionality.</p>
<p>You can create a new <a href="/core/#terraformerprimitive">Terraformer.Primitive</a> with any GeoJSON object.</p>
<pre class="highlight javascript"><code>
<span class="kd">var</span> <span class="nx">polygon</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Terraformer</span><span class="p">.</span><span class="nx">Primitive</span><span class="p">({</span>
<span class="s2">"type"</span><span class="p">:</span> <span class="s2">"Polygon"</span><span class="p">,</span>
<span class="s2">"coordinates"</span><span class="p">:</span> <span class="p">[</span>
<span class="p">[</span>
<span class="p">[</span><span class="o">-</span><span class="mf">122.66589403152467</span><span class="p">,</span> <span class="mf">45.52290150862236</span><span class="p">],</span>
<span class="p">[</span><span class="o">-</span><span class="mf">122.66926288604736</span><span class="p">,</span> <span class="mf">45.52291654238294</span><span class="p">],</span>
<span class="p">[</span><span class="o">-</span><span class="mf">122.67115116119385</span><span class="p">,</span> <span class="mf">45.518406234030586</span><span class="p">],</span>
<span class="p">[</span><span class="o">-</span><span class="mf">122.67325401306151</span><span class="p">,</span> <span class="mf">45.514000817199715</span><span class="p">],</span>
<span class="p">[</span><span class="o">-</span><span class="mf">122.6684260368347</span><span class="p">,</span> <span class="mf">45.5127377671934</span><span class="p">],</span>
<span class="p">[</span><span class="o">-</span><span class="mf">122.66765356063841</span><span class="p">,</span> <span class="mf">45.51694782364431</span><span class="p">],</span>
<span class="p">[</span><span class="o">-</span><span class="mf">122.66589403152467</span><span class="p">,</span> <span class="mf">45.52290150862236</span> <span class="p">]</span>
<span class="p">]</span>
<span class="p">]</span>
<span class="p">});</span>
<span class="kd">var</span> <span class="nx">point</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Terraformer</span><span class="p">.</span><span class="nx">Primitive</span><span class="p">({</span>
<span class="s2">"type"</span><span class="p">:</span> <span class="s2">"Point"</span><span class="p">,</span>
<span class="s2">"coordinates"</span><span class="p">:</span> <span class="p">[</span><span class="o">-</span><span class="mf">122.66947746276854</span><span class="p">,</span> <span class="mf">45.51775972687403</span><span class="p">]</span>
<span class="p">});</span>
</code></pre>
<p>Now that you have a point and a polygon primitive, you can use many of the primitive helper methods.</p>
<pre class="highlight javascript"><code><span class="c1">// add a new vertex to our polygon</span>
<span class="nx">polygon</span><span class="p">.</span><span class="nx">insertVertex</span><span class="p">([</span><span class="o">-</span><span class="mf">122.6708507537842</span><span class="p">,</span> <span class="mf">45.513188859735436</span><span class="p">],</span> <span class="mi">2</span><span class="p">);</span>
<span class="c1">// figure out if our point is within our polygon</span>
<span class="nx">point</span><span class="p">.</span><span class="nx">within</span><span class="p">(</span><span class="nx">polygon</span><span class="p">);</span> <span class="c1">// returns true</span>
</code></pre>
<p>You can also have Terraformer perform many geometric operations like convex hulls and bounding boxes.</p>
<pre class="highlight javascript"><code><span class="kd">var</span> <span class="nx">convexHull</span> <span class="o">=</span> <span class="nx">polygon</span><span class="p">.</span><span class="nx">convexHull</span><span class="p">();</span>
<span class="nx">point</span><span class="p">.</span><span class="nx">within</span><span class="p">(</span><span class="nx">convexHull</span><span class="p">);</span> <span class="c1">// returns true</span>
<span class="kd">var</span> <span class="nx">boundingBox</span> <span class="o">=</span> <span class="nx">polygon</span><span class="p">.</span><span class="nx">bbox</span><span class="p">();</span> <span class="c1">// returns the geojson bounding box for this object.</span>
</code></pre>
<h2>
<a id='whats-next' class='section-link'></a>
<a href='#whats-next' class='header-link'>Link</a>
Whats Next?
<a href='#' class='back-to-top-link'>Back to Top</a>
</h2>
<p>Start exploring all the options you have working with <a href="/core/#terraformerprimitive">Primitives</a> and the core library. Then start exploring other modules.</p>
<p><a href="/geostore/">Terraformer GeoStore</a> is a JavaScript database for indexing and querying large amounds of GeoJSON. You can use multiple types of spatial indexes and backing stores for your data.</p>
<p>You can also convert data between different formats like <a href="/arcgis-parser/">ArcGIS Geometries</a> and <a href="/wkt-parser/">Well Known Text</a>. Since Terraformer is a modular framework, you can pick and choose the pieces to use in your own application.</p>
</main>
<footer>
<p>
Terraformer is an open source project from the <a href="http://pdx.esri.com/">Esri Portland R&D Center</a>
</p>
</footer>
<script src="/assets/javascripts/modernizr.custom-cadc78a2.js" type="text/javascript"></script>
<script src="/assets/javascripts/classie-b6db1f70.js" type="text/javascript"></script>
<script src="/assets/javascripts/drawer-3a1490eb.js" type="text/javascript"></script>
</body>
</html>