Blazing Fast JavaScript Raster Processing Engine

Overview

Maintainability Test Coverage

Geoblaze

A blazing fast javascript raster processing engine


Geoblaze is a geospatial raster processing engine written purely in javascript. Powered by geotiffjs, it provides tools to analyze GeoTIFFs. Using geoblaze, you can run computations ranging from basic statistics (min, max, mean, mode) to band arithmetic and histogram generation in either a web browser or a node application.

Learn more by reading our documentation

Getting Started

  1. Add Geoblaze to your project
  npm install geoblaze
  1. Load a GeoTIFF and run a calculation
import geoblaze from 'geoblaze';

const url = 'http://url-to-geotiff';

async function getMean () {
  const raster = await geoblaze.load(url);
  return geoblaze.mean(raster);
}

This is a contrived example, but using geoblaze is really this simple!

Contributing

We would love to have your support improving geoblaze. Here are some ways to contribute:

Issues

If you find a 🐛 , please report it as an issue! To avoid overwhelming our developers, please first scan the list of bugs to make sure it hasn't already been reported. Make sure to add steps to reproduce, so we can quickly find and fix the problem.

We are also accepting feature requests! Our goal is to make geoblaze as useful to the community as possible. Towards that goal, we would love suggestions for additional features to improve the tool.

Please tag issues with the appropriate label.

Pull Requests

We are always accepting new PRs. To get started, see the developer's guide below

We squash and rebase all PRs. Please squash all of your commits into one and rebase off dev.

Submitting a PR

  1. Make sure the branch is rebased and passing tests.

  2. Answer all of the questions in the PR template.

  3. Add the "needs review" label to your PR.

  4. Upon review, the label will be adjusted. If the label is switched to "needs development", this means there are comments that need to be addressed. After addressing the comments, move the label back to "needs review"

  5. Once comments have been addressed, a reviewer will move the label to "can deploy". After a final check, the PR will be merged and deployed.

Developer's Guide

Setup

  1. Fork the repository

  2. Clone your fork

  git clone [email protected]:[your-username]/geoblaze.git
  1. Install dependencies
  cd geoblaze
  npm install

Linting

Geoblaze uses eslint for linting. We suggest using an eslint plugin for your text editor. Here are some common options:

Our style guide extends the eslint:recommended set of standards and is therefore relatively minimal. As the project expands in scope and number of contributors, we will start to consider more linting rules. Please feel free to suggest some in a PR!

To test for linting errors:

  npm run lint

Testing

Geoblaze uses mocha as its testing framework. To learn more, see their getting started guide.

To run tests:

  1. Run the setup script. This script will download all of the necessary test data from s3.
  npm run setup
  1. Spin up the test node server
  npm run server
  1. In a separate tab, run tests
  npm run test

Used By

