示例#1
0
def save_kml(markers, filepath=None, extra_locations={}):
    if filepath is None:
        filepath = str(time.time())

    kml_obj = simplekml.Kml()
    for marker in markers:
        centre_lat = marker.location[0]
        centre_lon = marker.location[1]

        outer_polycircle = polycircles.Polycircle(
            latitude=centre_lat,
            longitude=centre_lon,
            radius=(marker.distance + (marker.precision / 2.0)) * M_IN_MILE,
            number_of_vertices=50)
        inner_polycircle = polycircles.Polycircle(
            latitude=centre_lat,
            longitude=centre_lon,
            radius=(marker.distance - (marker.precision / 2.0)) * M_IN_MILE,
            number_of_vertices=50)

        pol = kml_obj.newpolygon(name="%.6f, %.6f | %.3f" %
                                 (centre_lat, centre_lon, marker.distance),
                                 outerboundaryis=outer_polycircle.to_kml(),
                                 innerboundaryis=inner_polycircle.to_kml())
        pol.style.polystyle.color = simplekml.Color.changealphaint(
            100, simplekml.Color.red)

    for key, loc in extra_locations.iteritems():
        kml_obj.newpoint(name=key, coords=[(loc[1], loc[0])])
    kml_obj.save(parent_folder + "output/" + filepath)
示例#2
0
def draw_circles(kml, filename):
    """Draw, into the Kml object kml, 0.1 mile radius circles around the
waypoints in the .gpx file named by filename"""

    f1 = kml.newfolder(name="GPX Point Centers")
    f2 = kml.newfolder(name="0.1 Mile Circles")

    points = getpoints(filename)

    for point in points:

        lat, lon, name, desc = point
        description = "%s: %s" % (name, desc)
        # create the center point

        f1.newpoint(name=description, coords=[(lon, lat)])

        # create the outline
        polycircle = polycircles.Polycircle(latitude=lat,
                                            longitude=lon,
                                            radius=RADIUS,
                                            number_of_vertices=72)

        pol = f2.newpolygon(
            name=description,
            outerboundaryis=polycircle.to_kml(),
        )

        pol.description = description

        pol.style.polystyle.color = simplekml.Color.red
        pol.style.polystyle.outline = 1
        pol.style.polystyle.fill = 1
示例#3
0
    def test_kml_polygons_4_multiple_vertices(self):
        """Creates polycircles with a varying amount of vertices."""
        start_lat = -24.336113
        start_lon = 14.976681

        direct = geodesic.Geodesic.WGS84.Direct
        kml = simplekml.Kml()

        for row in range(6):
            row_start = direct(start_lat, start_lon, 180, 100 * row)
            row_start_lat, row_start_lon = row_start['lat2'], row_start['lon2']
            for column in range(6):
                circle_center = direct(row_start_lat, row_start_lon, 90,
                                       100 * column)
                circle_center_lat = circle_center['lat2']
                circle_center_lon = circle_center['lon2']
                number_of_vertices = (row * 6) + column + 3
                polycircle = polycircles.Polycircle(circle_center_lat,
                                                    circle_center_lon, 40,
                                                    number_of_vertices)
                pol = kml.newpolygon(name="%d vertices" % number_of_vertices,
                                     outerboundaryis=polycircle.to_kml())
                pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200,
                                                   simplekml.Color.aquamarine)
                kml.save(
                    os.path.join(self.output_dir,
                                 "test_kml_multiple_vertices.kml"))
示例#4
0
def hangar_influence(hangar, path):
    print hangar.name, hangar.id
    name = "hangar_" + str(hangar.id) + "_inf.kml"
    print name

    polycircle = polycircles.Polycircle(latitude=hangar.latitude,
                                        longitude=hangar.longitude,
                                        radius=hangar.radius,
                                        number_of_vertices=36)
    points_list = polycircle.to_lat_lon()
    latlonalt = []
    for tuple in points_list:
        tup = (tuple[1], tuple[0], 5)
        latlonalt.append(tup)

    kml = simplekml.Kml(open=1)
    shape_polycircle = kml.newmultigeometry(name=hangar.name)
    pol = shape_polycircle.newpolygon()
    pol.outerboundaryis = latlonalt

    pol.altitudemode = simplekml.AltitudeMode.relativetoground
    pol.extrude = 5
    pol.style.polystyle.color = '22ff0000'
    pol.style.polystyle.fill = 1
    pol.style.polystyle.outline = 1
    pol.style.linestyle.width = 10
    pol.style.linestyle.color = simplekml.Color.red
    '''
    pol = kml.newpolygon(name=hangar.description, outerboundaryis=polycircle.to_kml())
    pol.style.polystyle.color = simplekml.Color.changealphaint(200, simplekml.Color.darksalmon)
    '''
    kml.save(path)

    return name
示例#5
0
def draw_circle(name, lat, lng):
    polycircle = polycircles.Polycircle(latitude=lat,
                                        longitude=lng,
                                        radius=200,
                                        number_of_vertices=36)
    pol = kml.newpolygon(name=name, outerboundaryis=polycircle.to_kml())
    pol.style.polystyle.color = simplekml.Color.rgb(
        255, 140, 0, 60)  #https://htmlcolorcodes.com/
