มีฐานข้อมูลฟรีหรือราคาสมเหตุสมผลสำหรับสหรัฐอเมริกาซึ่งสามารถค้นหาและส่งคืนข้อมูลละติจูดและลองจิจูดได้หรือไม่?
มีฐานข้อมูลฟรีหรือราคาสมเหตุสมผลสำหรับสหรัฐอเมริกาซึ่งสามารถค้นหาและส่งคืนข้อมูลละติจูดและลองจิจูดได้หรือไม่?
คำตอบ:
สำหรับระเบียนจำนวนมากนั้นอย่าพิจารณาเว็บเซอร์วิส พวกเขาจะเค้นหรือตัดคุณออกก่อนที่คุณจะสามารถทำงานให้เสร็จได้
ดังนั้นตัวเลือกของคุณจะกลายเป็นเรียกใช้ภายในเครื่องและเพื่อให้คุณมีตัวเลือกเชิงพาณิชย์หรือฟรีมากมาย
ตัวเลือกฟรีจะใช้ชุดข้อมูลการสำรวจสำมะโนประชากร TIGER ซึ่งคุณจะต้องโหลดลงในฐานข้อมูลเชิงพื้นที่ คุณสามารถค้นหาไลบรารีที่geocode กับ TIGER สำหรับ PostGIS หรือแม้กระทั่ง SQLite Heck คุณสามารถใช้ArcGIS เพื่อเข้ารหัสภูมิศาสตร์กับ TIGER ได้ แน่นอนว่า ArcGIS นั้นไม่ฟรีซึ่งทำให้ฉันมีทางเลือกทางการค้าต่อไป หากคุณมีสิทธิ์ใช้งาน ArcGIS คุณมี StreetMap DVD พร้อมชุดข้อมูล TeleAtlas ( ฉันหมายถึง Tom Tom ) หรือชุดข้อมูล Navteq ขึ้นอยู่กับว่าคุณได้รับStreetMap Premium ที่แถมมา ชุดข้อมูลใด ๆ เหล่านั้นอาจจะให้ผลลัพธ์ที่สอดคล้องกันมากกว่า TIGER
ทำตัวเองให้เป็นที่โปรดปรานและทำสำเนาหลาย ๆ ฐานข้อมูลถนนเมื่อข้อมูลของคุณถูกโหลดและรันกระบวนการ geocoding บนเครื่องหลายเครื่องด้วยชุดย่อยของข้อมูลอินพุต อย่าพยายามเรียกใช้บนเครื่องเพียงเครื่องเดียวหรือคุณจะต้องรอเป็นเวลาหลายวันเพื่อให้เสร็จไม่ต้องพูดถึงว่ากระบวนการใด ๆ ก็ตามที่คุณเรียกใช้อาจจะทำให้หน่วยความจำรั่วและล้มเหลวหลายครั้งก่อนที่มันจะเสร็จสิ้น ซึ่งหมายความว่าคุณต้องการมีจุดตรวจที่แตกต่างกันสำหรับกระบวนการของคุณ
ฉันทำงานที่ SmartyStreets (บริษัท ตรวจสอบที่อยู่) บริการของเราฟรีสำหรับทุกคน (จนถึงระดับพื้นฐาน) ผู้เริ่มต้นสามารถขอใช้บริการของเราได้ฟรีในปีแรก ดังนั้นหากคุณเหมาะสมกับการจัดประเภทนั้นจะไม่มีค่าใช้จ่ายสำหรับบริการไม่ จำกัด ของเราเป็นเวลาหนึ่งปี ..
Ragi แนะนำให้ใช้บริการเว็บอย่างไรก็ตาม API ของเราสามารถทำความสะอาดสร้างมาตรฐานและระบุตำแหน่งทางภูมิศาสตร์ 20 ล้านที่อยู่สำหรับคุณในเวลาประมาณ 5 ชั่วโมง (ประมาณ 1,000 ต่อวินาที) บางช่วงเวลานั้นจะขึ้นอยู่กับความเร็วของเครื่อง (จำนวนคอร์ที่คุณมี) และการเชื่อมต่อเครือข่ายของคุณ (อย่าลองผ่าน 3G แต่การเชื่อมต่อบรอดแบนด์มาตรฐานจะทำได้ดี)
แค่อยากจะชี้ให้เห็นว่าเป็นไปได้อย่างแน่นอนกับ webservice
อัปเดต: ตั้งแต่ 1Aug2017 ฉันได้ทดสอบบริการเว็บของเราจากระยะไกลแล้วและได้รับการค้นหา 70,000 ครั้งต่อวินาทีโดยใช้ MacBook Pro รุ่นเดียวของปี 2015 บนเครือข่ายไร้สาย ใช่มันค่อนข้างเร็ว นั่นหมายความว่ารายการเล็ก ๆ เช่นที่อยู่ 20 ล้านรายการจะใช้เวลาประมาณ 5 นาที
ฉันใช้คำแนะนำนี้อธิบายวิธีการสร้าง geocoder postgis โดยใช้ข้อมูล TigerLine 2010 ฉันกำลังใช้งานอยู่ตอนนี้ - มันไม่เร็วอย่างที่จะใช้เวลา 3 สัปดาห์ในการเข้ารหัส 2 ล้านที่อยู่
อย่างไรก็ตามไม่มีค่าใช้จ่ายใด ๆ และใช้ทักษะการเขียนโค้ดและ postgres น้อยกว่า 2 วันในการติดตั้งและโหลดด้วยข้อมูลของรัฐ (ใหญ่) เพื่อเริ่มการเข้ารหัสทางภูมิศาสตร์ ฉันยังไม่ได้ทำการปรับแต่ง postgres สำหรับระบบและมันกำลังรันบน NFS mounts ดังนั้นฉันสงสัยว่ามีหนึ่งหรือสองลำดับความสำคัญที่เพิ่มขึ้นของประสิทธิภาพที่ได้รับหากฉันต้องการ
แทนที่จะใช้บริการเว็บฉันโหลดที่อยู่ทั้งหมดของฉันลงในฐานข้อมูล postgres จากนั้นฉันใช้สคริปต์ Perl ที่รวดเร็วและสกปรกเพื่อเข้ารหัสตำแหน่งเหล่านี้ทีละรายการ:
perl -e for ($i=1; $i<[max_key_value]; $i+=1)
{printf "UPDATE source_addresses
SET (rating, new_address, lon, lat)
= (g.rating, pprint_addy(g.addy),
ST_X(g.geomout), ST_Y(g.geomout) )
FROM (SELECT DISTINCT ON (address_id) address_id, (g1.geo).*
FROM (SELECT address_id, (geocode(address)) As geo
FROM source_addresses As ag
WHERE ag.rating IS NULL and address_id = $i
) As g1
ORDER BY address_id, rating LIMIT 1
) As g WHERE g.address_id = source_addresses.address_id;\n"
} | psql -d geocoder
(ตัวแบ่งบรรทัดสำหรับการอ่านเท่านั้น)
เพื่อให้สร้าง "geocode ที่อยู่ด้วยค่า ID นี้และใช้คำสั่งการปรับปรุงที่ดีที่สุด" และไปป์ที่ psql เพื่อทำมัน จะพยายามระบุที่อยู่ทางภูมิศาสตร์โดยไม่มีการให้คะแนน - เช่นที่อยู่ที่ไม่ได้เข้ารหัสทางภูมิศาสตร์อยู่แล้ว ดังนั้นจึงเริ่มต้นใหม่และแต่ละคนทำอย่างอิสระ
ฉันเดาว่าคุณต้องการ Geocode แต่ไม่จ่ายอะไรเลยเหรอ? มีบริการมากมายที่คุณสามารถระบุรหัสทางภูมิศาสตร์ได้ถึง 20 ล้านรายการ แต่คุณจะต้องเสียค่าใช้จ่าย Esri, Pitney Bowes และข้อเสนออื่น ๆ บริการเหล่านี้ผ่านการสมัครสมาชิกหรือในราคาต่อหนึ่ง geocodes 20 ล้านนั้นไม่สำคัญ แต่ฉันคิดว่ามีกรณีธุรกิจสำหรับเรื่องนี้
ตำแหน่งของข้อมูลของคุณมีความสำคัญมากเนื่องจากคุณภาพของบริการบนเว็บมีการเปลี่ยนแปลง (ความแม่นยำขนาดและอื่น ๆ ) ฉันใส่รหัสภูมิศาสตร์ของฉันจาก google api, facebook api และ ex-simplegeo ด้วยฐานข้อมูลทางภูมิศาสตร์ของฉัน
http://blog.programmableweb.com/2012/06/21/7-free-geocoding-apis-google-bing-yahoo-and-mapquest/
โพสต์นี้อาจจะสายเกินไปที่จะช่วยผู้โพสต์ดั้งเดิม อย่างไรก็ตามสำหรับคนอื่นที่ต้องการดูข้อมูลจำนวนมากฟรีคุณสามารถตรวจสอบซอฟต์แวร์ของฉันที่ชื่อว่า "Easy Georeferencer" ซึ่งสร้างขึ้นอย่างอิสระใช้งานง่ายและทรงพลัง (ดูภาพหน้าจอที่ด้านล่างของโพสต์)
โปรแกรมนี้ใช้งานง่ายและตรงไปตรงมาและเรียกใช้โดยตรงจากไฟล์ exe ที่ไม่ต้องติดตั้ง คุณสามารถเลือกที่จะเข้ารหัสภูมิศาสตร์ระหว่างแหล่งข้อมูล GNS หรือ GeoNames และคุณสามารถทำสิ่งที่ไม่มี geocoder อื่น ๆ ที่สามารถทำได้จังหวัดรหัสภูมิศาสตร์ตามฐานข้อมูลหน่วยการบริหาร GADM รวมถึงขอบเขตประเทศประวัติศาสตร์ทางภูมิศาสตร์จากชุดข้อมูล CShapes ข้อแม้เดียวคือมันไม่ได้เข้ารหัสข้อมูลที่อยู่ทางภูมิศาสตร์ เอาท์พุททั้งหมดมาเป็นรูปร่างไฟล์พร้อมสำหรับการสร้างภาพ / การวิเคราะห์ทันทีใน GIS
เท่าที่เกี่ยวกับประสิทธิภาพและการจัดการข้อมูลขนาดใหญ่โปรแกรมได้รับการทดสอบเพื่อเข้ารหัส geocode 100,000 ระเบียนในเวลาเพียง 3 ชั่วโมง สำหรับชุดข้อมูลขนาดใหญ่การเพิ่มเวลาการประมวลผลที่คาดไว้ควรลดลงอย่างโค้งเนื่องจากช่วงเวลาการประมวลผลส่วนใหญ่ไปที่ระยะเริ่มต้นเท่านั้นเมื่อโหลดชุดข้อมูลอ้างอิงประเทศแล้ว แต่จะหยิบขึ้นมาหลังจากนั้น นอกจากนี้เราไม่ต้องกังวลเกี่ยวกับปัญหาคอขวดหรือปัญหาการเชื่อมต่ออินเทอร์เน็ตเมื่อใช้ geocoding ชุดข้อมูลขนาดใหญ่เพราะซอฟต์แวร์ชุดข้อมูลอ้างอิงและการประมวลผลทั้งหมดขึ้นอยู่กับคอมพิวเตอร์ในพื้นที่ อัตราการจับคู่สามารถรับได้มากถึง 80-90 เปอร์เซ็นต์เนื่องจากขึ้นอยู่กับการจับคู่บัญชีฟัซซี่เพื่อความแตกต่างของการสะกดคำ
รายละเอียดเพิ่มเติมรวมถึงเอกสารแนะนำและคู่มือสำหรับผู้เริ่มต้นจะรวมอยู่ในแพ็คเกจดาวน์โหลด ไม่จำเป็นต้องลังเลเลยที่จะลองใช้โปรแกรมนี้เป็นไฟล์ง่ายๆที่คุณสามารถวางและรันบนเดสก์ท็อปของคุณโดยไม่ต้องมีข้อผูกมัดหรือถ่วงคอมพิวเตอร์ของคุณ
สามารถดาวน์โหลดซอฟต์แวร์ได้จาก: http://geocodeanything.wordpress.com/
หวังว่าจะช่วย
ในขณะที่คุณกำลังระบุที่อยู่ทางภูมิศาสตร์ในสหรัฐอเมริกาฉันคิดว่าเครื่องมือStreet Address to Coordinatesจาก Data Science Toolkit ควรจะทำงานได้ดีสำหรับคุณ
This API takes either a single string representing a postal address, or a JSON-encoded array of addresses, and returns a JSON object with a key for every address. The value for each key is either null if no information was found for the address, or an object containing location information, including country, region, city and latitude/longitude coordinates.
คุณอาจต้องการดาวน์โหลดเครื่องเสมือนและเรียกใช้จากฮาร์ดแวร์ของคุณเอง ด้วยวิธีนี้คุณไม่ต้องกังวลกับข้อ จำกัด ของ API รวมถึงควบคุมด้วย โอ้และฉันบอกว่าฟรีหรือเปล่า ;-)
ฉันไม่เคยเห็นการอ้างอิงถึงระดับของความแม่นยำที่คุณต้องการ แต่ฉันสมมติว่าคุณต้องการหลังคาที่มีความยาวมากหรือใกล้เคียง คุณภาพของอินพุตที่อยู่สามารถเป็นปัจจัยได้เช่นกัน รายการที่อยู่ที่ได้รับการทำความสะอาดอย่างดีจะมีรหัสที่ดีกว่าและเร็วกว่ารายการที่อยู่ที่ไม่สมบูรณ์หรือไม่ดี อีกทั้งเป็นอัตราการเข้าชม 90% ที่ยอมรับได้หรือคุณต้องการที่อยู่ทั้งหมด 20 ล้านที่อยู่หรือไม่ ฉันไม่มีวิธีแก้ปัญหาฟรี แต่มีวิธีที่ไม่แพงอย่างที่ฉันรู้และใช้ ZP4 จาก Semaphore Corp, http://www.semaphorecorp.com/เสนอเครื่องฟอกที่อยู่ / geocoder และเพิ่มส่วนที่จะประมวลผลที่อยู่และส่งกลับที่อยู่ที่ทำความสะอาดธงซึ่งบ่งชี้ว่าที่อยู่ส่งมอบ USPS และ lat ยาวสำหรับ ZIP + 4 โดยทั่วไปความแม่นยำของ ZIP +4 นั้นใกล้เคียงกับความแม่นยำบนชั้นดาดฟ้าในพื้นที่ที่มีการสะสม (ด้านที่ถูกต้องของถนนและบนบล็อกที่ถูกต้อง) และไม่ปิดในพื้นที่ชนบท ค่าใช้จ่ายสำหรับใบอนุญาต 30 วันคือ $ 120 หลังจากนั้นเครื่องฟอกที่อยู่จะยังคงทำงาน แต่การตรวจสอบจุดส่งมอบ (DPV) และการส่งคืนตำแหน่งทางภูมิศาสตร์จะไม่ทำงาน ด้วยคอมพิวเตอร์ที่ค่อนข้างเร็วซึ่งถูกสร้างขึ้นภายในสองปีที่ผ่านมาและข้อมูล hte ทั้งหมดที่จัดเก็บและเข้าถึงได้ในท้องถิ่นจะมีการบันทึก 20 ล้านรายการในเวลาประมาณ 10 วัน ฉันใช้ที่อยู่ทางภูมิศาสตร์ในช่วง 15 ปีที่ผ่านมาและฉันได้ใช้ ZP4 มาเกือบตลอดเวลา ก่อนที่พวกเขาจะเสนอ lat-long หรือ DPV
ตอนนี้ฉันกำลังระบุที่อยู่ทางภูมิศาสตร์ 18 ล้านที่อยู่ดังนั้นฉันต้องการแชร์การตั้งค่าของฉัน
โดยทั่วไปฉันใช้เพลย์บุ๊ค ansible เพื่อตั้งค่าอินสแตนซ์ Amazon EC2 เป็นเซิร์ฟเวอร์ PostGIS Tiger Geocoder จากนั้นใช้สคริปต์เพื่อที่อยู่แบตช์รหัสทางภูมิศาสตร์ให้แมปกับบล็อกการสำรวจสำมะโนประชากร
ค่าใช้จ่ายของ Amazon EC2: ข้อกำหนดขั้นต่ำ 180G SSD ราคาประมาณ $ 18 / เดือน อินสแตนซ์ t2. large ของฉันมีค่าใช้จ่ายประมาณ $ 90 / เดือนโดยรวม
หากคุณมีกล่อง linux พร้อม SSD> 180G คุณสามารถใช้งานได้ฟรี
ประสิทธิภาพโดยเฉลี่ยของฉันอยู่ที่ประมาณ 170 ~ 300 ms / ที่อยู่คุณภาพดี 400 ~ 600 ms / ที่อยู่คุณภาพไม่ดี ตามคุณภาพไม่ดีฉันหมายถึงพวกเขาจำนวนมากมีเมืองที่ขาดหายไปหรือไม่ถูกต้องรหัสไปรษณีย์หรือแม้แต่ที่อยู่ผิด ที่อยู่ประเภทนี้ใช้เวลานานกว่าการเข้ารหัสทางภูมิศาสตร์ดังนั้นประสิทธิภาพของคุณขึ้นอยู่กับคุณภาพของอินพุต อินสแตนซ์ Amazon EC2 ที่ฉันใช้สามารถใส่รหัสทางภูมิศาสตร์ได้ประมาณ 4 ล้านที่อยู่ในรูปแบบที่ไม่ดีในหนึ่งเดือน
สำหรับรายละเอียดเพิ่มเติมดูโพสต์บล็อกของฉันเกี่ยวกับการตั้งค่าระบบและสคริปต์
AWS มีเซิร์ฟเวอร์ Geocoding จำนวนหนึ่งให้บริการในขณะนี้ รับเซิร์ฟเวอร์ของคุณเองและถ่ายโอนข้อมูลของคุณที่นั่น https://aws.amazon.com/marketplace/search/results/ref=dtl_navgno_search_box?page=1&searchTerms=geocode
หากเวิร์กโฟลว์ของคุณอยู่ใน Python geopy เป็นโซลูชันที่ยอดเยี่ยม คุณสามารถเขียนตรรกะการเข้ารหัสภูมิศาสตร์พื้นฐานของคุณอย่างเป็นนามธรรมแล้วเลือกจากหนึ่งในผู้ให้บริการจำนวนมาก (ArcGIS, Baidu, Bing, DataBC, GeocodeFarm, GoecoderDotUS, GeoNames, Google, IGN ฝรั่งเศส, LiveAddress, NaviData, Nominatim (OSM), OpenCage, OpenMapQuest Yahoo! BOSS Place Finder, What3Words, Yandex ... วุ้ย) คุณสามารถใช้ทั้งหมดและท้ายที่สุดเลือกจุดที่มีความมั่นใจสูงสุดในการแก้ไขผ่านการตรวจสอบความถูกต้องโดยบริการ Geocoding หลายรายการ บริการเหล่านี้จำนวนมากต้องการการลงทะเบียน (แต่ไม่ใช่ทั้งหมด) พวกมันอาจจะไม่เหมาะกับการใช้ใน USA แต่ข้อดีของการทำมันด้วยฟังก์ชั่น Python ที่เรียบร้อยก็คือคุณควรควบคุมมันได้
นี่เป็นตัวอย่างสั้น ๆ :
from geopy.geocoders import Nominatim
geolocator = Nominatim(country_bias='New Zealand', timeout=4)
geocoded = geolocator.geocode('Raglan, Waikato', exactly_one=True)
if geocoded is not None:
# success
lat = geocoded.latitude
lon = geocoded.longitude
https://geopy.readthedocs.org/en/1.10.0/
ส่วนที่ยากเพียงอย่างเดียวคือการรับรองว่าที่อยู่ของคุณจะไม่ได้รับการจัดรูปแบบไม่ดี มันอาจจะยังคงใช้เวลานานพอสมควรในการระบุตำแหน่งทางภูมิศาสตร์ถึง 20 ล้านจุดอย่างไรก็ตาม ... และการโหลดแบบนั้นอาจละเมิดข้อกำหนดในการให้บริการของใครบางคน หวังว่านี้จะช่วยให้ใครบางคน
หากคำขอของคุณรหัสพิกัดไม่เกินวันละ 2,500 คุณสามารถใช้งาน Google Geocoding API คุณควรคร่าว ๆ ถึง api มันสามารถกลับไปเป็นผลลัพธ์เป็น json หรือ xml
จำกัด การใช้งาน:
การใช้ Google Geocoding API นั้นขึ้นอยู่กับข้อ จำกัด การสืบค้น 2,500 ตำแหน่งทางภูมิศาสตร์ต่อวัน (ผู้ใช้ Google Maps API สำหรับธุรกิจสามารถทำงานได้สูงสุด 100,000 คำขอต่อวัน)
ตัวอย่าง:
http://maps.google.com/maps/geo?key=yourkeyhere&output=json&q=520+3rd+Street+San+Francisco+CA
ตัวอย่างผลลัพธ์:
{
"name": "520 3rd Street San Francisco CA",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "520 3rd St, San Francisco, Kaliforniya 94107, Amerika Birleşik Devletleri",
"AddressDetails": {
"Accuracy" : 8,
"Country" : {
"AdministrativeArea" : {
"AdministrativeAreaName" : "CA",
"SubAdministrativeArea" : {
"Locality" : {
"LocalityName" : "San Francisco",
"PostalCode" : {
"PostalCodeNumber" : "94107"
},
"Thoroughfare" : {
"ThoroughfareName" : "520 3rd St"
}
},
"SubAdministrativeAreaName" : "San Francisco"
}
},
"CountryName" : "USA",
"CountryNameCode" : "US"
}
},
"ExtendedData": {
"LatLonBox": {
"north": 37.7826364,
"south": 37.7799384,
"east": -122.3942267,
"west": -122.3969247
}
},
"Point": {
"coordinates": [ -122.3955757, 37.7812874, 0 ]
}
} ]
}
และคุณสามารถตรวจสอบลิงก์ตัวอย่างสำหรับการค้นหาพิกัดภูมิศาสตร์จาก google:
3. เริ่มต้นด้วย Google GeoCoding
ฉันหวังว่ามันจะช่วยคุณ