我正在处理一个问题,我必须将室内笛卡尔坐标映射到某个区域。
问题有多个区域,分别用坐标zone1, zone 2, zone 3 and zone 4
说(x1,y1), (x2,y2) (x3,y3) and (x4,y4)
。我有一个庞大的访客数据集来访问该地区,并有个人坐标。任务是将访问者映射到区域。如果访问者位于特定区域半径的10 mtrs
范围内,则访问者位于该区域内。
因此,如果访问者访问者A(a1,b1)
,则Zone A(x1,y1)
位于10 mtrs
。坐标距离x1,y1.
__block ACAccount * facebookAccount;
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
NSDictionary *emailReadPermisson = @{
ACFacebookAppIdKey : @"YOUR_API_KEY",
ACFacebookPermissionsKey : @[@"email"],
ACFacebookAudienceKey : ACFacebookAudienceEveryone,
};
NSDictionary *publishWritePermisson = @{
ACFacebookAppIdKey : @"YOUR_API_KEY",
ACFacebookPermissionsKey : @[@"publish_actions"],
ACFacebookAudienceKey : ACFacebookAudienceEveryone
};
ACAccountType *facebookAccountType = [accountStore
accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
//Request for Read permission
[accountStore requestAccessToAccountsWithType:facebookAccountType options:emailReadPermisson completion:^(BOOL granted, NSError *error) {if(granted){ // Enter your code}];
所以,有几个问题:
用于存储坐标的数据类型。将浮动工作。一世 看到了空间坐标的讨论,不确定它是什么意思。
另外,当我进行映射时,是否需要在ETL中编写代码?或者做 我需要使用任何其他编程语言
最后,如何编码上述问题
答案 0 :(得分:1)
以下是我的表现。我们假设您有一个区域表,每个区域有一行。我会这样定义:
create table dbo.Zones (
ZoneID int identity not null,
constraint [PK_Zone] primary key clustered (ZoneID),
ZoneGeometry geometry
);
您可以像这样填充它:
insert into dbo.Zones
(ZoneGeometry)
values
(geometry::STGeomFromText('POLYGON((1 1, 1 2, 2 2, 2 1, 1 1))', 0));
同样适用于访问者:
create table dbo.Visitors (
VisitorID int identity not null,
constraint [PK_Visitors] primary key clustered (VisitorID),
Location geometry
);
insert into dbo.Visitors
(Location)
values
(geometry::STPointFromText('POINT (1.5 1)', 0));
然后找出每位访客所在的区域:
select *
from dbo.Visitors as v
left join dbo.Zones as z
on z.ZoneGeometry.STBuffer(10).STContains(v.Location) = 1;