On Saturday, December 17, 2011 23:19:16 Stuart Buchanan wrote:
> Great work Adrian,
> 
> I had something similar working in January - I think I posted
> something to this list. My system used an AI scenario to
> create a number of ships, and then used a perl script to
> query www.marinetraffic.com using the current lon/lat and
> write to the property tree the lon/lat speed and heading of
> all the ships in a given radius. The difficult thing I found was
>  that the AIS information wasn't sampled frequently enough.
> 
> Let me know if you'd like the scripts and XML I wrote, and I'll
> dig them out for you.
> 
> To be honest, I was never very happy with my implementation -
> it was a bit of a hack. I'd be very interested to hear about the details
> of yours, and I'm sure you've thought of something much better!
> 
> The ideal might be to push the shipping data onto the MP network,
> but the amount of shipping data would swamp our current MP aircraft
> numbers :)
> 
> -Stuart

Hi Stuart,
I didn't know about you attempt. Your method is probably more advanced, since 
I'm just using static data, placing models with a Nasal script executed in the 
debug console. I'm not sure if dynamic traffic could be done properly, but 
maybe storing at least two points for each ship at any time and moving it 
between them at the speed reported through AIS may be a solution. Though, I'm 
don't know how useful people would find this, and how much of a performance 
hit it would be.

Anyway, I'm attaching the Nasal script I used. The data is just a text file, 
containing the type of vessel, position, speed and course. I can send that to 
you too, if you want, but it's too large to send to the list.

Cheers,
Adrian
var lat = getprop('/position/latitude-deg');
var lon = getprop('/position/longitude-deg');
var lat_max = lat + 0.5;
var lat_min = lat - 0.5;
var lon_max = lon + 0.5;
var lon_min = lon - 0.5;

var path = getprop("/sim/fg-root") ~ "/Nasal/aisdata2.txt";
print( path);
var file = io.readfile(path);
var file_lines = [[]];
var current_word = "";
for (var i = 0; i < size(file); i += 1)
{
        var char = substr(file, i, 1);
        if (char == "," or char == "\n")
        {
                append(file_lines[size(file_lines) - 1], current_word);
                current_word = "";
                if (char == "\n") append(file_lines, []);
        }
        else
        {
                current_word ~= char;
        }
}


foreach(var line; file_lines)
{
        var model = "";
        if(line[0]==1)
        {
                model = "Models/Maritime/Civilian/MediumFerry.xml";
        }
        if(line[0]==2)
        {
                model = "Models/Maritime/Civilian/ContainerShip.xml";
        }
        if(line[0]==3)
        {
                model = "Models/Maritime/Civilian/CruiseShip.xml";
        }
        if(line[0]==4)
        {
                model = "Models/Maritime/Civilian/Tanker_sailing.xml";
        }
        if(line[0]==5)
        {
                model = "Models/Maritime/Civilian/Trawler.xml";
        }
        if(line[0]==6)
        {
                model = "Models/Maritime/Civilian/SailBoatUnderSail.xml";
        }
        if(line[0]==7)
        {
                model = "Models/Maritime/Civilian/LargeTrawler.xml";
        }
        if(line[0]==0)
        {
                model = "Models/Maritime/Misc/MarkerBuoy.xml";
        }
        #var heading = rand() * 360;
        var lat_ok =0;
        var lon_ok =0;
        var height =0;
        if(line[3]==0)
        {
                height=-1;
        }
        #print(line[0]);
        if( (line[2] <= lat_max) and (line[2] >= lat_min)) 
        {
                lat_ok =1;
        }
        if( (line[1] <= lon_max) and (line[1] >= lon_min)) 
        {
                lon_ok =1;
        }
        if(lat_ok ==1 and lon_ok==1)
        {
                #print(line[0]);
                geo.put_model(model, line[2], line[1], 0, line[4]);
        }
}
------------------------------------------------------------------------------
Learn Windows Azure Live!  Tuesday, Dec 13, 2011
Microsoft is holding a special Learn Windows Azure training event for 
developers. It will provide a great way to learn Windows Azure and what it 
provides. You can attend the event by watching it streamed LIVE online.  
Learn more at http://p.sf.net/sfu/ms-windowsazure
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to