Проблема с рендерингом файла KML — гладкий текст

У нас есть файлы KML, в которых есть несколько очень четко определенных полилиний (используемых в основном для рисования текста, но не только). Когда мы загружаем один и тот же файл KML в Cesium (1.6 или 1.7), OpenLayers или GoogleEarth, я получаю те же результаты:

  1. Цезий делает текст очень неровным.
  2. OpenLayers и GoogleEarth плавно отображают текст.

Цезиевый зубчатый текстЦезиевый зазубренный крупный план Открыть текст слоевОткрыть текст слоев крупным планом

Мы рассмотрели removeDuplicates() методы, которые, по нашему мнению, отвечают за «прореживание» данных. Если мы установим EPSILON на более высокое значение, «полилинии текста» будут отображаться хорошо. Можем ли мы где-нибудь переопределить переменную removeDuplicatesEpsilon?

Внутри метода removeDuplicates(), как только определяется, что нам нужно удалить хотя бы 1 точку, он выглядит так, будто сравнивает каждую последующую точку с предыдущей точкой в ​​списке. Разве он не должен сравнивать каждую точку с ранее принятой точкой? (в отличие от только предыдущего пункта в списке, который может и не быть включенным).

Код цезия:

var removeDuplicatesEpsilon = CesiumMath.EPSILON7;

PolylinePipeline.removeDuplicates = function(positions) {
    if (!defined(positions)) {
           throw new DeveloperError('positions is required.');
    }

     var length = positions.length;
     if (length < 2) {
          return undefined;
     }

     var i;
     var v0;
     var v1;

     for (i = 1; i < length; ++i) {
          v0 = positions[i - 1];
          v1 = positions[i];
          if (Cartesian3.equalsEpsilon(v0, v1, removeDuplicatesEpsilon)) {
               break;
          }
     }

     if (i === length) {
          return undefined;
     }

     var cleanedPositions = positions.slice(0, i);
     for (; i < length; ++i) {
          v0 = positions[i - 1];
          v1 = positions[i];
          if (!Cartesian3.equalsEpsilon(v0, v1, removeDuplicatesEpsilon)) {
               cleanedPositions.push(Cartesian3.clone(v1));
          }
     }

     return cleanedPositions;
};

Образец KML -