示例#6
0
 def __init__(self, name, lon, lat, rad, kml):
     Location.__init__(self, name, lon, lat)
     self.poly = polycircles.Polycircle(longitude=lon,
                                        latitude=lat,
                                        radius=rad,
                                        number_of_vertices=36)
     self.kml = kml.newpolygon(name=name,
                               outerboundaryis=self.poly.to_kml())
     self.kml.style.polystyle.color = simplekml.Color.changealphaint(
         200, simplekml.Color.green)
 def setUp(self):
     self.latitude = 32.074322
     self.longitude = 34.792081
     self.radius_meters = 100
     self.number_of_vertices = 36
     self.polycircle = \
         polycircles.Polycircle(latitude=self.latitude,
                                longitude=self.longitude,
                                radius=self.radius_meters,
                                number_of_vertices=self.number_of_vertices)
示例#8
0
    def test_kml_polygon_2(self):
        """Creates a torus-shaped polygon."""
        outer_polycircle = polycircles.Polycircle(latitude=40.768085,
                                                  longitude=-73.981885,
                                                  radius=200,
                                                  number_of_vertices=36)
        inner_polycircle = polycircles.Polycircle(latitude=40.768085,
                                                  longitude=-73.981885,
                                                  radius=180,
                                                  number_of_vertices=36)

        kml = simplekml.Kml()
        pol = kml.newpolygon(name="Torus around Columbus Circle, Manhattan",
                             outerboundaryis=outer_polycircle.to_kml(),
                             innerboundaryis=inner_polycircle.to_kml())
        pol.style.polystyle.color = \
            simplekml.Color.changealphaint(200, simplekml.Color.red)
        kml.save(
            os.path.join(self.output_dir,
                         "test_kml_polygon_2_torus_manhattan.kml"))
示例#9
0
def drawCircle(Name, Lat, Lon, Radius, color):
    circle = pc.Polycircle(latitude=Lat,
                           longitude=Lon,
                           radius=Radius,
                           number_of_vertices=iterationConstant)
    pol = kml.newpolygon(name=Name, outerboundaryis=circle.to_kml())
    pol.style.polystyle.color = "000000ff"  # Transparent
    pol.style.linestyle.color = color
    pol.altitudemode = 'absoluteAltitude'
    pol.tessellate = 1
    return circle
示例#10
0
 def test_kml_polygon_1(self):
     """Asserts that the KML output is valid for the simplekml package."""
     polycircle = polycircles.Polycircle(latitude=32.074523,
                                         longitude=34.791469,
                                         radius=20,
                                         number_of_vertices=36)
     kml = simplekml.Kml()
     pol = kml.newpolygon(name="Azrieli towers",
                          outerboundaryis=polycircle.to_kml())
     pol.style.polystyle.color = \
         simplekml.Color.changealphaint(200, simplekml.Color.green)
     kml.save(os.path.join(self.output_dir, "test_kml_polygon_1.kml"))
示例#11
0
 def test_kml_polygon_3_manhattan(self):
     """Asserts that the KML output is valid for the simplekml package."""
     polycircle = polycircles.Polycircle(latitude=40.768085,
                                         longitude=-73.981885,
                                         radius=200,
                                         number_of_vertices=36)
     kml = simplekml.Kml()
     pol = kml.newpolygon(name="Columbus Circle, Manhattan",
                          outerboundaryis=polycircle.to_kml())
     pol.style.polystyle.color = \
         simplekml.Color.changealphaint(200, simplekml.Color.green)
     kml.save(
         os.path.join(self.output_dir, "test_kml_polygon_3_manhattan.kml"))
示例#12
0
    def test_olympic_bagels2(self):
        """Creates bagel-shaped polygons in Rio (just for fun).."""
        circles = ((-22.971499, -43.183030, simplekml.Color.blue),
                   (-22.971498, -43.182737, simplekml.Color.black),
                   (-22.971498, -43.182444, simplekml.Color.red),
                   (-22.971666, -43.182892, simplekml.Color.yellow),
                   (-22.971665, -43.182599, simplekml.Color.green))

        kml = simplekml.Kml()

        for circle in circles:
            outer_polycircle = polycircles.Polycircle(circle[0],
                                                      circle[1],
                                                      radius=20)
            inner_polycircle = polycircles.Polycircle(circle[0],
                                                      circle[1],
                                                      radius=16)
            pol = kml.newpolygon(outerboundaryis=outer_polycircle.to_kml(),
                                 innerboundaryis=inner_polycircle.to_kml())
            pol.style.polystyle.color = \
                simplekml.Color.changealphaint(150, circle[2])

        kml.save(os.path.join(self.output_dir, "test_olympic_bagels_2.kml"))
