geonames

package module
v0.0.0-...-0324843 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 5, 2023 License: Apache-2.0 Imports: 8 Imported by: 0

README

Geonames

Golang parsing library for the geonames.org database dump.

Features

  • Parse data directly without downloading and unzipping
  • Read line by line with low memory consumption

Implemented data

status archive comment
xx.zip GetGeonames; See readme
admin1CodesASCII.txt GetAdminDivisions
admin2Codes.txt GetAdminSubdivisions
adminCode5.zip GetAdminCodes5
allCountries.zip GetGeonames
⚠️ alternateNames.zip depricated, use alternateNamesV2.zip instead
alternateNamesDeletes-xxxx-xx-xx.txt GetAlternateNameDeletes
alternateNamesModifications-xxxx-xx-xx.txt GetAlternateNameModifications
alternateNamesV2.zip GetAlternateNames
alternatenames/xx.zip GetAlternateNames; See readme
cities1000.zip GetGeonames
cities15000.zip GetGeonames
cities500.zip GetGeonames
cities5000.zip GetGeonames
countryInfo.txt GetCountries
deletes-xxxx-xx-xx.txt GetDeletes
featureCodes_bg.txt GetFeatureCodes
featureCodes_en.txt GetFeatureCodes
featureCodes_nb.txt GetFeatureCodes
featureCodes_nn.txt GetFeatureCodes
featureCodes_no.txt GetFeatureCodes
featureCodes_ru.txt GetFeatureCodes
featureCodes_sv.txt GetFeatureCodes
hierarchy.zip GetHierarchy
iso-languagecodes.txt GetLanguages
modifications-xxxx-xx-xx.txt GetModifications
no-country.zip GetGeonames
shapes_all_low.zip GetShapes
⚠️ shapes_simplified_low.json.zip I don't see the point in geojson parsing
timeZones.txt GetTimeZones
userTags.zip GetUserTags

Installation

$ go get github.com/v3v3r3v/geonames

Quick start

Parsing cities

package main

import (
    "fmt"
    "github.com/v3v3r3v/geonames"
    "github.com/v3v3r3v/geonames/models"
    "log"
)

func main() {
    p := geonames.NewParser()
    
    //print all cities with a population greater than 5000
    err := p.GetGeonames(geonames.Cities5000, func(geoname *models.Geoname) error {
    fmt.Println(geoname.Name)
        return nil
    })
    if err != nil {
        log.Fatal(err)
    }
}

Parsing alternames
package main

import (
    "fmt"
    "github.com/v3v3r3v/geonames"
    "github.com/v3v3r3v/geonames/models"
    "log"
)
func main() {
    p := geonames.NewParser()
    
    err := p.GetAlternateNames(geonames.AlternateNames, func(geoname *models.AlternateName) error {
        fmt.Println(geoname.Name)
        return nil
    })
    if err != nil {
        log.Fatal(err)
    }
}
Parsing alphabetical list of archives
package main

import (
    "fmt"
    "github.com/v3v3r3v/geonames"
    "github.com/v3v3r3v/geonames/models"
    "log"
)
func main() {
    p := geonames.NewParser()
    
    err := p.GetGeonames("AD.zip", func(geoname *models.Geoname) error {
        fmt.Println(geoname.Name)
        return nil
    })
    if err != nil {
        log.Fatal(err)
    }
    
    err = p.GetAlternateNames("alternames/AD.zip", func(geoname *models.AlternateName) error {
        fmt.Println(geoname.Name)
        return nil
    })
    if err != nil {
        log.Fatal(err)
    }
}

Documentation

Index

Constants

