-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KML Support #873
Comments
This is a good start. Let's concentrate on Placemark and geometry first. We can just render point geometry as default billbboards and everything else as white lines and polygons. This will help us get basic architecture in place and also show some early visual progress. We'll probably have to further break up some of these roadmap items into smaller tasks as we go. |
I believe that Point and LineString is done. I've also marked style processing and styleUrl. |
Hey @mramato, how's this going? Is there anything I can do to help out? |
Hey @Andre-Nunes. I haven't worked directly on KML in a little while but #1444 adds some major features that we needed in order to move forward (such as extruded polygons), so once that's in master and I merge it down, there should be some exciting stuff. One thing you could start looking into is supporting the various Other than that, feel free to just review what's there (and the list above) and see if there's anything you want to do. No matter how small, feel free to open a pull request into this branch any time. |
Yes, please send me the KMZ and I'll start looking into |
I did another pass on the main task list and unchecked most of the boxes for now. My plan is to go through what we have and validate/complete each item and then I'll start checking things back on one at a time. |
Hey, I'd like to help out if possible, I was really busy last time and would like to make up for it. Just let me get up to speed on current developments. Is there anything specific I could look into? |
That would be awesome. I'm in the process of figuring out where we left off (since I haven't looked at this code in months) but once I have a plan of attack put together I'll let you know and we can split up the work. I'll also probably create a new mailing list post to let people know what we're up to and where we are going. Are you still in school, or have you graduated? |
That sounds good! I'm still in school but as I'm just attending some leftover courses I'll have more free time during this year. Let me know when you've got the plan worked out. |
Hey @Andre-Nunes I know we haven't talked much but I just wanted to let you know that we just opened a PR for KML to go into master (link above this post). There's still a lot of work to do with KML overall, but it's looking really good for a bunch of use cases. That's again for getting the ball started on this! |
Hi @mramato, I'm really glad to see some of my work being finally merged into cesium, let me know if there's something I can help out with in my free time. Oh and I just noticed that you've updated GSoC's ideas for 2015, is Cesium applying this year? I might shoot you an email regarding that ;) |
Yes, we're applying. I assumed you graduated already. Definitely let me know if you're interested and what you want to work on. |
Some, because I didn't try them all, of the KML files available from http://activefiremaps.fs.fed.us/googleearth.php result in error. An error occurred while loading the file: conus_latest_modis.kml Request has failed. |
Thanks @GatorScott. The That being said, once I used a proxy, I got a lot of errors about invalid styles; so I'll definitely look into and fix the issue for all KML on that page. The length issue appears to be a clear cut bug caused by KML objects with no description but an empty Thanks again for the link. |
#2538 fixes the length problem. |
In #873, @GatorScott found a bunch of KML files that either didn't work or didn't match Google Earth. Turns out that Google Earth handles local styles that do not start with a `#` sign, which is not spec compliant. Since our goal is to match Google Earth, we now process these styles properly rather than spitting out a warning/error. We were also missing support for the TimeStamp element, which was an oversight on my part. The above changes make all KML files on http://activefiremaps.fs.fed.us/googleearth.php work properly (though they require a proxy).
#2539 fixes the rest of the issues. All of the files @GatorScott linked to should now load and work in Cesium (though loading directly from the URL, or ones that use NetworkLink still require use of a proxy). |
The "2015 California Fire Map KML" works now but is displaying the placemark names using a serif font that is pretty illegible. |
|
Has terrain support been added? When I add a KML and a terrain provider, the KML moves around when I pan the globe. When I turn off terrain, its fine. Also tried setting clampToGroup: true and still an issue. |
@bbehling-trimble yes, some terrain support has been added. In addition to passing in the |
@hpinkos That did not work. Do we need to specify the altitude as well? EDIT: I tried adding altitude tags, no change. |
Thanks for the example file. At first glance, this looks like a bug. I'll take a closer look and let you know. |
@bbehling-trimble KML requires Dimensions2018OffsiteScans2.zip That being said, I'm not sure why the original file was loading on terrain in Google Earth. Longer lines I tested in Google Earth do not follow the terrain unless tessellate is set. This is probably another case of Google not following their own format and having undocumented behavior (happens all of the time). I'll look more into it and possibly open a PR to better match GE (if I can figure out the "rules") but for now the most correct thing to do is add tessellate to the LineString. |
@mramato Thanks! |
This thread has been quiet again for a while! I'd like to make another quick suggestion -- again, it can be its own issue if need be, but it's very small. I'm using the KmlDataSource in a context where it would be helpful to know if the loaded file has NetworkLinks or not. I'd like to show the user whether or not they can expect the data to periodically update itself. I don't need tons of details, but even something like a |
I just got a request for supporting |
Hello, @mramato |
@gogo1211 Hannah's response here #8381 (comment) explains it best. You need to configure this on your server host. If you need additional help please open a thread on the Cesium forum. |
@OmarShehata , thank you! |
I haven't tried loading your sample KML but you have both of your (nested?) folders' |
Well that would make plenty of sense. Apparently you can stare at an issue for hours and still never see the obvious. GoogleEarth seems to ignore the The nested folders was simply because I pulled the example from a much larger data-set where there was more data which the nesting provided organization to. Thanks for the assist in debugging despite the obvious blunder on my part. |
gxlTrack when rendered on terrain shows only icon, and path is underground. Let's have 4 points and 2 flavors of KML, one as LineString and one as gx:Track How to fix/workaround samples to make gx:Track and their respecitive lines to work with terrainProvider ON ? Are there any tests simulating behavior of KML imported data on terrain ? I have studied briefly DataSources/KmlDataSource test case, but is does not seem to cover terrainSpecific rendering which seems to be a problem. Thanx a lot |
I'm not an expert but it looks like I've run into similar problems before but I am not loading from KML, so I don't know if my solution would help you. I compute a With KML, you'd have to "fix" all the Entities created after It might be worth putting in a new ticket, either to have the |
Anyone watching this issue might be interested in #10260 which I just filed. Not a huge change, but could be useful to some. |
Couple of questions on this ticket...
Thanks. |
Hi @icarter09,
|
hello, are there plans to support PhotoOverlays? I would like to visualize geolocated images against Google's 3D Tiles |
Hello everyone, I am currently using cesium 1.121 and I loaded the kml file in the picture. It does not say gx:AltitudeMode on the polygon on the ahead, but it does on the polygons on the behind. The code section is below. I want to determine it with cesium settings instead of the value written in the kml. How can I follow?
|
@martimpassos There hasn't been any activity on PhotoOverlays recently. If you'd like to add more information about your use case, that may help us prioritize. If you are interesting in contributing, please let us know and we'd be happy to discuss implementation or review a PR. Thanks!
@selimsezr CesiumJS is a big project, so we use GitHub for feature requests and bug tracking exclusively. Could you please take this question to the Cesium Forum? On the forum, there are members of the community and developers from the team who can help. Thanks! |
This issue has been heavily edited since Andre's original write-up and is now maintained by @mramato.
The initial KML implementation was started as part of the 2013 Google Summer of Code and resulted in many core features being implemented by @Andre-Nunes in his branch. Current work is taking place in the kml branch of the official Cesium repository. Since KML is a large specification, the plan is to implement what we see as the minimum viable product first and officially release that as part of Cesium. We will then continue to add additional functionality on a feature by feature basis with each Cesium release.
The below task list tries to capture everything at a fairly high level for each phase. There are many hidden features and requirements here and listing them all isn't useful. For example, we are going to need polygon and polyline draping on terrain as a core Cesium feature (#2172). We will add new tasks when we encounter an issue as we implement each of the high-level types. If you have a strong need for a feature that we haven't gotten to yet, or feel we're missing something in the below list; please don't hesitate to let us know.
Related Links
Mailing-list topic
Google Documentation
OGC Specification
onExpire
,onInterval
,onStop
onRegion
,onChange
,onRequest
(https://developers.google.com/kml/documentation/kmlreference#networklinkcontrol)
DataSourceBrowser
for full implementation)<Link>
features<refreshMode>
<refreshInterval>
<viewRefreshMode>
<viewRefreshTime>
<viewBoundScale>
<viewFormat>
<httpQuery>
<Link>
features for<Icon>
<Data>
<Schema>
and<SchemaData>
<gx:altitudeOffset>
for LinearRing and LineString<gx:angles>
for Track and MultiTrack (applies to both model and billboard).<Icon>
gx extensionsx
,y
,w
, andh
forGroundOverlay
LineStyle
xal:AddressDetails
altitudeMode
absolute
clampToGround
relativeToGround
(doesn't work on terrain).gx:altitudeMode
ge:Track
gets billboard heading from angles or direction of travel.Random notes
BalloonStyle:displayMode
. I'm not sure we care.$[geDirections]
with nothing. If we ever provide out of the box routing, we can use that instead.(https://github.com/gregjacobs/Autolinker.js) can be used to do this.
createObjectURL
for loading data from a zip file (which is currently using data uris). The problem here is that you need to callrevokeObjectURL
in order to clean things up when you're done.KmlDataSource
to support other planets.zip.js
has the ability to report progress which we currently don't utilize.loadXmlFromZip
andloadDataUriFromZip
in KmlDataSource.js would be the place to start if we ever want to add it. We just need to pass aonprogress
callback as the third parameter toentry.getData
when
block). If we want to match Google Earth, we should too. Rather than try/catching JulianDate.fromIso8601, we should add a exceptionless version that returns undefined.The text was updated successfully, but these errors were encountered: