проектиране на непрожектирани радарни изображения в osmdroid

Написах радарно приложение за времето, използвайки osmdroid за плочки на картата и ръчно наслагване на радарни данни на NOAA. Всичко работи чудесно, с изключение на това, че радарните изображения не са проектирани, докато плочките openstreetmap са в напречна проекция на Меркатор. Времето е в границите, които трябва, но данните са изкривени.

Виждам три начина да поправя това (по ред на предпочитанията), но имам проблеми и с трите:

1) намиране на източник на радарни данни, вече проектирани в mercator - часове търсене в Гугъл по-късно, не намерих нищо 2) програмно повторно проектиране на изображенията веднага след като ги изтегля. Някой знае ли добър API за това? 3) да ги прожектира в движение, може би с openlayers.im четиво, което може да препроектира openlayers, но може ли да се използва над osmdroid mapview?

Някакви идеи? Благодаря за всяка помощ Майк


person Raptrflite    schedule 03.08.2013    source източник
comment
@2: gdalwarp е доста мощен инструмент за повторна проекция на растерни изображения. Но тъй като говорите за вече подредени данни, този подход може да изисква допълнителна работа.   -  person tyr    schedule 03.08.2013
comment
Благодаря Тир, ще погледна   -  person Raptrflite    schedule 03.08.2013
comment
Изглежда, че gdal е правилният начин, но не мога да намеря добра реализация за него на android. Какво използват всички останали? Благодаря!   -  person Raptrflite    schedule 04.08.2013


Отговори (1)


GDAL е правилният начин. Няма официална версия на Android, за която знам, но някои хора успяха да я накарат да работи на Android. Например Nutiteq има компилация в папката libs на техния AdvancedMap3D примерен проект. Поставете съдържанието на двете папки armeabi в папката lib на вашия проект и трябва да имате достъп до GDAL пакетите.

След това разгледайте страницата GDAL в Java. Вижте примера на gdalinfo.java, за да усетите как да заредите и разгледате частите от набор от данни GDAL. За да препроектирате своя набор от данни, ще направите нещо по следния начин:

SpatialReference sr = new SpatialReference();
sr.ImportFromProj4("+proj=merc +datum=WGS84");
String result[] = new String[1];
sr.ExportToPrettyWkt(result, 1);
String oldProjection = mDataset.getProjection();
String newProjection = result[0];
Dataset newDataset = gdal.AutoCreateWarpedVRT(mDataset, oldProjection, newProjection, gdalconst.GRA_NearestNeighbour, 0.0);
Dataset savedDataset = mDriver.CreateCopy(outpath, newDataset, 0, new String[] { "COMPRESS=LZW", "PREDICTOR=2" }, null, null);
newDataset.delete();
savedDataset.delete();

Може да се наложи да направите няколко корекции, но това трябва да ви отведе по-голямата част от пътя.

person kurtzmarc    schedule 06.08.2013
comment
Изглежда не мога да накарам импортирането да бъде разпознато: import org.gdal.gdal.Band; например. Прекарах по-голямата част от вечерта, опитвайки се да накарам библиотеките и .jar да бъдат добавени правилно в настройките на модула (зависимости/библиотеки). Страницата „GDAL в java“ споменава API за свързване. Това ли ми липсва? Благодаря много за цялата ви помощ! - person Raptrflite; 09.08.2013
comment
Изглежда, че трябва да добавите съдържанието на org папка към вашия проект. Това съдържа всички SWIG свързвания. Може да има и други предварително изградени GDAL библиотеки, ако се разровите. - person kurtzmarc; 09.08.2013