Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.redis.internal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import com.github.davidmoten.geo.GeoHash;
import com.github.davidmoten.geo.LatLong;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
public class GeoCoder {
/**
* Earth radius for distance calculations.
*/
private static final double EARTH_RADIUS_IN_METERS = 6372797.560856;
public static ByteBuf getBulkStringGeoCoordinateArrayResponse(ByteBufAllocator alloc,
Collection items)
throws CoderException {
ByteBuf response = alloc.buffer();
response.writeByte(Coder.ARRAY_ID);
ByteBuf tmp = alloc.buffer();
int size = 0;
try {
for (LatLong next : items) {
if (next == null) {
tmp.writeBytes(Coder.bNIL);
} else {
tmp.writeBytes(Coder.getBulkStringArrayResponse(alloc,
Arrays.asList(
Double.toString(next.getLon()),
Double.toString(next.getLat()))));
}
size++;
}
response.writeBytes(Coder.intToBytes(size));
response.writeBytes(Coder.CRLFar);
response.writeBytes(tmp);
} finally {
tmp.release();
}
return response;
}
public static ByteBuf geoRadiusResponse(ByteBufAllocator alloc,
Collection list)
throws CoderException {
if (list.isEmpty())
return Coder.getEmptyArrayResponse(alloc);
List