本文整理汇总了Python中方法的典型用法代码示例。如果您正苦于以下问题:Python 方法的具体用法?Python 怎么用?Python 使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在模块的用法示例。
在下文中一共展示了方法的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: saveimageWithMask
点赞 9
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def saveimageWithMask(img, outname, mask_poly):
dstimg = (img)
for mask in mask_poly:
bound =
if (len(bound) < 4):
continue
xmin, ymin, xmax, ymax = bound[0], bound[1], bound[2], bound[3]
for x in range(int(xmin), int(xmax)):
for y in range(int(ymin), int(ymax)):
point = (x, y)
if (mask):
#print('withing')
dstimg[int(y)][int(x)] = 0
(outname, dstimg)
开发者ID:ringringyi,项目名称:DOTA_models,代码行数:19,
示例2: removeIgnoredPointsRects
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def removeIgnoredPointsRects(rects,polyList):
ridxs = list(range(len(rects)))
for ridx in range(len(rects)):
points = rects[ridx]["annopoints"][0]["point"]
pidxs = list(range(len(points)))
for pidx in range(len(points)):
pt = (points[pidx]["x"][0], points[pidx]["y"][0])
bIgnore = False
for poidx in range(len(polyList)):
poly = polyList[poidx]
if ((pt)):
bIgnore = True
break
if (bIgnore):
(pidx)
points = [points[pidx] for pidx in pidxs]
if (len(points) > 0):
rects[ridx]["annopoints"][0]["point"] = points
else:
(ridx)
rects = [rects[ridx] for ridx in ridxs]
return rects
开发者ID:facebookresearch,项目名称:PoseWarper,代码行数:25,
示例3: removeIgnoredPoints
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def removeIgnoredPoints(gtFramesAll,prFramesAll):
imgidxs = []
for imgidx in range(len(gtFramesAll)):
if ("ignore_regions" in gtFramesAll[imgidx].keys() and
len(gtFramesAll[imgidx]["ignore_regions"]) > 0):
regions = gtFramesAll[imgidx]["ignore_regions"]
polyList = []
for ridx in range(len(regions)):
points = regions[ridx]["point"]
pointList = []
for pidx in range(len(points)):
pt = (points[pidx]["x"][0], points[pidx]["y"][0])
pointList += [pt]
poly = ([[, ] for p in pointList])
polyList += [poly]
rects = prFramesAll[imgidx]["annorect"]
prFramesAll[imgidx]["annorect"] = removeIgnoredPointsRects(rects,polyList)
rects = gtFramesAll[imgidx]["annorect"]
gtFramesAll[imgidx]["annorect"] = removeIgnoredPointsRects(rects,polyList)
return gtFramesAll, prFramesAll
开发者ID:facebookresearch,项目名称:PoseWarper,代码行数:25,
示例4: test_vector_concurrent
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def test_vector_concurrent():
def _work(i):
point, = r1.iter_data(None)
return point
ds = (max_active=4)
meta = dict(
type='point',
)
p = (4)
with ds.acreate_vector('/tmp/', **meta).delete as r1:
pt = ([42, 45])
r1.insert_data(pt)
()
points = list((_work, range(1000)))
assert all(p == pt for p in points)
assert (ds._back.idle_count(), ds._back.used_count(), ds.active_count) == (4, 0, 4)
assert (ds._back.idle_count(r1._back.uid), ds._back.used_count(r1._back.uid), r1.active_count, ) == (4, 0, 4, True)
()
开发者ID:airware,项目名称:buzzard,代码行数:25,
示例5: test_points
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def test_points(fps1px):
"""Test points at 's points of interest"""
fps = fps1px
assert fpeq(
,
((*)),
((*)),
((*)),
((*)),
)
assert fpeq(
,
((*)),
)
assert fpeq(
,
((*)),
((*)),
)
assert fpeq(
,
((*)),
((*)),
)
开发者ID:airware,项目名称:buzzard,代码行数:26,
示例6: _any_geom_to_shapely
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def _any_geom_to_shapely(geom):
"""Any geom to shapely object. Points should have homogeneous dimensions size."""
if isinstance(geom, (, , , )):
return geom
if isinstance(geom, dict):
return (geom['geometry'])
if isinstance(geom, ):
geom = (geom)
if == 1:
return (())
elif == 2:
return (())
elif == 3:
return (*())
elif == 4:
return ([
(*poly)
for poly in ()
])
assert False
开发者ID:airware,项目名称:buzzard,代码行数:22,
示例7: get_autocomplete
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def get_autocomplete(
query: QueryParams = Depends(QueryParams), extra: ExtraParams = Body(ExtraParams())
):
async def get_intentions():
if not or not in nlu_allowed_languages:
return None
focus = None
if and :
focus = Point(, )
return await nlu_client.get_intentions(text=, lang=, focus=focus)
autocomplete_response, intentions = await (
bragi_client.autocomplete(query, extra), get_intentions()
)
if intentions is not None:
autocomplete_response["intentions"] = intentions
return autocomplete_response
开发者ID:QwantResearch,项目名称:idunn,代码行数:21,
示例8: convert_pix_lstring_to_geo
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def convert_pix_lstring_to_geo(wkt_lstring, im_file):
'''Convert linestring in pixel coords to geo coords'''
shape = wkt_lstring # (lstring)
x_pixs, y_pixs =
coords_latlon = []
coords_utm = []
for (x, y) in zip(x_pixs, y_pixs):
lon, lat = apls_utils.pixelToGeoCoord(x, y, im_file)
[utm_east, utm_north, utm_zone, utm_letter] = utm.from_latlon(lat, lon)
coords_utm.append([utm_east, utm_north])
coords_latlon.append([lon, lat])
lstring_latlon = LineString([Point(z) for z in coords_latlon])
lstring_utm = LineString([Point(z) for z in coords_utm])
return lstring_latlon, lstring_utm, utm_zone, utm_letter
###############################################################################
开发者ID:CosmiQ,项目名称:apls,代码行数:21,
示例9: make_record
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def make_record(properties: Dict[str, type], load_num: str, tree_row: Dict[str, str], point: Dict[str, str]):
"""
shp 파일에 입력할 수목 정보 생성
:return:
"""
# 레코드 기본 구조
record = {'properties': {"탐방로": load_num}, 'geometry': None}
# 수목 정보 입력
for key, value in zip(tree_row.keys(), tree_row.values()):
atr_type = properties[key]
# 속성 타입이 int인데 속성값이 ''일 경우 0으로 입력
record['properties'][key] = atr_type(value) if value or atr_type is str else 0
# 위치정보 입력
record['properties']['경도'] = point['경도']
record['properties']['위도'] = point['위도']
record['properties']['고도'] = point['고도']
record['geometry'] = mapping(Point(point['경도'], point['위도']))
return record
开发者ID:awskrug,项目名称:handson-labs-2018,代码行数:21,
示例10: test_filter_heads
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def test_filter_heads(self):
f = get_demo_file('')
coords = read_svgcoords(f)
polygon = (coords)
hidx = ([3, 9, 80, 92, 108, 116, 170, len(coords)-12])
heads = [(*c) for c in coords[hidx]]
heads_height = ([200, 210, 1000., 900, 1200, 1400, 1300, 250])
radius = 25
_heads, _ = centerlines._filter_heads(heads, heads_height, radius,
polygon)
_headsi, _ = centerlines._filter_heads(heads[::-1],
heads_height[::-1],
radius, polygon)
(_heads, _headsi[::-1])
(_heads, [heads[h] for h in [2, 5, 6, 7]])
开发者ID:OGGM,项目名称:oggm,代码行数:22,
示例11: _projection_point
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def _projection_point(centerline, point):
"""Projects a point on a line and returns the closest integer point
guaranteed to be on the line, and guaranteed to be far enough from the
head and tail.
Parameters
----------
centerline : Centerline instance
point : Shapely Point geometry
Returns
-------
(flow_point, ind_closest): Shapely Point and indice in the line
"""
prdis = (point, normalized=False)
ind_closest = ((centerline.dis_on_line - prdis)).item()
flow_point = ([int(ind_closest)])
return flow_point
开发者ID:OGGM,项目名称:oggm,代码行数:20,
示例12: main
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def main(filename="", img_width=2000, img_height=2000, palette=(), count=50):
ims = (cairo.FORMAT_ARGB32, img_width, img_height)
ims.set_fallback_resolution(300.0, 300.0)
ctx = (ims)
# Background
(0, 0, img_width, img_height)
ctx.set_source_rgb(*palettes.hex_to_tuple(palette['background']))
()
existing_shapes = Point([(0, 0), (0, 0)])
for i in range(count):
print("Making disc {}".format(i))
existing_shapes = sphere(ctx, (palette['colors']), img_width, img_height, existing_shapes)
ims.write_to_png(filename)
开发者ID:anaulin,项目名称:generative-art,代码行数:18,
示例13: main
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def main(filename="", img_width=2000, img_height=2000, palette=(), count=50):
ims = (cairo.FORMAT_ARGB32, img_width, img_height)
ims.set_fallback_resolution(300.0, 300.0)
ctx = (ims)
# Background
(0, 0, img_width, img_height)
ctx.set_source_rgb(*palettes.hex_to_tuple(palette['background']))
()
existing_shapes = Point([(0, 0), (0, 0)])
for i in range(count):
print("Making sphere {}".format(i))
existing_shapes = sphere(ctx, (palette['colors']), img_width, img_height, existing_shapes)
ims.write_to_png(filename)
开发者ID:anaulin,项目名称:generative-art,代码行数:18,
示例14: main
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def main(filename="", img_width=IMG_WIDTH, img_height=IMG_HEIGHT, palette=(), count=50, line_width=80):
ims = (cairo.FORMAT_ARGB32, img_width, img_height)
ims.set_fallback_resolution(300.0, 300.0)
ctx = (ims)
# Background
(0, 0, img_width, img_height)
ctx.set_source_rgb(*palettes.hex_to_tuple(palette['background']))
()
existing_shapes = Point([(0, 0), (0, 0)])
for i in range(count):
print("Making bar {}".format(i))
existing_shapes = bar(ctx, (
palette['colors']), line_width, img_width, img_height, existing_shapes)
ims.write_to_png(filename)
开发者ID:anaulin,项目名称:generative-art,代码行数:19,
示例15: nearest_neighbor_within
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def nearest_neighbor_within(others, point, max_distance):
"""Find nearest point among others up to a maximum distance.
Args:
others: a list of Points or a MultiPoint
point: a Point
max_distance: maximum distance to search for the nearest neighbor
Returns:
A shapely Point if one is within max_distance, None otherwise
"""
search_region = (max_distance)
interesting_points = search_region.intersection(MultiPoint(others))
if not interesting_points:
closest_point = None
elif isinstance(interesting_points, Point):
closest_point = interesting_points
else:
distances = [(ip) for ip in interesting_points
if (ip) > 0]
closest_point = interesting_points[(min(distances))]
return closest_point
开发者ID:architecture-building-systems,项目名称:CityEnergyAnalyst,代码行数:26,
示例16: find_isolated_endpoints
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def find_isolated_endpoints(lines):
"""Find endpoints of lines that don't touch another line.
Args:
lines: a list of LineStrings or a MultiLineString
Returns:
A list of line end Points that don't touch any other line of lines
"""
isolated_endpoints = []
for i, line in enumerate(lines):
other_lines = lines[:i] + lines[i + 1:]
for q in [0, -1]:
endpoint = Point([q])
if any((another_line)
for another_line in other_lines):
continue
else:
isolated_endpoints.append(endpoint)
return isolated_endpoints
开发者ID:architecture-building-systems,项目名称:CityEnergyAnalyst,代码行数:23,
示例17: test_cover_geometry_empty_geoms
点赞 6
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def test_cover_geometry_empty_geoms(tiler):
"""Empty geometries should return empty iterators."""
assert not cover_geometry(tiler, (), 0) == True
assert not cover_geometry(tiler, (), [0, 1]) == True
assert not cover_geometry(tiler, (), 0) == True
assert not cover_geometry(tiler, (), [0, 1]) == True
assert not cover_geometry(tiler, (), 0) == True
assert not cover_geometry(tiler, (), [0, 1]) == True
assert not cover_geometry(tiler, (), 0) == True
assert not cover_geometry(tiler, (), [0, 1]) == True
assert not cover_geometry(tiler, (), 0) == True
assert not cover_geometry(tiler, (), [0, 1]) == True
assert not cover_geometry(tiler, (), 0) == True
assert not cover_geometry(tiler, (), [0, 1]) == True
assert not cover_geometry(tiler, (), 0) == True
assert not cover_geometry(tiler, (), [0, 1]) == True
开发者ID:DigitalGlobe,项目名称:tiletanic,代码行数:18,
示例18: toGDF
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def toGDF(data):
data = (data)
data = (
data, geometry=[Point(xy) for xy in zip(, )]
)
data = (["latitude", "longitude"], axis=1)
return data
开发者ID:metro-ontime,项目名称:performance_tracker,代码行数:9,
示例19: cut_in_two
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def cut_in_two(line):
"""
Cuts input line into two lines of equal length
Parameters
----------
line :
input line
Returns
----------
list (LineString, LineString, Point)
two lines and the middle point cutting input line
"""
from import Point, LineString
# Get final distance value
distance = /2
# Cuts a line in two at a distance from its starting point
if distance <= 0.0 or distance >= :
return [LineString(line)]
coords = list()
for i, p in enumerate(coords):
pd = (Point(p))
if pd == distance:
return [LineString(coords[:i+1]), LineString(coords[i:]), pd]
if pd > distance:
cp = (distance)
return [ LineString(coords[:i] + [(, )]), LineString([(, )] + coords[i:]), cp]
开发者ID:lgervasoni,项目名称:urbansprawl,代码行数:30,
示例20: get_indices_grid
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def get_indices_grid(df_osm_built, df_osm_building_parts, df_osm_pois, step=100):
"""
Creates an input geodataframe with points sampled in a regular grid
Parameters
----------
df_osm_built :
OSM processed buildings
df_osm_building_parts :
OSM processed building parts
df_osm_pois :
OSM processed points of interest
step : int
step to sample the regular grid in meters
Returns
----------
regular grid
"""
# Get bounding box
west, south, east, north = ( [ df_osm_built, df_osm_building_parts, df_osm_pois ], sort=False ).total_bounds
# Create indices
df_indices = ( [ Point(i,j) for i in (west, east, step) for j in (south, north, step) ], columns=["geometry"] )
# Set projection
df_indices.crs = df_osm_built.crs
return df_indices
开发者ID:lgervasoni,项目名称:urbansprawl,代码行数:29,
示例21: within_area
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def within_area(flight, area_geojson_location):
if not area_geojson_location:
return True
try:
with open((area_geojson_location), 'r') as geo:
bounds = (())["features"][0]["geometry"]
flight_loc = Point(("lon", 0), ("lat", 0))
return shape(bounds).contains(flight_loc)
except IOError:
print("couldn't find geojson file at %s, ignoring" % area_geojson_location, file=stderr)
return True
开发者ID:jeremybmerrill,项目名称:flyover,代码行数:13,
示例22: _exterior_coords_iterator
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def _exterior_coords_iterator(geom):
if isinstance(geom, ):
yield (geom)[None, ...]
elif isinstance(geom, ):
yield ()
elif isinstance(geom, ):
yield (geom)
elif isinstance(geom, ):
for part in geom:
for coords in _exterior_coords_iterator(part):
yield coords
else:
assert False
开发者ID:airware,项目名称:buzzard,代码行数:15,
示例23: test_iter_data_fields_behavior
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def test_iter_data_fields_behavior(path):
ds = ()
with ds.acreate_vector(path, fields=[], type='point').remove as v:
pt0, pt1 = (1, 1), (2, 2)
v.insert_data(pt0)
v.insert_data(pt1)
assert list(v.iter_data(None)) == [
pt0, pt1
]
assert list(v.iter_data(-1)) == [
pt0, pt1
]
assert list(v.iter_data('')) == [
(pt0,), (pt1,)
]
assert list(v.iter_data([])) == [
(pt0,), (pt1,)
]
assert list(v.iter_data([-1])) == [
(pt0,), (pt1,)
]
with ds.acreate_vector(path, fields=[dict(name='toto', type=int)], type='point').remove as v:
pt0, pt1 = (1, 1), (2, 2)
v.insert_data(pt0, [42])
v.insert_data(pt1, [43])
assert list(v.iter_data(None)) == [
pt0, pt1
]
assert list(v.iter_data(-1)) == [
(pt0, 42), (pt1, 43)
]
assert list(v.iter_data('')) == [
(pt0,), (pt1,)
]
assert list(v.iter_data([])) == [
(pt0,), (pt1,)
]
assert list(v.iter_data([-1])) == [
(pt0, 42), (pt1, 43)
]
开发者ID:airware,项目名称:buzzard,代码行数:42,
示例24: ReadHillslopeTraces
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def ReadHillslopeTraces(DataDirectory, FilenamePrefix):
"""
This function reads in the file with the suffix '_hillslope_traces.csv'
and creates a geopandas GeoDataFrame
Args:
DataDirectory: the data directory
FilenamePrefix: the file name prefix
Returns:
geopandas GeoDataFrame with data from the csv file spatially organised
Author: MDH
"""
# get the csv filename
Suffix = '_hillslope_traces'
Extension = '.csv'
ReadFilename = DataDirectory+FilenamePrefix+Suffix+Extension
# read in the dataframe using pandas and convert to geopandas geodataframe
df = pd.read_csv(ReadFilename)
geometry = [Point(xy) for xy in zip(, )]
df = (['Easting','Northing','Longitude', 'Latitude'], axis=1)
crs = {'init': 'epsg:4326'}
geo_df = GeoDataFrame(df, crs=crs, geometry=geometry)
return geo_df
开发者ID:LSDtopotools,项目名称:LSDMappingTools,代码行数:30,
示例25: GetBasinCentroids
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def GetBasinCentroids(DataDirectory, basins_fname):
"""
This function takes in the raster of basins and returns a dict where the
key is the basin key and the value is the shapely point of the centroid
In most cases the "basin key" is actually the junction index: it comes
from the basins labeled within the basin raster, which is output with
junction indices rather than junction keys
Args:
DataDirectory (str): the data directory with the basin raster
fname_prefix (str): the prefix for the DEM
Returns:
dict of centroid points
Author: FJC
"""
# get the basin polygons
BasinDict = GetBasinOutlines(DataDirectory, basins_fname)
# get the centroids
CentroidDict = {}
for basin_key, basin in ():
CentroidDict[basin_key] = Point()
return CentroidDict
开发者ID:LSDtopotools,项目名称:LSDMappingTools,代码行数:29,
示例26: GetPointWithinBasins
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def GetPointWithinBasins(DataDirectory,basins_fname):
"""
This function takes in the raster of basin and returns a dict where the
key is the basin key and the value is a shapely point that is representative
of the basin (guaranteed to be within the polygon)
In most cases the "basin key" is actually the junction index: it comes
from the basins labeled within the basin raster, which is output with
junction indices rather than junction keys
Args:
DataDirectory (str): the data directory with the basin raster
fname_prefix (str): the prefix for the DEM
Returns:
dict of representative points
Author: FJC
"""
# get the basin polygons
BasinDict = GetBasinOutlines(DataDirectory, basins_fname)
# get the centroids
PointDict = {}
for basin_key, basin in ():
PointDict[basin_key] = Point(basin.representative_point())
return PointDict
开发者ID:LSDtopotools,项目名称:LSDMappingTools,代码行数:30,
示例27: GetPointsWithinMultipleBasins
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def GetPointsWithinMultipleBasins(DataDirectory,basins_fname):
"""
This function takes in rasters of basins and returns a dict where the
key is the basin key and the value is a shapely point that is representative
of the basin (guaranteed to be within the polygon)
In most cases the "basin key" is actually the junction index: it comes
from the basins labeled within the basin raster, which is output with
junction indices rather than junction keys
Args:
DataDirectory (str): the data directory with the basin raster
fname_prefix (str): the prefix for the DEM
Returns:
dict of representative points
Author: FJC
"""
# get the basin polygons
BasinDict = GetMultipleBasinOutlines(DataDirectory)
print("BASIN DICT IS")
print(BasinDict)
# get the centroids
PointDict = {}
for basin_key, basin in ():
PointDict[basin_key] = Point(basin.representative_point())
print("POINT DICT IS")
print(PointDict)
return PointDict
开发者ID:LSDtopotools,项目名称:LSDMappingTools,代码行数:35,
示例28: ReadTerraceData
点赞 5
# 需要导入模块: from shapely import geometry [as 别名]
# 或者: from import Point [as 别名]
def ReadTerraceData(DataDirectory,FilenamePrefix):
"""
This function reads in the file with the suffix '_terrace_info.csv'
and creates a geopandas GeoDataFrame
Args:
DataDirectory: the data directory
FilenamePrefix: the file name prefix
Returns:
geopandas GeoDataFrame with data from the csv file spatially organised
Author: FJC
"""
# get the csv filename
Suffix = '_terrace_info'
Extension = '.csv'
ReadFilename = DataDirectory+FilenamePrefix+Suffix+Extension
# read in the dataframe using pandas and convert to geopandas geodataframe
df = pd.read_csv(ReadFilename)
geometry = [Point(xy) for xy in zip(, )]
df = (['X','Y','Longitude', 'Latitude'], axis=1)
crs = {'init': 'epsg:4326'}
geo_df = GeoDataFrame(df, crs=crs, geometry=geometry)
return geo_df
开发者ID:LSDtopotools,项目名称:LSDMappingTools,代码行数:29,
注:本文中的方法示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。