Comments
  • fix wrapGeom when geom.srs === georaster.projection

    fix wrapGeom when geom.srs === georaster.projection

    Type of PR

    • [X] Bug Fix
    • [ ] Feature

    What is the Goal of the PR?

    Fix bug in wrapGeom.

    What is the Motivation for the PR?

    wrapGeom passes input object rather than only geometry when srs matches georaster, causing wrapped function to raise "Invalid point object was used." or similar error.

    What Tests are Included?

    New test for the bug that is fixed.

    opened by jcphill 5
  • Can't use stats function

    Can't use stats function

    Describe the bug I can import geoblaze but stats is not available. It doesn't seem to have an export listed here: https://github.com/GeoTIFF/geoblaze/blob/master/src/index.js

    To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    opened by rumski20 5
  • IE11 support via babel

    IE11 support via babel

    Describe the bug The geoblaze build is not compatible with IE11, which is 2-3% of web traffic. Since the project is already using webpack/babel, it may be reasonable to specify older browsers as transpile/polyfill targets, but I'm not sure how to make this happen with the current .babelrc setup.

    opened by bdon 4
  • Georaster from Geotif.js array

    Georaster from Geotif.js array

    Its possible to use a preloaded and cached TIF file on a Float32array from geotif.js to use it with geoblaze? In order to avoid load multiple times from url. How can i achieve that?

    Thanks

    opened by codesian 4
  • max fuction has a typo that prevents using nodata value of the georaster

    max fuction has a typo that prevents using nodata value of the georaster

    Describe the bug Line 36 of /src/max/max.module.js const noDataValue = georaster.no_date_value;

    should be (from taken from min): const { noDataValue } = georaster;

    To Reproduce Use the function with a dataset where the nodata would be max.

    Expected behavior Output of the real max value not the nodata value

    opened by CLAMPE2020 3
  • update dependencies

    update dependencies

    Type of PR

    • [ ] Bug Fix
    • [ ] Feature
    • [x] Maintenance

    What is the Goal of the PR?

    General dependency updates for maintenance. The main packages that were updated are:

    • webpack (move to v4)
    • documentation
    • turf

    What is the Motivation for the PR?

    1. We are currently adding all of turf (@turf/turf) as a dependency, which feels a bit unnecessary and unduly heavy
    2. Webpack 4 has been out for a while now and is fairly stable, figured it was time to move over to it

    What Tests are Included?

    No tests included, but ran all tests locally after updating packages

    needs review 
    opened by sdpeyton 3
  • Directly specify which bundle to use in browser

    Directly specify which bundle to use in browser

    Type of PR

    • [x] Bug Fix
    • [ ] Feature

    What is the Goal of the PR?

    Fix issues with not being able to load the latest version in Angular and other projects

    What is the Motivation for the PR?

    We need this library in our application, version 0.2.2 works but we'd rather keep up to date with later versions. Trying to import the newest version throws errors similar to https://github.com/GeoTIFF/geoblaze/issues/165. As far as my understanding about webpack and bundling goes (please note, I haven't used those tools directly a lot, so my understanding might be limited), the browser key can be directly set to the script to use. Setting an object is usually used when other modules are required which are not available in the browser, which you can then shim or just completely ignore. (https://github.com/defunctzombie/package-browser-field-spec)

    What Tests are Included?

    None

    opened by Tommatheussen 2
  • Issue with Create-react_app -- Uncaught ReferenceError: require is not defined

    Issue with Create-react_app -- Uncaught ReferenceError: require is not defined

    Trying to utilize geoblaze on the frontend in a react app, I have the latest release of georaster concurrently installed as an independent dependency also.

    Anyway, upon loading the geoblaze module into a react component, regardless of whether I use the require/import syntax, everytime I try to perform an operation like rastercalculator or load with geoblaze, I get the following error:

    Uncaught ReferenceError: require is not defined at Object. (44e88b0d-451a-4137-87d5-910ea3128104:1) and the reference is to the geoblaze.node.min script rather than the web version. I'm not sure how to get react's webpack dev server to load the minified web script in lieu of the geoblaze.node.min script. Before that there was some errors related to georaster as well, so I also tried to create the georaster directly instead of having geoblaze handle it, and passing the prepared georaster object to the geoblaze function seemed to remove those.

    Looks like maybe the package.json could be amended, just perusing npm's module docs I came across this:

    "The main field is a module ID that is the primary entry point to your program. That is, if your package is named foo, and a user installs it, and then does require("foo"), then your main module’s exports object will be returned. This should be a module ID relative to the root of your package folder. For most modules, it makes the most sense to have a main script and often not much else.

    browser§ If your module is meant to be used client-side the browser field should be used instead of the main field. This is helpful to hint users that it might rely on primitives that aren’t available in Node.js modules. (e.g. window)

    Haven't looked into environment detection variable that might clear the issue up

    Thanks -- take care

    opened by laterdude 2
  • Fixed So Can Require in Node and Load in Browser

    Fixed So Can Require in Node and Load in Browser

    • Made it so production build is geoblaze.min.js and dev build is geoblaze.js
    • Added files for testing if builds can be required and also included in a web page.
    • Added node-fetch to webpack externals, so that it's not included in the build, but instead when node-fetch is required, it looks for it in the node_modules folder (https://webpack.js.org/configuration/externals/). Problem with webpacking node-fetch is that the author explicitly states node-fetch is only for node and any issue is webpack's fault.

    Type of PR

    • [X] Bug Fix

    What is the Goal of the PR?

    Fix issues where can't require in node

    What is the Motivation for the PR?

    Fix build

    What Tests are Included?

    Added test-loading-builds.js

    opened by DanielJDufour 2
  • Update debugging

    Update debugging

    What

    This PR adds a logger file which exports an object to handle logging in various environments. The logger looks at the process.env.DEBUG_LEVEL environment (defaulting to 0 if none is specified) and determines when to log certain information to the console.

    The logger is accessed by importing it (const logger = require('../../logger'); for most packages) and then running its logging functions. There are currently three logging functions corresponding to two levels of logs:

    • logger.debug() - debug level 2
    • logger.info() - debug level 1 or lower
    • logger.error() - errors caught at debug level 1 or lower

    Why

    By centralizing how logging works across geoblaze, we can simplify the process of moving between debug levels and handling logging. By removing logic handling logging for each location where logging occurs, we can minimize the possibility of syntax errors.

    opened by sdpeyton 2
  • Bump mathjs from 6.6.5 to 7.5.1

    Bump mathjs from 6.6.5 to 7.5.1

    Bumps mathjs from 6.6.5 to 7.5.1.

    Changelog

    Sourced from mathjs's changelog.

    2020-10-10, version 7.5.1

    • Fix object pollution vulnerability in math.config. Thanks Snyk.

    2020-10-07, version 7.5.0

    • Function pickRandom now allows randomly picking elements from matrices with 2 or more dimensions instead of only from a vector, see #1974. Thanks @​KonradLinkowski.

    2020-10-07, version 7.4.0

    • Implemented support for passing a precision in functions ceil, floor, and fix, similar to round, see #1967, #1901. Thanks @​rnd-debug.
    • Implemented function rotationMatrix, see #1160, #1984. Thanks @​rnd-debug.
    • Implement a clear error message when using sqrtm with a matrix having more than two dimensions. Thanks @​KonradLinkowski.
    • Update dependency decimal.js to 10.2.1.

    2020-09-26, version 7.3.0

    • Implemented functions usolveAll and lsolveAll, see #1916. Thanks @​m93a.
    • Implemented support for units in functions std and variance, see #1950. Thanks @​rnd-debug.
    • Implemented support for binary, octal, and hexadecimal notation in the expression parser, and implemented functions bin, oct, and hex for formatting. Thanks @​clnhlzmn.
    • Fix #1964: inconsistent calculation of negative dividend modulo for BigNumber and Fraction. Thanks @​ovk.

    2020-08-24, version 7.2.0

    2020-07-13, version 7.1.0

    • Implement support for recursion (self-referencing) of typed-functions, new in [email protected]. This fixes #1885: functions which where extended with a new data type did not always work. Thanks @​nickewing.
    • Fix #1899: documentation on expression trees still using old namespace math.expression.node.* instead of math.*.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Node worker_threads not available.

    Node worker_threads not available.

    const geoblaze = require('geoblaze')
    const fs = require('fs');
    
    //const file = '/MAPS/DEMS/trentino-altoadige.tif'
    const file = process.argv[2];
    
    const point = {
    	"type": "Point",
    	"coordinates": [
    	  11.0,
    	  46.0
    	]
    }
    fs.readFile(file, async (err,data) => {
    	const res = await geoblaze.identify(data, point)
    	console.log(res)
    });
    

    run in node 16.16 return null and this error "Node worker_threads not available. Trying to fall back to tiny-worker polyfill... │o.png null"

    opened by stefanocudini 3
  • Support for WMS layers

    Support for WMS layers

    Is your feature request related to a problem? Please describe. There is no documented way to use geoblaze with WMS. This is a very important use case as raster data is generally large in nature and usually served through WMS.

    Describe the solution you'd like One should be able to use geoblaze with WMS. Instead of passing the file url, one can pass the WMS url and get results.

    Describe alternatives you've considered No alternatives considered yet. Looking for some way to do stuff on client-side, if geoblaze can deal with WMS, that'd be awesome.

    Additional context GetFeatureInfo can help to get actual pixel values. This can be integrated into the code.

    opened by theoway 2
  • Potentially unsupported geometry?

    Potentially unsupported geometry?

    Describe the bug When trying to calculate means for many (thousand) polygons, I frequently receive the "No Values were found in the given geometry" error. However, the raster definitely covers the given geometry and has values in it (checked using QGIS → Zonal Statistics). Also, the mean calculation works when I just pass the geometries bboxes. Could it be that the type of polygon, e.g. "MultiPolygons" or concave polygons are not supported by geoblaze?

    To Reproduce See the following Observable notebook to reproduce: https://observablehq.com/@chrispahm/geoblaze-unsupported-geometry-type

    Expected behavior The mean method should return the same mean as QGIS zonal statistics.

    opened by chrispahm 0
  • Remove console.error from geoblaze

    Remove console.error from geoblaze

    First of all: Thanks for this awesome library! 🚀 🔥

    Describe the bug Before throwing an error, geoblaze currently also logs the error to the console using console.error (see here for an example https://github.com/GeoTIFF/geoblaze/blob/f99483b7446eadbaf55c5371294353451e020ec3/src/stats/stats.core.js#L67.

    Especially when working with large datasets, the excessive logging becomes a serious performance hit (see https://stackoverflow.com/a/26754011/6213343), and there is no option to turn it off.

    To Reproduce See the following Observable notebook: https://observablehq.com/@chrispahm/geoblaze-unsupported-geometry-type When opening the console, a log of the error can be found.

    Expected behavior IMHO logging should only happen on the user side. Instead of relying on geoblaze to log to the console, I think the library should just throw the error so users can decide how to proceed.

    Another approach could be to pass a debug option to the geoblaze function that enables logging.

    P.S.: I can create a PR if desired!

    opened by chrispahm 0
  • error compiling geoblaze

    error compiling geoblaze

    Describe the bug I have a Vue/Webpack app that uses geoblaze. When I try to compile (eg. npm run serve) the app I get the following errors:

     ERROR  Failed to compile with 2 errors                                           4:21:10 PM
    
     error  in ./node_modules/geoblaze/src/load/load.module.js
    
    Module not found: Error: Can't resolve 'url' in 'C:\Projects\forest-opt\client\forest-opt-client\node_modules\geoblaze\src\load'
    
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. 
    This is no longer the case. Verify if you need this module and configure a polyfill for it. 
    
    If you want to include a polyfill, you need to:
            - add a fallback 'resolve.fallback: { "url": require.resolve("url/") }'
            - install 'url'
    If you don't want to include a polyfill, you can use an empty module like this:
            resolve.fallback: { "url": false }
    
     error  in ./node_modules/geoblaze/src/parse/parse.module.js
    
    Module not found: Error: Can't resolve 'url' in 'C:\Projects\forest-opt\client\forest-opt-client\node_modules\geoblaze\src\parse'
    
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. 
    This is no longer the case. Verify if you need this module and configure a polyfill for it. 
    
    If you want to include a polyfill, you need to:
            - add a fallback 'resolve.fallback: { "url": require.resolve("url/") }'
            - install 'url'
    If you don't want to include a polyfill, you can use an empty module like this:
            resolve.fallback: { "url": false }
    
    ERROR in ./node_modules/geoblaze/src/load/load.module.js 3:0-26
    Module not found: Error: Can't resolve 'url' in 'C:\Projects\forest-opt\client\forest-opt-client\node_modules\geoblaze\src\load'
    
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. 
    This is no longer the case. Verify if you need this module and configure a polyfill for it. 
    
    If you want to include a polyfill, you need to:
            - add a fallback 'resolve.fallback: { "url": require.resolve("url/") }'
            - install 'url'
    If you don't want to include a polyfill, you can use an empty module like this:
            resolve.fallback: { "url": false }
     @ ./node_modules/geoblaze/src/load/index.js 20:0-40 20:0-40
     @ ./node_modules/geoblaze/src/wrap-load.js 1:0-26 8:13-17
     @ ./node_modules/geoblaze/src/raster-calculator/raster-calculator.module.js 5:0-32 79:15-19 @ ./node_modules/geoblaze/src/raster-calculator/index.js 14:0-53 14:0-53
     @ ./src/modules/foRasterLayer.js 22:0-71 212:24-40
     @ ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/Map.vue?vue&type=script&lang=js 13:0-55 314:22-35
     @ ./src/components/Map.vue?vue&type=script&lang=js 1:0-195 1:0-195 1:196-380 1:196-380     
     @ ./src/components/Map.vue 2:0-54 3:0-49 3:0-49 8:49-55
     @ ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/Tool.vue?vue&type=script&lang=js 2:0-42 18:4-9
     @ ./src/views/Tool.vue?vue&type=script&lang=js 1:0-196 1:0-196 1:197-382 1:197-382
     @ ./src/views/Tool.vue 2:0-55 3:0-50 3:0-50 8:49-55
     @ ./src/router/index.js 14:0-37 58:13-17
     @ ./src/main.js 18:0-30 29:8-14 40:3-9
    
    ERROR in ./node_modules/geoblaze/src/parse/parse.module.js 2:0-26
    Module not found: Error: Can't resolve 'url' in 'C:\Projects\forest-opt\client\forest-opt-client\node_modules\geoblaze\src\parse'
    
    BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. 
    This is no longer the case. Verify if you need this module and configure a polyfill for it. 
    
    If you want to include a polyfill, you need to:
            - add a fallback 'resolve.fallback: { "url": require.resolve("url/") }'
            - install 'url'
    If you don't want to include a polyfill, you can use an empty module like this:
            resolve.fallback: { "url": false }
     @ ./node_modules/geoblaze/src/parse/index.js 24:0-41 24:0-41
     @ ./node_modules/geoblaze/src/wrap-parse.js 1:0-28 8:13-18
     @ ./node_modules/geoblaze/src/get/get.module.js 3:0-33 105:15-19
     @ ./node_modules/geoblaze/src/get/index.js 14:0-39 14:0-39
     @ ./node_modules/geoblaze/src/raster-calculator/raster-calculator.module.js 4:0-25 39:22-25 @ ./node_modules/geoblaze/src/raster-calculator/index.js 14:0-53 14:0-53
     @ ./src/modules/foRasterLayer.js 22:0-71 212:24-40
     @ ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/Map.vue?vue&type=script&lang=js 13:0-55 314:22-35
     @ ./src/components/Map.vue?vue&type=script&lang=js 1:0-195 1:0-195 1:196-380 1:196-380     
     @ ./src/components/Map.vue 2:0-54 3:0-49 3:0-49 8:49-55
     @ ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/Tool.vue?vue&type=script&lang=js 2:0-42 18:4-9
     @ ./src/views/Tool.vue?vue&type=script&lang=js 1:0-196 1:0-196 1:197-382 1:197-382
     @ ./src/views/Tool.vue 2:0-55 3:0-50 3:0-50 8:49-55
     @ ./src/router/index.js 14:0-37 58:13-17
     @ ./src/main.js 18:0-30 29:8-14 40:3-9
    
    webpack compiled with 2 errors
    

    To Reproduce Compile or build an app using geoblaze. [email protected] [email protected]

    Expected behavior Expected app to compile without errors

    Additional context This worked fine before when I was using [email protected] and webpack was likely < 5

    opened by rumski20 0
  • Build failed on Windows. Changes enable cross-platform build

    Build failed on Windows. Changes enable cross-platform build

    Type of PR

    • [+] Bug Fix
    • [+] Feature

    What is the Goal of the PR?

    To enable build on Windows platform.

    What is the Motivation for the PR?

    I'm using Windows :) I'm new to community based development and js dev and github. I forked the repository and cloned it to my pc and followed instructions to build, but that failed. This should not happen. The project/repository should be platform independent.

    What Tests are Included?

    It builds

    opened by avnir-cs 1
Releases(v1.2.0)
  • v1.2.0(Nov 19, 2022)

    • updated some packages 6d13f97
    • log errors e56b388
    • fixed linting define 99fd342
    • fixed merge conflicts 46c50a9
    • reformatted d962f00
    • Merge pull request #194 from jcphill/fix-same-srs b7e6afb
    • fix wrapGeom when geom.srs === georaster.projection 74e8fbe
    • test wrapGeom when geom.srs === georaster.projection 6f22542
    • Merge branch 'master' of github.com:GeoTIFF/geoblaze f99483b
    • improved precision of intersect-polygon 2bbcdec
    • Update README.md 9af42f1

    https://github.com/GeoTIFF/geoblaze/compare/v1.1.0...v1.2.0

    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Apr 19, 2022)

  • v1.0.3(Nov 16, 2021)

    • updated version 55ac033
    • rebuilt 03abbd2
    • updated georaster 838ec46
    • added esm to deps f3097c2
    • replaced npm with pnpm and use quick-resolve 259c9c7

    https://github.com/GeoTIFF/geoblaze/compare/v1.0.1...v1.0.3

    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Oct 26, 2021)

    • updated puppeteer 0a5b044
    • Merge pull request #186 from rumski20/add-stats-export 7f967f5
    • add stats function to list of exports abdc9fd
    • Update README.md 67ff119

    https://github.com/GeoTIFF/geoblaze/compare/v1.0.0...v1.0.1

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Oct 10, 2021)

    • added dist to package.json files a8b219a
    • fixed CNAME 0ec63aa
    • reformatted and updated documentation b649577
    • format and add wrap-load 2264bd0
    • removed defunct .travis.yml 7bfa5f0
    • Update README.md aa916da
    • updated files faf5da2
    • COG support and formatted 2b322d6
    • COG Support 2f71f1b
    • modernized mean 5b32e41
    • updated max 4d3d74c
    • modernized intersect-polygon 8b80e7d
    • modernized histogram ac9ffbd
    • modernized identify cd4194e
    • modernized sum abf63e2
    • updated get d0f3607
    • added parse 9474c3d
    • added deprecation warning to load 6103a1f
    • formatted utils d575dd4
    • added wrap-func e001b29
    • updated error-constants formatting fc41d23
    • improved max 5090261
    • updated intersect and median 9c47d0e
    • updated get 681db60
    • added COG support to id b054601
    • replaced node-fetch with cross-fetch 853f164
    • replaced mocha/chai with flug 7560422

    https://github.com/GeoTIFF/geoblaze/compare/v0.3.2...v1.0.0

    Source code(tar.gz)
    Source code(zip)
  • v0.3.2(Apr 21, 2021)

  • v0.3.1(Apr 21, 2021)