示例#13
0
def creatKml(obsList):
    kml = simplekml.Kml()
    i = 0
    for item in obsDict:
        polycircle = polycircles.Polycircle(latitude=item.latitude,
                                            longitude=item.longitude,
                                            radius=item.cylinder_radius,
                                            number_of_vertices=36)
        pol = kml.newpolygon(name=str(i), outerboundaryis=polycircle.to_kml())
        pol.style.polystyle.color = \
                simplekml.Color.changealphaint(200, simplekml.Color.green)
        i = i + 1
    kml.save("obstackle.kml")
    return
示例#14
0
    def generate(self):

        kml = simplekml.Kml(open=1)

        polygon_circle = []

        for data in self.data_set:

            shape_polycircle = kml.newmultigeometry(name=data['data'])

            try:
                radius = round(data['data'])

            except TypeError:
                radius = int(data['data'])

            polycircle = polycircles.Polycircle(
                latitude=data['coordinates']['lat'],
                longitude=data['coordinates']['lng'],
                radius=(radius + 1) * self.multiplier,
                number_of_vertices=36)

            latloncircle = polycircle.to_lon_lat()
            latlonaltcircle = []

            for element in latloncircle:
                tup = (
                    element[0],
                    element[1],
                    self.altitude,
                )

                latlonaltcircle.append(tup)

            print latlonaltcircle

            pol = shape_polycircle.newpolygon()
            pol.outerboundaryis = latlonaltcircle

            pol.altitudemode = simplekml.AltitudeMode.relativetoground
            pol.extrude = 5
            pol.style.polystyle.color = simplekml.Color.changealphaint(
                200, self.set_color(self.color))
            pol.style.linestyle.color = simplekml.Color.changealphaint(
                230, self.set_color(self.color))

            polygon_circle.append(polycircle)

        kml.save("kmls_management/static/" + self.kml_name)
示例#15
0
	def add_route(self, route):
		fol = self.kml.newfolder(name=self.route_folder_name(route))
		polycircle = polycircles.Polycircle(latitude=route.start_latitude,
											longitude=route.start_longitude,
											radius=route.start_radius,
											number_of_vertices=36)
		polygon = fol.newpolygon(name=route.start_label, outerboundaryis=polycircle.to_kml())
		polygon.style = self.circle_style
		
		polycircle = polycircles.Polycircle(latitude=route.end_latitude,
											longitude=route.end_longitude,
											radius=route.end_radius,
											number_of_vertices=36)
		polygon = fol.newpolygon(name=route.end_label, outerboundaryis=polycircle.to_kml())
		polygon.style = self.circle_style
		
		route.matches.sort(key=lambda x: x.duration())
		
		for match in route.matches:
			line = fol.newlinestring(	name=match.name(), 
								description=match.description(),
								coords=match.coords())
			line.style.linestyle.width=3
			line.style.linestyle.color = self.line_color(match.normal_duration())
示例#16
0
def buildCircle(location, name):
    circleID = makeKey(name) + '_circle'
    boundaryCircle = polycircles.Polycircle(latitude=location['lat'],
                                            longitude=location['lon'],
                                            radius=CIRCLE_RADIUS * 1000,
                                            number_of_vertices=36)
    coords = [(coord[1], coord[0]) for coord in boundaryCircle.vertices]
    circleShape = Polygon(coords)
    kmlGeometry = geometry.Geometry(NAME_SPACE,
                                    id=circleID,
                                    geometry=circleShape,
                                    extrude=False,
                                    tessellate=True,
                                    altitude_mode='clampToGround')
    return kmlGeometry
示例#17
0
def hangar_influence(hangar, path):
    name = "hangar_" + str(hangar.id) + "_inf.kml"

    polycircle = polycircles.Polycircle(latitude=hangar.latitude,
                                        longitude=hangar.longitude,
                                        radius=hangar.radius,
                                        number_of_vertices=36)
    # kml = simplekml.Kml()
    points_list = polycircle.to_lat_lon()
    latlonalt = []
    for idx, points_tuple in enumerate(points_list):
        if idx == 0:
            first_point = (points_tuple[1], points_tuple[0])
        tup = (points_tuple[1], points_tuple[0])
        latlonalt.insert(0, tup)
    latlonalt.insert(0, first_point)
    #
    kml = simplekml.Kml(open=1)
    shape_polycircle = kml.newmultigeometry(name=hangar.name)
    pol = shape_polycircle.newpolygon()
    # pol = kml.newpolygon(name=name) # /
    pol.outerboundaryis = latlonalt  # /
    # Line Style
    # pol.style.linestyle.color = simplekml.Color.red # /
    # pol.style.linestyle.width = 20 # /
    # If you want to see the filled polygon needs to enable relative to ground
    pol.style.polystyle.fill = 1
    pol.style.polystyle.outline = 1
    pol.style.polystyle.color = simplekml.Color.changealphaint(
        100, simplekml.Color.blue)
    pol.altitudemode = simplekml.AltitudeMode.relativetoground
    pol.extrude = 5
    pol.style.polystyle.color = '22ff0000'
    pol.style.polystyle.fill = 1
    pol.style.polystyle.outline = 1
    pol.style.linestyle.width = 20
    pol.style.linestyle.color = simplekml.Color.red
    '''
    pol = kml.newpolygon(name=hangar.description,
                         outerboundaryis=polycircle.to_kml())
    pol.style.polystyle.color =
    simplekml.Color.changealphaint(200, simplekml.Color.darksalmon)
    '''
    kml.save(path)

    return name
