
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
geonames-stream
Advanced tools
$ npm install geonames-stream
Note: you will need node
and npm
installed first.
The easiest way to install node.js
is with nave.sh by executing [sudo] ./nave.sh usemain stable
You can extract the geonames on-the-fly while you're still downloading the file:
var geonames = require('geonames-stream'),
request = require('request');
request.get( 'http://download.geonames.org/export/dump/NZ.zip' )
.pipe( geonames.pipeline )
.pipe( geonames.stringify )
.pipe( process.stdout );
Or you can go old-school and work with files on disk:
var geonames = require('geonames-stream'),
fs = require('fs');
// wget http://download.geonames.org/export/dump/NZ.zip
fs.createReadStream( 'NZ.zip' )
.pipe( geonames.pipeline )
.pipe( geonames.stringify )
.pipe( process.stdout );
The easiest way to get started writing your own pipes is to use through2
; just make sure you call next()
.
var geonames = require('geonames-stream'),
request = require('request'),
through = require('through2');
request.get( 'http://download.geonames.org/export/dump/NZ.zip' )
.pipe( geonames.pipeline )
.pipe( through.obj( function( data, enc, next ){
console.log( data._id, data.name, data.population );
next();
}));
2189529 Invercargill 47287
2189530 Invercargill 0
2189531 Inveagh Bay 0
2189532 Inumia Stream 0
The streams output objects which look like this:
{
"_id": "2179348",
"name": "Whananaki",
"asciiname": "Whananaki",
"alternatenames": [],
"latitude": "-35.5",
"longitude": "174.45",
"feature_class": "P",
"feature_code": "PPL",
"country_code": "NZ",
"cc2": "",
"admin1_code": "F6",
"admin2_code": "002",
"admin3_code": "",
"admin4_code": "",
"population": "0",
"elevation": "",
"dem": "59",
"timezone": "Pacific/Auckland",
"modification_date": "2011-08-01"
}
The module comes with a prebuild processing pipeline to make life easier:
var pipeline = bun([ unzip(), split(), parser(), modifiers() ]);
If you need more control, you can re-wire things as you wish; say.. maybe you didn't want the unzip step?
var geonames = require('geonames-stream'),
request = require('request'),
split = require('split');
request.get( 'http://example.com/example.tsv' )
// .pipe( geonames.unzip() ) I don't want the unzip step
.pipe( split() )
.pipe( geonames.parser() )
.pipe( geonames.modifiers() )
.pipe( geonames.stringify )
.pipe( process.stdout );
The geonames-stream
npm module can be found here:
https://npmjs.org/package/geonames-stream
Please fork and pull request against upstream master on a feature branch.
Pretty please; provide unit tests and script fixtures in the test
directory.
$ npm test
Travis tests every release against node version 0.10
FAQs
Streaming geonames parser
The npm package geonames-stream receives a total of 44 weekly downloads. As such, geonames-stream popularity was classified as not popular.
We found that geonames-stream demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.