在googleearth kml文件中生成3D轨迹

2024-05-14 10:02:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经有一些代码来生成2D kml文件,但我对复制类似的图像感兴趣,每个位置都有一个相关的深度剖面:

enter image description here

有没有很好的参考资料(或者python库)来做这件事?我什么也没找到。在

图像参考: 贝尔德,R.W.,S.W.马丁,D.L.韦伯斯特和B.L.索瑟尔。2014对太平洋导弹靶场设施中暴露于中频主动声纳的卫星标记齿形目动物的模拟接收声压级和运动进行评估:2011年2月至2013年2月。为美国太平洋舰队准备,由HDR环境、运营和建设公司提交给NAVFAC PAC


Tags: 文件代码标记图像kml感兴趣动物参考资料
2条回答

如果你使用的是java,我有代码来生成kml来在googleearth中显示3D跟踪。(另外,每个点都有一条从空中到地面的垂直线)。 (假设:由于您有二维代码,可能已经有了从kml21.xsd转换而来的JavaPOJO代码。) (另请注意,如果您知道任何免费网站供我上传图片,我可以附上一张图片。) 希望这有助于:

package com.googleearth.util;

import java.util.List;

import javax.xml.bind.JAXBElement;

import com.a.googleearth.entities.GoogleEarthView;
import com.a.googleearth.model.AltitudeModeEnum;
import com.a.googleearth.model.DocumentType;
import com.a.googleearth.model.FolderType;
import com.a.googleearth.model.KmlType;
import com.a.googleearth.model.LineStringType;
import com.a.googleearth.model.LineStyleType;
import com.a.googleearth.model.ObjectFactory;
import com.a.googleearth.model.PlacemarkType;
import com.a.googleearth.model.StyleType;

public class KmlService {

    public static final byte[] blue = new byte[]{(byte)0x64,(byte)0xF0,(byte)0x00,(byte)0xFF};

    private static ObjectFactory factory = new ObjectFactory();

    static final String DEFAULT_REGISTRATION_FOR_EMPTY = "EMPTY";

    public static JAXBElement<KmlType> createKml(List<GoogleEarthView> listGoogleEarthDBView) {

        KmlType kml = factory.createKmlType();

        DocumentType document = factory.createDocumentType();
        kml.setFeature(factory.createDocument(document));

        {
            LineStyleType redLineStyle = factory.createLineStyleType();
            // http://www.zonums.com/gmaps/kml_color/
            redLineStyle.setColor(new byte[]{(byte)0xFF,(byte)0xF0,(byte)0x00,(byte)0x14});
            redLineStyle.setWidth(5f);

            StyleType style = factory.createStyleType();
            style.setId("blueLine");
            style.setLineStyle(redLineStyle);
            document.getStyleSelector().add(factory.createStyle(style));
        }

        FolderType folder = factory.createFolderType();

        folder.setName(listGoogleEarthDBView.get(0).getFolderName());

        document.getFeature().add(factory.createFolder(folder));

        PlacemarkType currentPlacemark = null;

        for (GoogleEarthView view : listGoogleEarthDBView) {

            if (currentPlacemark == null || currentPlacemark.getName().equalsIgnoreCase("F0001") == false) {

                    if (currentPlacemark != null) {
                        JAXBElement<LineStringType> lineString = (JAXBElement<LineStringType>) currentPlacemark.getGeometry();
                        lineString.getValue().getCoordinates().add(view.getLongitude() + "," + view.getLatitude() + "," + view.getPressureAltitude()+"\n");
                    }

                    currentPlacemark = createF0001Placemark();
                    folder.getFeature().add(factory.createPlacemark(currentPlacemark));
                }

                JAXBElement<LineStringType> lineString = (JAXBElement<LineStringType>) currentPlacemark.getGeometry();
                lineString.getValue().getCoordinates().add(view.getLongitude() + "," + view.getLatitude() + "," + view.getPressureAltitude()+"\n");

        }

        JAXBElement<KmlType> kmlElement = factory.createKml(kml);

        return kmlElement;
    }

    private static PlacemarkType createF0001Placemark() {
        PlacemarkType placeMark = factory.createPlacemarkType();
        placeMark.setName("F0001");

        placeMark.setStyleUrl("#blueLine");

        LineStringType flyhtStreamLineString = factory.createLineStringType();
        flyhtStreamLineString.setAltitudeMode(AltitudeModeEnum.ABSOLUTE);
        flyhtStreamLineString.setExtrude(Boolean.TRUE);
        placeMark.setGeometry(factory.createLineString(flyhtStreamLineString));
        return placeMark;
    }


}

您可以使用其他语言生成一些kml文件,如以下链接中的文件:

https://sites.google.com/site/canadadennischen888/home/kml/3d-tracking

  • 单击下载附加文件
  • 选择“另存为”查看KML内容
  • 选择“打开”在谷歌地球上查看结果

希望能帮上忙

相关问题 更多 >

    热门问题