示例#18
0
    def setUp(self):
        csvfile = 'polycircles/test/sismos_continente2.csv'
        output_dir = 'kmls'
        if not os.path.exists(output_dir):
            os.makedirs(output_dir)
        with open(csvfile) as f:
            datafile = csv.reader(f, delimiter=',')
            quakelist = list(datafile)
        kml = simplekml.Kml()
        alpha = 100
        self.polycircles = []
        self.number_of_vertices = 36

        for quake in quakelist[1:]:
            lng = float(quake[0])  # X
            lat = float(quake[1])  # Y
            yyyy = quake[2]  # Ano
            magw = quake[25]  # mag_03

            polycircle = polycircles.Polycircle(
                latitude=lat,
                longitude=lng,
                radius=40000,
                number_of_vertices=self.number_of_vertices)
            self.polycircles.append(polycircle)
            pol = kml.newpolygon(name=yyyy,
                                 outerboundaryis=polycircle.to_kml())

            if float(magw) < 3.0:
                pol.style.polystyle.color = simplekml.Color.changealphaint(
                    alpha, simplekml.Color.lightyellow)
                pol.style.linestyle.color = simplekml.Color.lightyellow
            elif 3.0 < float(magw) < 3.5:
                pol.style.polystyle.color = simplekml.Color.changealphaint(
                    alpha, simplekml.Color.yellow)
                pol.style.linestyle.color = simplekml.Color.yellow
            elif 3.5 < float(magw) < 4.0:
                pol.style.polystyle.color = simplekml.Color.changealphaint(
                    alpha, simplekml.Color.orangered)
                pol.style.linestyle.color = simplekml.Color.orangered
            else:
                pol.style.polystyle.color = simplekml.Color.changealphaint(
                    alpha, simplekml.Color.red)
                pol.style.linestyle.color = simplekml.Color.red

        kml.save(os.path.join(output_dir, 'sismos.kml'))
示例#19
0
    def add_staypoints(self, staypoints):
        for staypoint in staypoints:
            staypoint_points = map(lambda p: p.location, staypoint.points)
            lat, long, radius = smallestenclosingcircle.make_circle(
                staypoint_points)
            western_most_point_on_circle = (lat, long - radius)
            radius_in_meters = distance.vincenty(western_most_point_on_circle,
                                                 staypoint.location).meters
            polycircle = polycircles.Polycircle(latitude=lat,
                                                longitude=long,
                                                radius=radius_in_meters,
                                                number_of_vertices=36)
            pol = self.kml.newpolygon(name="Staypoint vicinity",
                                      outerboundaryis=polycircle.to_kml())
            pol.style.polystyle.color = \
                simplekml.Color.changealphaint(30, simplekml.Color.green)

            self.kml.newpoint(name="Staypoint",
                              coords=[tuple(reversed(staypoint.location))])
示例#20
0
    def generateCylinder(self, name, description, coordinates, magnitude):
        fechaStr = datetime.datetime.fromtimestamp(
            int(description) / 1000).strftime('%Y-%m-%dT%H:%M:%S.%fZ')
        polycircle = polycircles.Polycircle(latitude=float(coordinates[0]),
                                            longitude=float(coordinates[1]),
                                            radius=float(abs(magnitude)) *
                                            20000,
                                            number_of_vertices=36)

        pol = self.kml_var.newpolygon(name=name,
                                      description=str(fechaStr),
                                      outerboundaryis=polycircle.to_kml())

        pol.altitudemode = simplekml.AltitudeMode.relativetoground
        pol.extrude = 1
        pol.style.polystyle.fill = 1
        self.addColor(pol, magnitude)

        pol.style.linestyle.width = 5000
示例#21
0
	def add_route(self, route):
		fol = geojson.FeatureCollection([], properties={"name":self.route_folder_name(route)})
		self.collection.features.append(fol)
		polycircle = polycircles.Polycircle(latitude=route.start_latitude,
											longitude=route.start_longitude,
											radius=route.start_radius,
											number_of_vertices=36)
# 		polygon = fol.newpolygon(name=route.start_label, outerboundaryis=polycircle.to_kml())
# 		polygon.style = self.circle_style
# 		
# 		polycircle = polycircles.Polycircle(latitude=route.end_latitude,
# 											longitude=route.end_longitude,
# 											radius=route.end_radius,
# 											number_of_vertices=36)
# 		polygon = fol.newpolygon(name=route.end_label, outerboundaryis=polycircle.to_kml())
# 		polygon.style = self.circle_style
		
		route.matches.sort(key=lambda x: x.duration())
		
		for match in route.matches:
			feature = geojson.Feature(	id=match.name(),
										geometry=geojson.LineString(match.coords()),
										properties={"name":match.name(), "description":match.description()})
			fol.features.append(feature)
