通过地点名得到经纬度



 

方法一
//
//  MapHelper.m
//  JiaoTong
//
//  Created by MOL on 11-6-17.
//  Copyright 2011 MOL. All rights reserved.
//

#import "MapHelper.h"

#import "JSON.h"

@implementation MapHelper

+ (CLLocationCoordinate2D)getPostion:(NSString *)address
{
    NSString *googleURL = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?address=%@&sensor=true",
                           [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    CLLocationCoordinate2D position;
    position.latitude = 0.0;
    position.longitude = 0.0;

    NSError *error;
    NSString *retstr = [NSString stringWithContentsOfURL:[NSURL URLWithString:googleURL] encoding:NSUTF8StringEncoding error:&error];
    if (retstr)
    {
//        NSLog(@"retstr: %@", retstr);
        NSDictionary *dict = [retstr JSONValue];
        if (dict)
        {
            NSArray *results = [dict objectForKey:@"results"];
            if (results && results.count > 0)
            {
                NSDictionary *geometry = [[results objectAtIndex:0] objectForKey:@"geometry"];
                NSDictionary *location = [geometry objectForKey:@"location"];
                position.latitude = [[location objectForKey:@"lat"] doubleValue];
                position.longitude = [[location objectForKey:@"lng"] doubleValue];                
            }
        }
    }
    else
    {
        NSLog(@"error: %@", error);
    }

    return position;
}

@end

方法二  根据地址查经纬度

NSString*address = @"tokyo";
 
   //查詢經緯度
    NSString*output = @"csv";
    NSString*key = @"YouKey";
    NSString*urlStr = [NSStringstringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=%@&key=%@",address,output,key];
   
    NSURL *url =[NSURL URLWithString:urlStr];


    NSString*retstr = [NSString stringWithContentsOfURL:urlencoding:NSUTF8StringEncoding error:nil];

    NSArray*resultArray = [retstr componentsSeparatedByString:@","];
   
    doublelatitude = [[resultArray objectAtIndex:2] doubleValue];
    doublelongitude = [[resultArray objectAtIndex:3] doubleValue];

### 基于经纬度坐标的KMeans聚类分析 对于基于地理位置数据的KMeans聚类分析,可以采用如下方法来处理: #### 数据准备 首先需要获取一系列地点对应的经纬度坐标。例如,在给定的新疆地区八个城市称的情况下,可以通过腾讯地图API或其他地理编码服务将这些城市转换成具体的经纬度坐标[^1]。 #### KMeans算法简介 KMeans是一种常用的无监督学习算法,用于解决分类问题中的聚类任务。该算法的目标是最小化簇内的误差平方和(SSE),即让同一类别内部样本之间的距离尽可能的小。在Java中实现此功能时,通常会定义一个`Point`或者类似的结构体用来存储每个点的位置信息(经度,纬度)[^2]。 #### Java实现细节 为了执行KMeans聚类操作,需完成以下几个方面的工作: - **初始化质心**:随机选取若干个位置作为初始质心; - **分配最近邻**:遍历所有输入点并将其指派到最接近的那个质心所在的群组里; - **更新新质心**:重新计算各群体成员平均值以获得新的质心位置; - **重复迭代直到收敛**:当不再有显著变化发生时停止循环过程; 下面是一个简单的Java代码片段展示如何利用二维数组表示多个城市的经纬度,并对其进行基本的预处理工作以便后续调用第三方库来进行实际的聚类运算: ```java import weka.clusterers.SimpleKMeans; import weka.core.Instances; import weka.core.converters.ConverterUtils.DataSource; public class GeoClustering { public static void main(String[] args) throws Exception { // 加载包含经纬度的数据集 DataSource source = new DataSource("path/to/your/dataset.arff"); Instances data = source.getDataSet(); SimpleKMeans kmeans = new SimpleKMeans(); kmeans.setNumClusters(3); // 设置期望形成的集群数量 // 构建模型并对原始数据实施预测 kmeans.buildClusterer(data); for (int i=0;i<data.numInstances();++i){ System.out.println("Instance "+i+" belongs to cluster "+ kmeans.clusterInstance(data.instance(i))); } } } ``` 上述例子展示了使用Weka工具包简化了部分流程,其中包含了读取ARFF格式文件的功能以及内置的支持向量机等机器学习组件支持快速构建K-Means聚类器实例。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值