Golang parsing library for the geonames.org database dump.
- Parse data directly without downloading and unzipping
- Read line by line with low memory consumption
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 |
$ go get github.com/mkrou/geonames
package main
import (
"fmt"
"github.com/mkrou/geonames"
"github.com/mkrou/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)
}
}
package main
import (
"fmt"
"github.com/mkrou/geonames"
"github.com/mkrou/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)
}
}
package main
import (
"fmt"
"github.com/mkrou/geonames"
"github.com/mkrou/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)
}
}