示例#22
0
def getStationKml(feature):
    if (feature.style == None or feature.style == ""):
        style = "0000ff"

    else:
        style = feature.style[1:]

    styleName = style + feature.type

    result = ('''
    <Placemark>
    <name>%(name)s</name>
    <description>%(description)s</description>
    <styleUrl>%(style)s</styleUrl>
    %(point)s
    </Placemark>''' % {
        'name': feature.name,
        'description': feature.description,
        'point': toKml(feature.point, "Point"),
        'style': styleName
    })

    if feature.tolerance:
        toleranceCircle = polycircles.Polycircle(latitude=feature.point[1],
                                                 longitude=feature.point[0],
                                                 radius=int(feature.tolerance),
                                                 number_of_vertices=36)

        result += ('''
                    <Placemark>
                        <name>%(name)s</name>
                        <styleUrl>%(style)s</styleUrl>
                        <LineString>
                            <tessellate>1</tessellate>
                             %(geom)s
                    </Placemark>''' % {
            'name': feature.name,
            'style': "tolerance" + feature.style[1:],
            'geom': toleranceKmlFormatter(toleranceCircle)
        })

    if feature.boundary:
        boundaryCircle = polycircles.Polycircle(latitude=feature.point[1],
                                                longitude=feature.point[0],
                                                radius=int(feature.boundary),
                                                number_of_vertices=36)

        result += ('''
            <Placemark>
                <name>%(name)s</name>
                <styleUrl>%(style)s</styleUrl>
                <MultiGeometry>
                    <LineString>
                        <tessellate>1</tessellate>
                        %(geom)s
            </Placemark>''' % {
            'name': feature.name,
            'style': "boundary" + feature.style[1:],
            'geom': boundaryKmlFormatter(boundaryCircle)
        })

    return result
示例#23
0
 def test_less_than_3_vertices_no_1(self):
     polycircle = polycircles.Polycircle(latitude=30,
                                         longitude=30,
                                         radius=100,
                                         number_of_vertices=2)
示例#24
0
 def test_erroneous_longitude_2(self):
     polycircle = polycircles.Polycircle(latitude=30,
                                         longitude=200,
                                         radius=100)
示例#25
0
def make_kml(tupple_lists, conditions_tupple_list, rng, header):
    kml = simplekml.Kml()

    for tupple_list in tupple_lists:
        for condition in conditions_tupple_list:
            if tupple_list[3] > condition[0] and tupple_list[3] <= condition[1]:
                polycircle = polycircles.Polycircle(latitude=tupple_list[1],
                                                    longitude=tupple_list[2],
                                                    radius=rng * 1000,
                                                    number_of_vertices=36)
                pol = kml.newpolygon(name=tupple_list[0],
                                     outerboundaryis=polycircle.to_kml())
                pnt = kml.newpoint()
                pnt.name = tupple_list[0]
                pnt.description = f"{header} is {tupple_list[3]}"
                pnt.coords = [(tupple_list[2], tupple_list[1])]
                if condition[2] == 'yellow':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff02e7ff")
                elif condition[2] == 'orange':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff026df7")
                elif condition[2] == 'dark_orange':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff0151b8")
                elif condition[2] == 'green':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff18bd1e")
                elif condition[2] == 'light_green':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff40f686")
                elif condition[2] == 'dark_green':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff038e5c")
                elif condition[2] == 'blue':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ffbd2b18")
                elif condition[2] == 'light_blue':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ffd77903")
                elif condition[2] == 'dark_blue':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff5c0b0a")
                elif condition[2] == 'light_purple':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "fffb58a8")
                elif condition[2] == 'purple':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "fff7278d")
                elif condition[2] == 'pink':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ffd400ff")
                elif condition[2] == 'dark_red':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff480595")
                elif condition[2] == 'red':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff0c0cff")
                elif condition[2] == 'black':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff000000")
                elif condition[2] == 'gray':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff7a7a7d")
                elif condition[2] == 'white':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ffffffff")

                elif condition[2] == 'brown':
                    pol.style.polystyle.color = \
                    simplekml.Color.changealphaint(200, "ff214365")
        # if(tupple_list[3] <= 30000000 and tupple_list[3] > 20000000):
        #     polycircle = polycircles.Polycircle(latitude=tupple_list[1],
        #                                 longitude=tupple_list[2],
        #                                 radius=range * 10000,
        #                                 number_of_vertices=36)
        #     pol = kml.newpolygon(name=tupple_list[0], outerboundaryis=polycircle.to_kml())
        #     pol.style.polystyle.color = \
        #             simplekml.Color.changealphaint(200, simplekml.Color.red)

        # elif(tupple_list[3] <= 20000000 and tupple_list[3] > 10000000):

        #     print(counter)
        #     polycircle = polycircles.Polycircle(latitude=tupple_list[1],
        #                                 longitude=tupple_list[2],
        #                                 radius=range * 10000,
        #                                 number_of_vertices=36)
        #     pol = kml.newpolygon(name=tupple_list[0], outerboundaryis=polycircle.to_kml())
        #     pol.style.polystyle.color = \
        #             simplekml.Color.changealphaint(200, simplekml.Color.yellow)
        # elif(tupple_list[3] <= 10000000 and tupple_list[3] > 1000000):
        #     polycircle = polycircles.Polycircle(latitude=tupple_list[1],
        #                                 longitude=tupple_list[2],
        #                                 radius=range * 10000,
        #                                 number_of_vertices=36)
        #     pol = kml.newpolygon(name=tupple_list[0], outerboundaryis=polycircle.to_kml())
        #     pol.style.polystyle.color = \
        #             simplekml.Color.changealphaint(200, simplekml.Color.orange)
        # elif(tupple_list[3] <= 1000000):
        #     polycircle = polycircles.Polycircle(latitude=tupple_list[1],
        #                                 longitude=tupple_list[2],
        #                                 radius=range * 10000,
        #                                 number_of_vertices=36)
        #     pol = kml.newpolygon(name=tupple_list[0], outerboundaryis=polycircle.to_kml())
        #     pol.style.polystyle.color = \
        #             simplekml.Color.changealphaint(200, simplekml.Color.green)
        # else:
        #     polycircle = polycircles.Polycircle(latitude=tupple_list[1],
        #                                 longitude=tupple_list[2],
        #                                 radius=range * 1000,
        #                                 number_of_vertices=36)
        #     pol = kml.newpolygon(name=tupple_list[0], outerboundaryis=polycircle.to_kml())
        #     pol.style.polystyle.color = \
        #             simplekml.Color.changealphaint(200, simplekml.Color.black)
    kml.save(f"{header}.kml")
