สะพานลอย วิศวกรรมย้อนกลับ (โหมดดาวเทียม 3 มิติ) จาก Apple Maps งานที่คล้ายกันนี้เสร็จสิ้นแล้วสำหรับ Google Earth ที่นี่
โดยคร่าวๆ มีการระบุส่วนต่างๆ เหล่านี้:
เราสามารถตรวจสอบความถูกต้องของ URL และดึงโมเดล 3 มิติที่มีพื้นผิวจากพิกัดที่กำหนด (ละติจูด ลองจิจูด)
ข้อมูลจะถูกจัดเก็บไว้ในแผ่นแผนที่ รูปแบบไทล์ทั้งห้านี้ใช้สำหรับสะพานลอย:
พิมพ์ | วัตถุประสงค์ | โครงสร้าง URL |
---|---|---|
ซี3เอ็ม | พื้นผิว, ตาข่าย, การเปลี่ยนแปลง (, แอนิเมชั่น) | ?(?|&)style=15&v=⓿®ion=❶&x=❷&y=❸&z=❹&h=❺ |
C3MM 1 | ข้อมูลเมตา | ?(?|&)style=14&v=⓿&part=❻®ion=❶ |
C3MM2 | ข้อมูลเมตา | ?(?|&)style=52&v=⓿®ion=❶&x=❷&y=❸&z=❹&h=❺ |
ดีทีเอ็ม 1 | ภูมิประเทศ/พื้นผิว/ระดับความสูง | ?(?|&)style=16&v=⓿®ion=❶&x=❷&y=❸&z=❹ |
ดีทีเอ็ม 2 | ภูมิประเทศ/พื้นผิว/ระดับความสูง | ?(?|&)style=17&v=⓿&size=❼&scale=❽&x=❷&y=❸&z=❹ |
ResourceManifest
└─ AltitudeManifest
├─ C3MM
│ └─ C3M
└─ DTM?
มุ่งเน้นไปที่ C3M(M) ในตอนนี้ DTM คือรูปภาพที่มีส่วนท้ายและอาจใช้สำหรับตารางที่แสดงเมื่อ Maps กำลังโหลด
พื้นที่เก็บข้อมูลนี้มีโครงสร้างดังนี้:
ไดเรกทอรี | คำอธิบาย |
---|---|
คำสั่ง | โปรแกรมบรรทัดคำสั่ง |
แพคเกจ | โค้ดจริงส่วนใหญ่ |
โปรโต | ไฟล์โปรโตบัฟ |
สคริปต์ | สคริปต์เพิ่มเติม |
ผู้ขาย | การพึ่งพา |
ติดตั้ง Go 1.15.x และรัน:
go get -d github.com/retroplasma/flyover-reverse-engineering/...
cd " $( go env GOPATH ) /src/github.com/retroplasma/flyover-reverse-engineering "
จากนั้นแก้ไข config.json:
./scripts/get_config.sh > config.json
./scripts/get_config_macos.sh > config.json
resourceManifestURL
: จาก GEOConfigStore.db/com.apple.GEO.plist หรือไบนารี GeoServicestokenP1
: จากไบนารี GeoServices (ฟังก์ชัน: GEOURLAuthenticationGenerateURL
) ต่อไปนี้คือโปรแกรมบรรทัดคำสั่งบางโปรแกรมที่ใช้โค้ดจาก pkg:
การใช้งาน:
go run cmd/export-obj/main.go [lat] [lon] [zoom] [tryXY] [tryH]
Parameter Description Example
--------------------------------------
lat Latitude 34.007603
lon Longitude -118.499741
zoom Zoom (~ 13-20) 20
tryXY Area scan 3
tryH Altitude scan 40
สิ่งนี้จะส่งออกท่าเรือซานตาโมนิกาไปที่ ./downloaded_files/obj/...
:
go run cmd/export-obj/main.go 34.007603 -118.499741 20 3 40
ทางเลือก: OBJ ระดับกลางโดยใช้สคริปต์ node.js:
node scripts/center_scale_obj.js
ใน Blender (บทช่วยสอนที่เข้ากันได้ที่นี่):
สิ่งนี้จะตรวจสอบความถูกต้องของ URL โดยใช้พารามิเตอร์จาก config.json
:
go run cmd/auth/main.go [url]
วิธีนี้จะแยกวิเคราะห์ไฟล์ C3M v3 ขยายขนาด mesh อ่านพื้นผิว JPEG และสร้างโครงสร้างที่มีโมเดล 3 มิติที่มีพื้นผิว:
go run cmd/parse-c3m/main.go [file]
วิธีนี้จะแยกวิเคราะห์ไฟล์ C3MM v1 ไฟล์ C3MM ในพื้นที่ขยายออคทรีซึ่งมีการจัดทำดัชนีรากในไฟล์แรก
go run cmd/parse-c3mm/main.go [file] [[file_number]]
~/Library/Containers/com.apple.geod/Data/Library/Caches/com.apple.geod/GEOConfigStore.db
~/Library/Preferences/com.apple.GEO.plist
~/Library/Caches/GeoServices/Resources/altitude-*.xml
altitude-*.xml
url ในรายการทรัพยากร~/Library/Containers/com.apple.geod/Data/Library/Caches/com.apple.geod/MapTiles/MapTiles.sqlitedb
/System/Library/PrivateFrameworks/GeoServices.framework/GeoServices
/System/Library/PrivateFrameworks/VectorKit.framework/VectorKit
/System/Library/PrivateFrameworks/GeoServices.framework/XPCServices/com.apple.geod.xpc
GeoServices
/Applications/Maps.app/Contents/MacOS/Maps
VectorKit
ซอฟต์แวร์นี้มีให้ "ตามที่เป็น" โดยไม่มีการรับประกันใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันความสามารถในการค้าขาย ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ และการไม่ละเมิด ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดต่อการเรียกร้องค่าเสียหายหรือความรับผิดอื่นใดไม่ว่าในการกระทำของสัญญาการละเมิดหรืออย่างอื่นที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือข้อตกลงอื่น ๆ ใน ซอฟต์แวร์.