Owner
GeoTIFF
Help makes GeoTIFF's easier to use
GeoTIFF
Super Low-Level Raster Reprojection and Resampling Library

geowarp Super Low-Level Raster Reprojection and Resampling Library install npm install -S geowarp usage const geowarp = require("geowarp"); const proj

Daniel J. Dufour 27 Nov 9, 2022
JavaScript WebGL 3D map rendering engine

VTS Browser JS is a powerful JavaScript 3D map rendering engine with a very small footprint (about 163 kB of gziped JS code). It provides almost all f

Melown Technologies, SE 203 Dec 7, 2022
3D web map rendering engine written in TypeScript using three.js

3D web map rendering engine written in TypeScript using three.js

HERE Technologies 1.2k Dec 30, 2022
A Google Earth Engine tool for identifying satellite radar interference

Many military radars interfere with open source satellite imagery when they're turned on. A new tool lets anyone monitor when and where these radars a

Bellingcat 411 Dec 27, 2022
A very fast geospatial point clustering library for browsers and Node.

supercluster A very fast JavaScript library for geospatial point clustering for browsers and Node. <script src="https://unpkg.com/[email protected]/d

Mapbox 1.6k Jan 7, 2023
Fast Map built for keys that are always fixed size uniformly distributed buffers.

turbo-hash-map Fast Map built for keys that are always fixed size uniformly distributed buffers. npm install turbo-hash-map Uses a prefix trie to map

Mathias Buus 39 Jun 20, 2022
:leaves: JavaScript library for mobile-friendly interactive maps

Leaflet is the leading open-source JavaScript library for mobile-friendly interactive maps. Weighing just about 39 KB of gzipped JS plus 4 KB of gzipp

Leaflet 36.5k Jan 1, 2023
An open-source JavaScript library for world-class 3D globes and maps :earth_americas:

CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin. It uses WebGL for hardware-accelerated graphics

Cesium 9.7k Dec 26, 2022
Polymaps is a free JavaScript library for making dynamic, interactive maps in modern web browsers.

Polymaps Polymaps is a free JavaScript library for making dynamic, interactive maps in modern web browsers. See http://polymaps.org for more details.

Urban Airship 1.6k Dec 23, 2022
UNMAINTAINED Open source JavaScript renderer for Kartograph SVG maps

This project is not maintained anymore. Here are a few reasons why I stopped working on kartograph.js: there's no need to support non-SVG browsers any

null 1.5k Dec 11, 2022
Mapbox JavaScript API, a Leaflet Plugin

mapbox.js A Mapbox plugin for Leaflet, a lightweight JavaScript library for traditional raster maps. For the state-of-the-art Mapbox vector maps libra

Mapbox 1.9k Dec 23, 2022
An open-source JavaScript library for world-class 3D globes and maps :earth_americas:

CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin. It uses WebGL for hardware-accelerated graphics

Cesium 9.7k Jan 3, 2023
JavaScript library to transform coordinates from one coordinate system to another, including datum transformations

PROJ4JS Proj4js is a JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations. Origina

null 1.7k Dec 28, 2022
The NASA WorldWind Javascript SDK (WebWW) includes the library and examples for creating geo-browser web applications and for embedding a 3D globe in HTML5 web pages.

Web WorldWind New versions of WorldWind released Web WorldWind 0.10.0 and WorldWind Java 2.2.0 are now available on GitHub. The new version of Web Wor

NASA WorldWind 770 Jan 1, 2023
geotiff.js is a small library to parse TIFF files for visualization or analysis. It is written in pure JavaScript, and is usable in both the browser and node.js applications.

geotiff.js Read (geospatial) metadata and raw array data from a wide variety of different (Geo)TIFF files types. Features Currently available function

geotiff.js 649 Dec 21, 2022
JavaScript Topology Suite

JSTS JSTS is an ECMAScript library of spatial predicates and functions for processing geometry conforming to the Simple Features Specification for SQL

Björn Harrtell 1.3k Jan 4, 2023
The smallest, simplest and fastest JavaScript pixel-level image comparison library

pixelmatch The smallest, simplest and fastest JavaScript pixel-level image comparison library, originally created to compare screenshots in tests. Fea

Mapbox 5.1k Jan 8, 2023
Geokit - is a command-line interface (CLI) tool written in javascript, that contains all the basic functionalities for measurements, conversions and operations of geojson files.

Geokit Geokit is a command-line interface (CLI) tool written in javascript, that contains all the basic functionalities for measurements, conversions

Development Seed 31 Nov 17, 2022
great circle routes in javascript

arc.js Calculate great circles routes as lines in GeoJSON or WKT format. Algorithms from https://edwilliams.org/avform.htm#Intermediate Includes basic

Dane Springmeyer 341 Dec 26, 2022