View Source
const (
	Cities500                   models.GeoNameFile     = "cities500.zip"
	Cities1000                  models.GeoNameFile     = "cities1000.zip"
	Cities5000                  models.GeoNameFile     = "cities5000.zip"
	Cities15000                 models.GeoNameFile     = "cities15000.zip"
	AllCountries                models.GeoNameFile     = "allCountries.zip"
	NoCountry                   models.GeoNameFile     = "no-country.zip"
	AlternateNames              models.AltNameFile     = "alternateNamesV2.zip"
	LangCodes                   models.DumpFile        = "iso-languagecodes.txt"
	TimeZones                   models.DumpFile        = "timeZones.txt"
	Countries                   models.DumpFile        = "countryInfo.txt"
	FeatureCodeBg               models.FeatureCodeFile = "featureCodes_bg.txt"
	FeatureCodeEn               models.FeatureCodeFile = "featureCodes_en.txt"
	FeatureCodeNb               models.FeatureCodeFile = "featureCodes_nb.txt"
	FeatureCodeNn               models.FeatureCodeFile = "featureCodes_nn.txt"
	FeatureCodeNo               models.FeatureCodeFile = "featureCodes_no.txt"
	FeatureCodeRu               models.FeatureCodeFile = "featureCodes_ru.txt"
	FeatureCodeSv               models.FeatureCodeFile = "featureCodes_sv.txt"
	Hierarchy                   models.DumpFile        = "hierarchy.zip"
	Shapes                      models.DumpFile        = "shapes_all_low.zip"
	UserTags                    models.DumpFile        = "userTags.zip"
	AdminDivisions              models.DumpFile        = "admin1CodesASCII.txt"
	AdminSubDivisions           models.DumpFile        = "admin2Codes.txt"
	AdminCode5                  models.DumpFile        = "adminCode5.zip"
	AlternateNamesDeletes       models.DumpFile        = "alternateNamesDeletes-%s.txt"
	AlternateNamesModifications models.DumpFile        = "alternateNamesModifications-%s.txt"
	Deletes                     models.DumpFile        = "deletes-%s.txt"
	Modifications               models.DumpFile        = "modifications-%s.txt"
)

List of dump archives

View Source
const (
	SourceFs   = "fs"
	SourceHttp = "http"
)
View Source
const DownloadGeonamesOrgUrl = "https://download.geonames.org/export/dump/"

Variables

This section is empty.

Functions

This section is empty.

Types

type FetchSource

type FetchSource string

type Fetcher

type Fetcher struct {
	// contains filtered or unexported fields
}

func NewFetcher

func NewFetcher(cfg FetcherConfig) Fetcher

func (Fetcher) DumpToFile

func (p Fetcher) DumpToFile(file models.DumpFile) error

func (Fetcher) FetchFile

func (p Fetcher) FetchFile(source FetchSource, file models.DumpFile) (io.ReadCloser, error)

type FetcherConfig

type FetcherConfig struct {
	RemoteUrl string
	LocalPath string
}

type Parser

type Parser struct {
	FetchSource FetchSource
	Fetcher     Fetcher
}

func (Parser) GetAdminCodes5

func (p Parser) GetAdminCodes5(handler func(*models.AdminCode5) error) error

func (Parser) GetAdminDivisions

func (p Parser) GetAdminDivisions(handler func(*models.AdminDivision) error) error

func (Parser) GetAdminSubdivisions

func (p Parser) GetAdminSubdivisions(handler func(*models.AdminSubdivision) error) error

func (Parser) GetAlternateNameDeletes

func (p Parser) GetAlternateNameDeletes(handler func(*models.AlternateNameDelete) error) error

func (Parser) GetAlternateNameModifications

func (p Parser) GetAlternateNameModifications(handler func(*models.AlternateNameModification) error) error

func (Parser) GetAlternateNames

func (p Parser) GetAlternateNames(archive models.AltNameFile, handler func(*models.AlternateName) error) error

func (Parser) GetCountries

func (p Parser) GetCountries(handler func(*models.Country) error) error

func (Parser) GetDeletes

func (p Parser) GetDeletes(handler func(*models.GeonameDelete) error) error

func (Parser) GetFeatureCodes

func (p Parser) GetFeatureCodes(file models.FeatureCodeFile, handler func(*models.FeatureCode) error) error

func (Parser) GetGeonames

func (p Parser) GetGeonames(archive models.GeoNameFile, handler func(*models.Geoname) error) error

func (Parser) GetHierarchy

func (p Parser) GetHierarchy(handler func(*models.Hierarchy) error) error

func (Parser) GetLanguages

func (p Parser) GetLanguages(handler func(*models.Language) error) error

func (Parser) GetModifications

func (p Parser) GetModifications(handler func(*models.Geoname) error) error

func (Parser) GetShapes

func (p Parser) GetShapes(handler func(*models.Shape) error) error

func (Parser) GetTimeZones

func (p Parser) GetTimeZones(handler func(*models.TimeZone) error) error

func (Parser) GetUserTags

func (p Parser) GetUserTags(handler func(*models.UserTag) error) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL