Экземпляры осмоса WayNode всегда возвращают 0 из getLatitude и getLongitude - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь использовать openstreetmap osmosis для чтения pbf-файла аэропорта и извлечения таких функций, как ворота и взлетно-посадочные полосы.

Я использую код, подобный следующему: http://www.javaoptimum.com/how-to-read-osm-pbf-files-programmatically-java/

Когдакод встречает экземпляр Node, он возвращает разумные значения из getLatitude и getLongitude ...

Однако, когда код встречает экземпляр Way, координаты кажутся равными нулю.Вот код, который я использую:

    Sink sinkImplementation = new Sink() {

        public void process(EntityContainer entityContainer) {

            Entity entity = entityContainer.getEntity();
            entity.getTags().forEach((tag) -> {
                if ("aeroway".equals(tag.getKey())) {
                    if (entity instanceof Node) {
                        if ("holding_position".equals(tag.getValue())) {
                            installPointHook(airportIcaoCode, entity, tag);
                        } else if ("gate".equals(tag.getValue())) {
                            installPointHook(airportIcaoCode, entity, tag);
                        } else {
                            LOGGER.info("Ignoring unrecognized tag value " + tag.getValue());
                        }
                    } else if (entity instanceof Way) {
                        Way way = (Way)entity;
                        if ("runway".equals(tag.getValue())) {
                            way.getWayNodes().forEach((it) -> System.out.println(it + " : " + it.getLatitude()+","+it.getLongitude()));
                        } else if ("taxiway".equals(tag.getValue())) {
                            way.getWayNodes().forEach((it) -> System.out.println(it + " : " + it.getLatitude()+","+it.getLongitude()));
                        } else if ("apron".equals(tag.getValue())) {
                            way.getWayNodes().forEach((it) -> System.out.println(it + " : " + it.getLatitude()+","+it.getLongitude()));
                        } else if ("hangar".equals(tag.getValue())) {
                            way.getWayNodes().forEach((it) -> System.out.println(it + " : " + it.getLatitude()+","+it.getLongitude()));
                        } else {
                            LOGGER.info("Ignoring unrecognized tag value " + tag.getValue());
                        }
                    } else if (entity instanceof Relation) {
                        LOGGER.info("Ignoring unrecognized tag value " + tag.getValue());
                    }
                }
            });
        }

        public void initialize(Map<String, Object> arg0) {
        }

        public void complete() {
        }

        @Override
        public void close() {
        }

    };

Нужна ли какая-то другая обработка, чтобы получить координаты для Way s?

...