<?xml version="1.0" encoding="utf-16"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Document id="c7e47ca6-242c-4e1a-b4ca-02aff9d98ee4">
    <name>Letters</name>
    <Placemark id="c00e3314-bc14-4a1e-aa66-d3d70e217cda1">
        <name>C</name>
        <styleUrl>#S0</styleUrl>
        <LineString>
            <coordinates>-93.7997582661072,28.2156338033321,0 -93.7997341817777,28.2156233335357,0 -93.7997105791612,28.2156025354265,0 -93.7996990187067,28.215581878842,0 -93.7997036750268,28.2155796151045,0 -93.7997150749106,28.2155995642938,0 -93.7997375535976,28.215619372004,0 -93.7997595506083,28.2156291343859,0 -93.7998041869331,28.2156291344279,0 -93.7998263445402,28.2156193720874,0 -93.7998486627121,28.2155995644193,0 -93.799860223207,28.2155798982196,0 -93.7998713020103,28.2155500452192,0 -93.799871302029,28.2154999600916,0 -93.7998602232594,28.215470107084,0 -93.7998486627993,28.2154504408918,0 -93.79982634469,28.2154306331999,0 -93.7998041871417,28.2154208708285,0 -93.799759550904,28.2154208707865,0 -93.7997375539044,28.2154306331165,0 -93.7997150751844,28.2154504407663,0 -93.799703675239,28.215470389905,0 -93.7996990189326,28.2154681261704,0 -93.7997105794524,28.2154474696035,0 -93.7997341821035,28.2154266715762,0 -93.7997582664183,28.2154164848056,0 -93.7998056322006,28.21541648485,0 -93.7998295559378,28.2154266716658,0 -93.7998533191013,28.2154474697376,0 -93.7998647189985,28.2154684092942,0 -93.7998766005805,28.2154993941569,0 -93.7998766005639,28.2155506111568,0 -93.7998647189493,28.2155815960297,0 -93.7998533190173,28.2156025355605,0 -93.7998295557876,28.2156233336253,0 -93.7998056319859,28.2156338033766,0 -93.7997582661072,28.2156338033321,0 </coordinates>
        </LineString>
    </Placemark>
    <Placemark id="c00e3314-bc14-4a1e-aa66-d3d70e217cda2">
        <name>O - outer</name>
        <styleUrl>#S0</styleUrl>
        <LineString>
            <coordinates>-93.7995333556067,28.2156193715947,0 -93.7995556738038,28.2155995639742,0 -93.7995672343623,28.2155798977991,0 -93.7995783132305,28.2155500448223,0 -93.7995783133866,28.2154999596947,0 -93.7995672347159,28.2154701066634,0 -93.7995556743001,28.2154504404467,0 -93.7995333562743,28.2154306327072,0 -93.7995111987138,28.2154208702886,0 -93.7994665624956,28.2154208701515,0 -93.7994445654692,28.2154306324346,0 -93.7994220866754,28.2154504400365,0 -93.7994106866767,28.2154701061829,0 -93.7993994471974,28.2154999591456,0 -93.7993994469574,28.2155500442731,0 -93.7994106861621,28.2155798973185,0 -93.7994220859925,28.215599563564,0 -93.7994445646446,28.2156193713221,0 -93.7994665616286,28.2156291337509,0 -93.7995111979339,28.215629133888,0 -93.7995333556067,28.2156193715947,0 </coordinates>
        </LineString>
    </Placemark>
    <Placemark id="c00e3314-bc14-4a1e-aa66-d3d70e217cda3">
        <name>O - inner</name>
        <styleUrl>#S0</styleUrl>
        <LineString>
            <coordinates>-93.7994652771049,28.2156338026944,0 -93.7994411928333,28.2156233328466,0 -93.7994175902544,28.2156025346871,0 -93.7994060298579,28.21558159511,0 -93.7993941484081,28.2155506101895,0 -93.7993941486561,28.2154993931896,0 -93.7994060303933,28.2154684083745,0 -93.7994175909711,28.2154474688642,0 -93.7994411936987,28.2154266708872,0 -93.7994652780122,28.2154164841678,0 -93.7995126438043,28.2154164843132,0 -93.7995365675037,28.21542667118,0 -93.7995603306005,28.2154474693023,0 -93.7995717304402,28.2154684088833,0 -93.7995836119713,28.2154993937713,0 -93.7995836118142,28.2155506107712,0 -93.7995717300805,28.2155815956187,0 -93.7995603300911,28.2156025351253,0 -93.7995365668139,28.2156233331395,0 -93.7995126429933,28.2156338028398,0 -93.7994652771049,28.2156338026944,0 </coordinates>
        </LineString>
    </Placemark>
    <Placemark id="c00e3314-bc14-4a1e-aa66-d3d70e217cda4">
        <name>N</name>
        <styleUrl>#S0</styleUrl>
        <LineString>
            <coordinates>-93.7993079697249,28.215631538367,0 -93.7991525469176,28.2154261036618,0 -93.7991525454582,28.2156315375975,0 -93.7991472468299,28.2156315375682,0 -93.7991472483541,28.2154184635286,0 -93.7991528680389,28.2154184635597,0 -93.7993084514863,28.2156238982652,0 -93.7993084526457,28.2154184643294,0 -93.7993135906132,28.2154184643519,0 -93.799313589421,28.2156315383915,0 -93.7993079697249,28.215631538367,0 </coordinates>
        </LineString>
    </Placemark>
    <Placemark id="c00e3314-bc14-4a1e-aa66-d3d70e217cda5">
        <name>D - outer</name>
        <styleUrl>#S0</styleUrl>
        <LineString>
            <coordinates>-93.7990499914568,28.2154208681741,0 -93.7989722794574,28.2154208676656,0 -93.7989387219477,28.2154306297883,0 -93.7989167247776,28.215450437311,0 -93.7989051640743,28.2154701034143,0 -93.7988940850263,28.2154999563369,0 -93.7988940845493,28.2155500414644,0 -93.7989051630401,28.2155798945499,0 -93.798916723389,28.2155995608385,0 -93.7989387202291,28.2156193686758,0 -93.7989722776264,28.2156291312649,0 -93.7990499897774,28.2156291317735,0 -93.7990499914568,28.2154208681741,0 </coordinates>
        </LineString>
    </Placemark>
    <Placemark id="c00e3314-bc14-4a1e-aa66-d3d70e217cda6">
        <name>D - inner</name>
        <styleUrl>#S0</styleUrl>
        <LineString>
            <coordinates>-93.7989716353721,28.2156338002082,0 -93.7989361511849,28.2156233301936,0 -93.7989120670252,28.2156025319439,0 -93.7989006673004,28.2155815923255,0 -93.7988887859973,28.2155506073613,0 -93.7988887864877,28.2154993903614,0 -93.7989006683714,28.21546840559,0 -93.7989120684759,28.215447466121,0 -93.7989361529804,28.2154266682341,0 -93.798971637284,28.2154164816816,0 -93.7990551294986,28.2154164822266,0 -93.7990551277566,28.2156338007532,0 -93.7989716353721,28.2156338002082,0 </coordinates>
        </LineString>
    </Placemark>
    <Placemark id="c00e3314-bc14-4a1e-aa66-d3d70e217cda7">
        <name>S</name>
        <styleUrl>#S0</styleUrl>
        <LineString>
            <coordinates>-93.798701722344,28.2156337980995,0 -93.7986662382611,28.2156233280153,0 -93.7986424752182,28.2156028126893,0 -93.7986464893054,28.215599275651,0 -93.7986688072375,28.2156193665025,0 -93.7987023646879,28.2156291291575,0 -93.7987476432453,28.215629129548,0 -93.7987812009125,28.2156193674718,0 -93.7988030375251,28.2156001259057,0 -93.7988030377204,28.2155813086054,0 -93.7987917986145,28.2155619252865,0 -93.7987808804753,28.2155524458179,0 -93.7987585624292,28.2155422588161,0 -93.7986895208716,28.2155220260795,0 -93.7986657578042,28.2155118390668,0 -93.7986537158051,28.2155010862216,0 -93.7986418344649,28.2154800050847,0 -93.798641834845,28.2154480298286,0 -93.7986662405537,28.2154266660558,0 -93.7987017248053,28.2154164795729,0 -93.7987484483853,28.2154164799759,0 -93.7987839324884,28.2154266670708,0 -93.7988075349079,28.2154471823538,0 -93.7988036813654,28.2154507194153,0 -93.7987812029095,28.2154306285844,0 -93.7987476455143,28.2154208659486,0 -93.7987023670453,28.2154208655581,0 -93.7986688094332,28.215430627615,0 -93.7986471333646,28.2154498691614,0 -93.798647133023,28.2154787317685,0 -93.7986582115585,28.2154982565818,0 -93.7986691296813,28.2155077360687,0 -93.7986914477116,28.2155179230851,0 -93.7987604891892,28.2155381558207,0 -93.7987842522715,28.215548342817,0 -93.7987964549006,28.2155590956521,0 -93.7988081757464,28.2155801767744,0 -93.7988081755213,28.2156019652309,0 -93.7987839304126,28.2156233290302,0 -93.7987484460192,28.2156337985024,0 -93.798701722344,28.2156337980995,0 </coordinates>
        </LineString>
    </Placemark>
</Document>
<Style id="S0">
    <LineStyle>
        <color>ff007fff</color>
    </LineStyle>
    <PolyStyle>
        <color>ff004080</color>
    </PolyStyle>
</Style>
</Document>
</kml>

person Jay Blanchard    schedule 18.03.2015    source источник
comment
Можете ли вы опубликовать небольшой KML-файл с образцами писем? Спасибо! Также нет необходимости копировать сюда исходный код Cesium, вы можете прямая ссылка на строки кода на GitHub.   -  person emackey    schedule 19.03.2015
comment
@emackey приношу свои извинения за то, что не вернусь к этому быстрее. Я изменил сообщение, включив в него образец KML.   -  person Jay Blanchard    schedule 24.03.2015


Ответы (1)


Похоже, это ошибка в Cesium. Я открыл запрос на включение № 2609, чтобы исправить это.

person emackey    schedule 26.03.2015