xml - 处理 3 中的纬度长坐标映射不正确,需要旋转
问题描述
我正在尝试制作一个非常基本的 Processing 3 草图,在其中绘制出我的手表在骑自行车时追踪的纬度和经度点。
我能够解析来自位置源的 XML 数据,并且我已经使用 XML 文件设置了一个数据文件夹。我似乎没有解析数据的问题。
但是,我正在尝试将纬度/经度 GPS 数据映射到屏幕尺寸,但我认为它不正确。
我让它以正确的比例显示经纬度。 虽然现在,它旋转不正确。
我附上了一张图片。左图是它的外观,右图是它的外观。看起来点/GPS 需要逆时针旋转 90 度。
也许这与我的地图()有关?
// convert and remap Lat and Long based on range
// -122.5367,37.6659,-122.3383,37.8174
float mainx = map(pointLat, 37.6659, 37.8174, 0, width);
float mainy = map(pointLong, -122.5367, -122.3383, 0, height);
无论如何,这是我的处理代码。感谢您提供任何帮助,因为我遇到了困难,我认为这是修复的最后一点。
谢谢!亚伦
// Example XML
//<Workout workoutActivityType="HKWorkoutActivityTypeCycling" duration="44.19382538398107" durationUnit="min" totalDistance="7.644061515836529" totalDistanceUnit="mi" totalEnergyBurned="300.3060000000002" totalEnergyBurnedUnit="kcal" sourceName="Aaron’s Apple Watch" sourceVersion="4.3" creationDate="2018-05-01 08:35:07 -0700" startDate="2018-05-01 07:50:51 -0700" endDate="2018-05-01 08:35:03 -0700">
//<MetadataEntry key="HKTimeZone" value="America/Los_Angeles"/>
//<MetadataEntry key="HKWeatherTemperature" value="49 degF"/>
//<MetadataEntry key="HKWeatherHumidity" value="82 %"/>
//<WorkoutRoute sourceName="Watch" sourceVersion="11.3" creationDate="2018-05-01 08:58:53 -0700" startDate="2018-05-01 07:51:11 -0700" endDate="2018-05-01 08:34:52 -0700">
// <MetadataEntry key="HKMetadataKeySyncVersion" value="2"/>
// <MetadataEntry key="HKMetadataKeySyncIdentifier" value="F2BEA6D4-4E7E-4867-AAF4-05586B2F753D"/>
// <Location date="2018-05-01 07:51:11 -0700" latitude="37.7514" longitude="-122.493" altitude="74.0396" horizontalAccuracy="2.43753" verticalAccuracy="1.71176" course="28.125" speed="1.56585"/>
gpsPoint[] gpsPoints;
PImage backgroundMap;
float mapScreenWidth,mapScreenHeight; // Dimension of map in pixels.
XML xml;
void setup() {
size(400, 386); // 7x7
//background(255);
backgroundMap = loadImage("img/7x7.png");
mapScreenWidth = width;
mapScreenHeight = height;
image(backgroundMap,0,0,mapScreenWidth,mapScreenHeight);
smooth();
xml = loadXML("data/bikeRides.xml");
XML[] workoutRoutes = xml.getChildren("Workout/WorkoutRoute");
println("num of workouts " + workoutRoutes.length);
// Parse inside Workouts, workout O
for (int i = 0; i < workoutRoutes.length; i++) {
//int workoutNumber = i+1;
//println("Workout # " + workoutNumber + " //////" );
//workout #1, list Locations, workout 0, Locations in there, go into an Array, get OVERWRITTEN every time? empty Location array everyime
XML[] locations = null;
locations = workoutRoutes[i].getChildren("Location");
println("number of locations in workout: " + locations.length);
//initialize object with number in array, which is number of locations
gpsPoints = new gpsPoint[locations.length];
//add xvalue and yvalue into object
for (int a = 0; a < locations.length; a++){
//get lat and long
float pointLat = locations[a].getFloat("latitude");
float pointLong = locations[a].getFloat("longitude");
// convert and remap Lat and Long based on range
// -122.5367,37.6659,-122.3383,37.8174
float mainx = map(pointLat, 37.6659, 37.8174, 0, width);
float mainy = map(pointLong, -122.5367, -122.3383, 0, height);
gpsPoints[a] = new gpsPoint(mainx, mainy);
gpsPoints[a].display();
}
}
}
void draw() {
}
class gpsPoint {
float prevX;
float prevY;
float newX;
float newY;
gpsPoint(float previousX, float previousY){
prevX = previousX;
prevY = previousY;
}
void display() {
stroke(0, 50);
point(prevX, prevY);
}
}
解决方案
推荐阅读
- python - 让 size() 或 groupby & count 跨所有列工作
- elf - 在 elf 文件的注释部分修改 build-id
- azure - Azure AD - 在令牌 SPA 应用程序中返回角色和组
- java - 使用xml配置将依赖项注入Spring-Boot中的@RestController
- python - 从文件中获取不同的字符串并写入 .txt
- java - 将 TDD 重构为一系列测试
- python - 如何在函数中分离熊猫数据框中的文本数据
- javascript - 如何让多个 css 动画在 javascript 中播放?
- c++ - 在 OSX (XCode) 和 Windows (Visual Studio) 上存储 Unicode 字符串的区别
- ios - 是否有机会确定是否在 UITextView 中点击了空白空间?