ส่งของไม่สำเร็จ ลูกค้าทิ้งตะกร้า ทีมข้อมูลนั่งไล่ชื่อเขตเดียวกันที่สะกดสี่แบบ เปลี่ยนมาใช้ข้อมูลภูมิศาสตร์ไทยชุดเดียว สะอาด ครบทุกภาษา
ที่อยู่ที่ระบบหาไม่เจอ ไม่ได้พังแบบเงียบ ๆ มันกลายเป็นสายที่ต้องโทรหาลูกค้า รอบส่งที่สอง คนขับที่จอดรอผิดซอย หรือออร์เดอร์ที่ไม่เคยเกิดขึ้นเลย
บริษัทส่วนใหญ่แบกต้นทุนก้อนนี้อยู่ โดยไม่เคยตั้งชื่อให้มัน
ค่าตั้งต้นเป็นเพียงตัวอย่าง ไม่ใช่ benchmark และยังไม่นับลูกค้าที่ไม่กลับมาอีกเลย ซึ่งมักเป็นตัวเลขที่ใหญ่กว่า
ดึงข้อมูลกรุงเทพฯ จากสามแหล่ง แล้วคุณจะได้สามเมือง: Bangkok, Krung Thep, Krung Thep Maha Nakhon, บางครั้งก็เป็น Bangkok Metropolis — โดยชื่อภาษาไทยอยู่คนละฟิลด์ และภาษาจีนหายไปเลย
ทุก join ที่เขียนบนสตริงพวกนี้คือบั๊กที่รอวัน release อยู่ ที่นี่ ทุก alias ชี้ไปที่ id ถาวรตัวเดียว
ทุกปุ่มด้านบนคือเรคอร์ดเดียวกัน ไม่มีการเดาสักนิด — ทั้งหมดเป็น alias ที่เก็บไว้จริง
ภาษาไทยไม่มีการถอดเป็นอักษรโรมันแบบเดียวที่ถูกต้อง Jatujak, Chatuchak และ Chatujak คือตลาดเดียวกัน Thonglor และ Thong Lo คือถนนเส้นเดียวกัน พอค้นแล้วไม่เจอ ลูกค้าจะพิมพ์ใหม่อีกครั้งเดียว — แล้วก็ไป
เราจับคู่จากเสียงของชื่อ วิธีสะกดที่ไม่เคยมีใครเขียนไว้ก็ยังไปตกที่สถานที่ที่ถูกต้อง
ไม่ได้เปิดตาราง alias เลย — “Jatujak” ไม่ได้ถูกเก็บไว้ที่ไหนทั้งนั้น แต่ระบบจับคู่ได้จากเสียง
index ตัวเดียวกันนี้ขับเคลื่อน dropdown ที่ลูกค้าคุณเห็นจริง ๆ
ผู้ซื้อและนักท่องเที่ยวที่พูดภาษาจีนคิดเป็นสัดส่วนรายได้ที่มีนัยสำคัญของอสังหาฯ ค้าปลีก และท่องเที่ยวไทย — แต่มักถูกเสิร์ฟด้วยชุดข้อมูลที่สองซึ่งแย่กว่า หรือด้วย machine translation ที่เปลี่ยนชื่อเขตใหม่ทุกครั้งที่รัน
ทั้งสามภาษาอยู่บนตัวสถานที่เอง ตั้งค่าภาษาครั้งเดียว แล้วชื่อ ที่อยู่ ขั้นตอนเส้นทาง และป้ายชื่อพื้นที่จะตามไปทั้งหมด
เรคอร์ดเดียว id เดียว สามภาษา — เก็บไว้จริง ไม่ได้แปลตอน request
ป้ายชื่อบนแผนที่เปลี่ยนตามด้วย
ลูกค้าแชร์ตำแหน่งมา คนขับต้องการชื่อถนน แขวง รหัสไปรษณีย์ — เป็นภาษาไทย ในรูปแบบจ่าหน้าซอง ไม่ใช่การถอดเสียงจากภาษาอังกฤษที่เดาเอา ช่องว่างตรงนี้คือที่มาของการส่งซ้ำ
คลิกบนแผนที่เพื่อย้ายหมุด บรรทัดภาษาไทยคือรูปแบบจ่าหน้าซองจริง ไม่ใช่การถอดเสียงจากบรรทัดภาษาอังกฤษ
ระยะทาง เวลา และขั้นตอน คำนวณบน geometry ที่จำแนกคลาสถนนแบบไทย — ETA ที่คุณโชว์ลูกค้า กับ SLA ที่คุณเซ็นกับคู่ค้า จึงมาจากตัวเลขชุดเดียวกัน
รัศมีบนแผนที่คือการเดาที่แต่งตัวมาเป็นข้อมูล — ห้ากิโลเมตรข้างทางด่วน กับห้ากิโลเมตรในซอย ไม่ใช่เรื่องเดียวกัน นี่คือ contour เวลาขับจริงจาก Valhalla ซึ่งเป็น routing engine ของเราเอง: 8, 15, 23 และ 30 นาที คำนวณบนโครงข่ายถนนชุดเดียวกับที่เพิ่งพาคุณไปในส่วนเส้นทางด้านบน
พื้นที่และจำนวนสถานที่ในแต่ละแถบ อ่านตรงจาก geometry ที่ Valhalla คืนมา — เป็นการคำนวณแบบ geodesic บนรูปหลายเหลี่ยมจริง ไม่ใช่การนับช่องจากกริดที่ทำขึ้นเอง เลื่อน slider แล้วทุกตัวเลขจะอัปเดตจาก contour เส้นเดียวกับที่วาดอยู่
ทีละหนึ่ง contour เวลาขับจริงจาก Valhalla ที่ความละเอียดของ engine เอง แต่ละช่วงเวลาเป็นไฟล์ของตัวเอง ดึงมาเมื่อ slider เลื่อนไปถึง แล้วเก็บไว้ในหน่วยความจำหลังจากนั้น
ไม่มีใครเผยแพร่ปริมาณจราจรที่วัดจริงของประเทศไทย และคลังข้อมูลนี้เผยแพร่น้อยกว่านั้นอีก: เลเยอร์ถนนไม่มีจำนวนเลน ไม่มีความเร็วจำกัด สิ่งที่มันมีคือ การจำแนกคลาส — motorway, trunk, primary, secondary, tertiary, minor, service — กับ flag oneway ตรงที่มีคนแท็กไว้
รถบนแผนที่จึงคำนวณจากคลาสนั้นอย่างเดียว motorway มีรถมากกว่าและวิ่งเร็วกว่าซอย เพราะคลาสของมันบอกอย่างนั้น ไม่ใช่เพราะมีใครนับรถจริง ทิศทางเดินตาม tile ตรงที่ oneway ถูกตั้งไว้ และแยกสองทางตรงที่ไม่ได้ตั้ง
มันอ่านเป็นภาพรวมโครงข่ายได้ดี — เส้นทางไหนแบกเมืองไว้ ฟลีตควรกระจุกตรงไหน แต่มันอ่านเป็นข้อมูลสำหรับ route ไม่ได้ และเราจะไม่ขายมันแบบนั้น
| คลาส | ต่อ กม. | กม./ชม. | บนจอ |
|---|---|---|---|
| motorway | 26 | 88 | — |
| trunk | 21 | 72 | — |
| primary | 17 | 48 | — |
| secondary | 12 | 37 | — |
| tertiary | 8 | 30 | — |
| minor | 5 | 22 | — |
| service | 2 | 12 | — |
คำนวณจากการจำแนกคลาสถนนอย่างเดียว tile ไม่มีจำนวนเลน ไม่มีความเร็วจำกัด และไม่มีจำนวนรถ ตัวเลขด้านบนจึงเป็นสิ่งที่คลาสบอกเป็นนัย ไม่ใช่สิ่งที่แยกนั้นทำจริง
ต่างจากส่วนด้านบน ตรงนี้ไม่มีอะไรที่จำลองขึ้นมา footprint ของอาคารในคลังข้อมูลมีฟิลด์ render_heightและหลายรายการยังมี render_min_height — ระดับพื้นที่ปริมาตรเริ่มต้น แผงนี้นับทั้งสองค่าแบบสด ๆ จาก tile ที่โหลดอยู่ใต้กล้อง
ฟิลด์ที่สองนั่นแหละคือเหตุผลที่ควรเอียงกล้องดู คิง เพาเวอร์ มหานคร กลางเฟรม มาถึงในรูปปริมาตรราวสามสิบก้อนซ้อนกัน ไล่จาก 270 ม. ถึง 315 ม. ซึ่งเป็นที่มาของเงาขั้นบันไดแบบพิกเซลของมัน — กล่องเดียวที่ดันขึ้นความสูงเดียวจะทำรูปทรงนั้นหายไป หมุดอ่าน footprint ที่สูงที่สุดในเฟรมจากเรคอร์ดโดยตรง ไม่มีตัวเลขไหนในส่วนนี้ที่พิมพ์ใส่ด้วยมือ
สองแอตทริบิวต์บนเลเยอร์อาคาร ดันขึ้นตามค่าที่มีจริง จำนวนปริมาตรซ้อนชั้นคือเหตุผลที่การเอียงกล้องคุ้มค่า: ตึกที่มีการถอยระดับมาถึงในรูปแท่งแยกกันหลายก้อน แต่ละก้อนมีระดับพื้นของตัวเอง และมีเพียงการดันขึ้นจากฐานจริงเท่านั้นที่แสดงสิ่งนั้นได้
ทุกอย่างเหนือเส้นนี้คือข้อมูลที่เราถือไว้ ส่วนนี้ไม่ใช่: มันคือฉาก three.js ที่ส่งให้แผนที่ผ่าน custom WebGL layer พร้อม model matrix ที่สร้างจาก lng/lat จุดเดียว แล้ววาดลงในเฟรมเดียวกับอาคาร
มันคือมาร์ก MapScale สูง 205 ม. เหนือสวนลุมพินี บนเสาที่แตะพื้นหญ้าที่พิกัด 13.7312, 100.5425. จงใจไม่ทำให้เหมือนอาคาร — เพชรลอยในวงแหวนสองวงชัดเจนว่าเป็นของเรา จึงไม่มีคำถามว่ารูปทรงไหนมาจากคลังข้อมูล และรูปทรงไหนเราวางเอง
ลากมันดู หรือกด ⌘ ค้างแล้วเลื่อนเพื่อซูม มันยังอยู่บนหญ้าผืนเดิมทั้งสองกรณี เพราะจุดยึดเป็นพิกัด mercator ไม่ใช่ตำแหน่งบนจอ — นั่นคือความต่างระหว่างวัตถุ 3D บนแผนที่ กับรูปภาพที่แปะไว้บนหน้าเว็บ มันเขียนลง depth buffer เดียวกับการดันขึ้นของอาคาร ตึกที่ยืนขวางระหว่างคุณกับมันจึงบังมันได้ ไม่ใช่กลับกัน
ตัวคูณสเกลนั้นคือเหตุผลที่ใช้ค่าคงที่ไม่ได้: หน่วย mercator เป็นเศษส่วนของโลกที่ฉายแล้ว หนึ่งเมตรจึงมีค่าต่างกันในทุกละติจูด คำนวณที่ 13.7312 N วัตถุนี้สูง 205 ม. ที่นี่ — และจะสูง 205 ม. เท่ากันที่เชียงใหม่ จากโค้ดชุดเดิมเพียงเปลี่ยนพิกัด
รถที่ ping ล่าสุด แปลนพื้นบนที่ดินของมัน เครนบนไซต์งาน ปริมาตรสัญญาณเหนือเสาส่ง — เรียกแบบเดียวกัน แค่สามเหลี่ยมมากขึ้น ส่ง geometry กับพิกัดมา ส่วนกล้อง การบัง และการฉายภาพ มีอยู่แล้วที่นี่
“ขอดูทุกอย่างในจังหวัดนี้” คือคำถามที่ทีมบริหารถามแผนที่บ่อยที่สุด และแพงที่สุดถ้าต้องสร้างเอง ภูมิศาสตร์ไทยซ้อนกันเป็นชั้น — 77 จังหวัด 928 อำเภอใต้จังหวัด และตำบลใต้อำเภออีกที — และเกือบทุกคำถามบนต้นไม้นี้ไปตกตรงจุดที่ชุดข้อมูลซึ่งใช้ชื่อเป็นคีย์จะพังทันทีที่การถอดเสียงเปลี่ยน
ลองไล่คลิกลงไปดู แต่ละระดับเชื่อมกับระดับบนด้วย รหัสเขตปกครองไม่เคยเชื่อมด้วยชื่อ — เขตที่ทุกคนสะกดว่า Watthana ในข้อมูลต้นทางคือ Vadhana และการ join ด้วยสตริงนั้นจะทำให้เขตนี้หายไป โดยไม่มี error สักบรรทัด
นี่คือขอบเขตทางการ ส่วนรูปทรงที่คุณวาดเอง — โซนจัดส่ง เขตการขาย — เป็นคนละ query บนสถานที่ชุดเดียวกัน ส่ง polygon มา แล้วเราจะ scope ให้ ดีกว่าปั้นตัวอย่างปลอมไว้ตรงนี้
ขอบเขต: RTSD / UNOCHA COD-AB เผยแพร่บน HDX (CC BY-IGO) นำมาเป็นไฟล์สแตติกและลดรายละเอียดเพื่อการแสดงผล — ไม่ได้อยู่ใน tile ของเราเอง แต่ละระดับเชื่อมกันด้วย PCODE — การถอดอักษรโรมันทางการของ วัฒนา คือ “Vadhana” การ join ด้วยชื่อภาษาอังกฤษจึงทำให้เขตหนึ่งหายไป โดยดูเหมือนว่าทำงานได้ปกติ
ผู้ให้บริการระดับโลกทำได้ดีเยี่ยมเกือบทุกที่ ประเทศไทยเป็นหนึ่งในที่ที่คำว่า “เกือบ” มีราคาแพง — และเป็นที่ที่ผู้ให้บริการในประเทศรับผิดชอบได้ในไทม์โซนเดียวกัน
| ผู้ให้บริการระดับโลกทั่วไป | MapScale | |
|---|---|---|
| ชื่อสถานที่ภาษาไทย | ต่างกันไปตามชุดข้อมูลและตามฟิลด์ | ชื่อไทยทางการบนทุกเรคอร์ด |
| การสะกดอักษรโรมันหลายแบบ | จับคู่แบบตรงตัว พลาดถ้าสะกดต่าง | จับคู่จากเสียง ไม่ขึ้นกับการสะกด |
| ชื่อภาษาจีน | มีน้อย หรือแปลด้วยเครื่อง | เก็บไว้จริง ตรวจแล้ว และนิ่ง |
| geometry เขตปกครอง | ระดับจังหวัด และมักหยาบ | จังหวัด อำเภอ และตำบล |
| การเรียกเก็บเงิน | คิดตาม map load และ session คาดการณ์ยาก | คิดต่อ call อัตราเดียว |
| การซัพพอร์ต | คิวตั๋ว ภาษาอังกฤษ คนละไทม์โซน | ไทยและอังกฤษ เวลาทำการกรุงเทพฯ |
| ที่ตั้งข้อมูล | แล้วแต่ผู้ให้บริการ | ap-southeast-1 ระบุในสัญญา |
| แก้ชื่อที่ผิด | แก้แบบ community รอเป็นสัปดาห์กว่าจะกระจาย | คุณแจ้ง เราแก้ที่เรคอร์ด |
อธิบายพฤติกรรมที่พบทั่วไปของผู้ให้บริการระดับโลก ไม่ได้เจาะจงเจ้าใดเจ้าหนึ่ง บอกเรามาว่าจะเทียบกับเจ้าไหน แล้วเราจะ benchmark ด้วยข้อมูลของคุณเอง
อัตราเดียวต่อ call ครบทุก endpoint ไม่มีการคิดตาม map load ไม่มีการนับ session ไม่มีใบแจ้งหนี้ที่พุ่งสามเท่าในเดือนที่แคมเปญได้ผล
ราคาที่แสดงเป็นเพียงตัวอย่าง รอประกาศ rate card อย่างเป็นทางการ
ส่งไฟล์ตัวอย่างมา เราจะตอบกลับด้วยสัดส่วนที่แปลงได้สะอาด รูปแบบความผิดพลาดในข้อมูลของคุณ และต้นทุนที่มันน่าจะกินไป — ก่อนที่ใครจะเซ็นอะไรทั้งนั้น