示例#26
0
# Create the file
kml = simplekml.Kml()

depart_times = defaultdict(list)
arrive_times = defaultdict(list)

for icao in timestamp.keys():
    ls = kml.newlinestring(name=icao)

    T = len(timestamp[icao])
    for t in range(T):
        ls.coords.addcoordinates([(longit[icao][t], lat[icao][t])])
        if t > 0 and in_airport[icao][t] != in_airport[icao][t - 1]:
            if in_airport[icao][t - 1]:
                depart_times[icao].append(timestamp[icao][t])
            else:
                arrive_times[icao].append(timestamp[icao][t])

print(arrive_times)
print(depart_times)

auck_air_circle = polycircles.Polycircle(latitude=auck_air_lat,
                                         longitude=auck_air_long,
                                         radius=auck_air_rad,
                                         number_of_vertices=36)
auck_air = kml.newpolygon(name="Auckland Airport",
                          outerboundaryis=auck_air_circle.to_kml())
auck_air.style.polystyle.color = simplekml.Color.changealphaint(
    200, simplekml.Color.green)
kml.save('fooline.kml')
示例#27
0
    def generateCylinder(self, shape, value, coordinates, flag):
        print("generateCylinder")
        latitude = coordinates['lat']
        longitude = coordinates['lng']
        radius = 4200
        vertices = 200
        multiplier = 150.0

        if "," in value:
            value = value.replace(",", ".")
            value = int(float(value))
        else:
            value = int(value)

        if flag == "first":
            value = 120.0

        elif flag == "second":
            latitude = latitude - float(value_separation)
            longitude = longitude - float(value_separation)
            value = 90.0

        elif flag == "third":
            latitude = latitude + float(value_separation)
            longitude = longitude + float(value_separation)
            value = 60.0

        elif flag == "golden":
            latitude = latitude - value_lat_center_medal
            longitude = longitude + value_lng_center_medal
            radius = 1000
            vertices = 100
            print("value gold ", value)

        elif flag == "silver":
            latitude = latitude - (value_lat_center_medal + 0.0180)
            longitude = longitude + (value_lng_center_medal - 0.0230)
            radius = 1000
            vertices = 100
            print("value silver ", value)

        elif flag == "bronze":
            latitude = latitude - (value_lat_center_medal - 0.0180)
            longitude = longitude + (value_lng_center_medal + 0.0230)
            radius = 1000
            vertices = 100
            print("value bronze ", value)

        polycircle = polycircles.Polycircle(latitude, longitude, radius,
                                            vertices)

        latloncircle = polycircle.to_lon_lat()
        latlonaltcircle = []
        polygon_circle = []

        # 'Pal' cap a dalt i cercle al final del pal (a dalt de tot)
        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                (value * multiplier) + 10.0,
            )
            latlonaltcircle.append(tup)

        # Cilindre (interior / exterior)
        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                value * multiplier,
            )
            latlonaltcircle.append(tup)

            tup = (
                element[0],
                element[1],
                0,
            )
            latlonaltcircle.append(tup)

        #Un altre cilindre (interior / exterior ?)
        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                0,
            )
            latlonaltcircle.append(tup)

            tup = (
                element[0],
                element[1],
                value * multiplier,
            )
            latlonaltcircle.append(tup)

        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                0,
            )
            latlonaltcircle.append(tup)

        pol = shape.newpolygon()
        pol.outerboundaryis = latlonaltcircle

        pol.altitudemode = simplekml.AltitudeMode.absolute
        pol.extrude = 5
        pol.style.linestyle.width = 5000

        polygon_circle.append(polycircle)
        #latlonaltcircle = []

        # Cyrcle (tapadera del cilindre) de dalt de tot (interior i exterior)
        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                (value * multiplier) + 20.0,
            )
            latlonaltcircle.append(tup)

        pol = shape.newpolygon()

        pol.outerboundaryis = latlonaltcircle

        pol.altitudemode = simplekml.AltitudeMode.absolute
        pol.extrude = 5
        self.addColor(pol, flag)

        pol.style.linestyle.width = 5000

        polygon_circle.append(polycircle)

        coord_to_kml = ""

        for element in latlonaltcircle:
            if coord_to_kml == str(""):
                coord_to_kml = coord_to_kml + str(element[0]) + "," + str(
                    element[1]) + "," + str(element[2])

            else:
                coord_to_kml = coord_to_kml + " " + str(
                    element[0]) + "," + str(element[1]) + "," + str(element[2])

        return coord_to_kml
示例#28
0
    def generateCylinder(self, shape, temp, coordinates, flag):
        if flag == 'min':
            polycircle = polycircles.Polycircle(
                latitude=float(coordinates['lat']) - 0.025,
                longitude=float(coordinates['lng']) - 0.025,
                radius=1000,
                number_of_vertices=100)
        elif flag == 'med':
            polycircle = polycircles.Polycircle(
                latitude=float(coordinates['lat']),
                longitude=float(coordinates['lng']),
                radius=1000,
                number_of_vertices=100)
        elif flag == 'max':
            polycircle = polycircles.Polycircle(
                latitude=float(coordinates['lat']) + 0.025,
                longitude=float(coordinates['lng']) + 0.025,
                radius=1000,
                number_of_vertices=100)

        latloncircle = polycircle.to_lon_lat()
        latlonaltcircle = []
        polygon_circle = []

        multiplier = 2000
        temperature = int(temp)

        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                (temperature * multiplier) + 10,
            )
            latlonaltcircle.append(tup)

        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                temperature * multiplier,
            )
            latlonaltcircle.append(tup)
            tup = (
                element[0],
                element[1],
                0,
            )
            latlonaltcircle.append(tup)

        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                0,
            )
            latlonaltcircle.append(tup)
            tup = (
                element[0],
                element[1],
                temperature * multiplier,
            )
            latlonaltcircle.append(tup)

        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                0,
            )
            latlonaltcircle.append(tup)

        pol = shape.newpolygon()
        pol.outerboundaryis = latlonaltcircle

        pol.altitudemode = simplekml.AltitudeMode.relativetoground
        pol.extrude = 5
        pol.style.linestyle.width = 5000

        polygon_circle.append(polycircle)

        latlonaltcircle = []

        for element in latloncircle:
            tup = (
                element[0],
                element[1],
                (temperature * multiplier) + 20,
            )
            latlonaltcircle.append(tup)

        pol = shape.newpolygon()
        pol.outerboundaryis = latlonaltcircle

        pol.altitudemode = simplekml.AltitudeMode.relativetoground
        pol.extrude = 5
        self.addColor(pol, flag)

        pol.style.linestyle.width = 5000

        polygon_circle.append(polycircle)
示例#29
0
def step_impl(context):
    context.polycircle = \
        polycircles.Polycircle(float(context.latitude),
                               float(context.longitude),
                               float(context.radius),
                               int(context.num_vertices))
示例#30
0
    def createKml(self, jsonData, numberObtained):
        kml = simplekml.Kml()

        tour = kml.newgxtour(name="LastWeekEarthquakesTour")
        playlist = tour.newgxplaylist()

        balloonDuration = 1
        flyToDuration = 3
        if numberObtained > 1000:
            balloonDuration = numberObtained / 1000

        self.stdout.write("Default duration: " + str(balloonDuration))
        earthquakeNumber = 1
        for row in jsonData:
            if earthquakeNumber > 666:
                break

            self.stdout.write(str(earthquakeNumber))

            place = row["place"]
            latitude = row["latitude"]
            longitude = row["longitude"]
            magnitude = row["magnitude"]
            try:
                geoJson = replaceJsonString(str(row["geojson"]))
                infowindow = self.populateInfoWindow(row, geoJson)
            except JSONDecodeError:
                self.stdout.write(self.style.ERROR('Error decoding json'))
                self.stdout.write(str(row["geojson"]))
                continue

            try:
                if magnitude is not None:
                    absMagnitude = abs(float(magnitude))
                    color = simplekml.Color.grey
                    if absMagnitude <= 2:
                        color = simplekml.Color.green
                    elif 2 < absMagnitude <= 5:
                        color = simplekml.Color.orange
                    elif absMagnitude > 5:
                        color = simplekml.Color.red

                    playlist.newgxwait(gxduration=3 * balloonDuration)

                    polycircle = polycircles.Polycircle(latitude=latitude,
                                                        longitude=longitude,
                                                        radius=2000 *
                                                        absMagnitude,
                                                        number_of_vertices=100)

                    pol = kml.newpolygon(name="",
                                         description=infowindow,
                                         outerboundaryis=polycircle.to_kml())
                    pol.style.polystyle.color = color
                    pol.style.polystyle.fill = 0
                    pol.style.polystyle.outline = 1
                    pol.style.linestyle.color = color
                    pol.style.linestyle.width = 10
                    pol.style.balloonstyle.bgcolor = simplekml.Color.lightblue
                    pol.style.balloonstyle.text = "$[description]"

                    pol.visibility = 0
                    ''' Fly To the atmosphere '''
                    flyto = playlist.newgxflyto(
                        gxduration=flyToDuration,
                        gxflytomode=simplekml.GxFlyToMode.smooth)
                    flyto.camera.longitude = longitude
                    flyto.camera.latitude = latitude
                    flyto.camera.altitude = 15000000
                    flyto.camera.range = 15000000
                    flyto.camera.tilt = 0
                    playlist.newgxwait(gxduration=flyToDuration)
                    ''' Go Back To the point '''
                    flyto = playlist.newgxflyto(
                        gxduration=flyToDuration,
                        gxflytomode=simplekml.GxFlyToMode.smooth)
                    flyto.camera.longitude = longitude
                    flyto.camera.latitude = latitude
                    flyto.camera.altitude = 100000
                    flyto.camera.range = 100000
                    flyto.camera.tilt = 0
                    playlist.newgxwait(gxduration=flyToDuration)

                    self.simulateEarthquake(playlist, latitude, longitude,
                                            absMagnitude)

                    animatedupdateshow = playlist.newgxanimatedupdate(
                        gxduration=balloonDuration / 10)
                    animatedupdateshow.update.change = '<Placemark targetId="{0}">' \
                                                       '<visibility>1</visibility></Placemark>' \
                        .format(pol.placemark.id)

                    for i in range(1, 11):
                        polycircleAux = polycircles.Polycircle(
                            latitude=latitude,
                            longitude=longitude,
                            radius=(200 * i) * absMagnitude,
                            number_of_vertices=100)

                        polAux = kml.newpolygon(
                            name=place, outerboundaryis=polycircleAux.to_kml())
                        polAux.style.polystyle.color = color
                        polAux.style.polystyle.fill = 1
                        polAux.style.polystyle.outline = 1
                        polAux.style.linestyle.color = color
                        polAux.style.linestyle.width = 1
                        polAux.visibility = 0
                        polAux.style.balloonstyle.displaymode = simplekml.DisplayMode.hide

                        animatedupdateshow = playlist.newgxanimatedupdate(
                            gxduration=balloonDuration / 10)
                        animatedupdateshow.update.change = '<Placemark targetId="{0}">' \
                                                           '<visibility>1</visibility></Placemark>' \
                            .format(polAux.placemark.id)

                        animatedupdatehide = playlist.newgxanimatedupdate(
                            gxduration=balloonDuration / 10)
                        animatedupdatehide.update.change = '<Placemark targetId="{0}">' \
                                                           '<visibility>0</visibility></Placemark>' \
                            .format(polAux.placemark.id)

                        playlist.newgxwait(gxduration=balloonDuration / 10)

                    animatedupdateshow = playlist.newgxanimatedupdate(
                        gxduration=balloonDuration * 2)
                    animatedupdateshow.update.change = '<Placemark targetId="{0}"><visibility>1</visibility>' \
                                                       '<gx:balloonVisibility>1</gx:balloonVisibility></Placemark>' \
                        .format(pol.placemark.id)

                    playlist.newgxwait(gxduration=10)

                    animatedupdatehide = playlist.newgxanimatedupdate(
                        gxduration=balloonDuration * 2)
                    animatedupdatehide.update.change = '<Placemark targetId="{0}">' \
                                                       '<gx:balloonVisibility>0</gx:balloonVisibility></Placemark>' \
                        .format(pol.placemark.id)

                    animatedupdateshow = playlist.newgxanimatedupdate(
                        gxduration=balloonDuration / 10)
                    animatedupdateshow.update.change = '<Placemark targetId="{0}">' \
                                                       '<visibility>1</visibility></Placemark>' \
                        .format(pol.placemark.id)
            except ValueError:
                kml.newpoint(name=place,
                             description=infowindow,
                             coords=[(longitude, latitude)])
                self.stdout.write(str(absMagnitude))

            earthquakeNumber += 1

        playlist.newgxwait(gxduration=3 * balloonDuration)

        fileName = "lastWeekEarthquakes.kmz"
        currentDir = os.getcwd()
        dir1 = os.path.join(currentDir, "static/demos")
        dirPath2 = os.path.join(dir1, fileName)
        self.stdout.write("Saving kml: " + str(dirPath2))
        if os.path.exists(dirPath2):
            os.remove(dirPath2)
        kml.savekmz(dirPath2, format=False)